Proje: Okul Platform · Hub: Okul Platform — Decisions
Consent ayrımı: 3 legacy endpoint için FE-only bypass
OKUL-737 kapsamında tüm form’lar combined terms checkbox’tan ayrı kvkk_consent + marketing_consent pattern’ine geçirildi (bkz. 2026-05-06-consent-checkbox-pattern).
Çoğu BE endpoint’i bu pattern’i zaten kabul ediyor (SchoolOfferRequest, SchoolCommentRequest, RegisterRequest, ProfilingMultiOfferRequest). Üç endpoint hâlâ legacy terms field bekliyor:
| Endpoint | Validator | Etkilenen FE form’ları |
|---|---|---|
POST /kurumsal/iletisim | Customer/ContactController@create (inline) | B2B iletişim (desktop+mobile), “Okulunuzu Ekleyin” modal |
POST /ajax/submitContact | Front/ContactFormRequest | İletişim formu (desktop+mobile) |
POST /okulu-sahiplen/send | SchoolAddApplicationRequest | ”Aramıza Katılın” (desktop+mobile) |
Karar: BE’ye dokunma, FE’de bypass
Bu üç endpoint’in BE adaption’ı için ayrı ticket gerektiği ve bu form’lar consent değerini zaten persist etmiyor (sadece kabul edildi diye saklıyor → ContactController vs. lead’i e-posta ile yolluyor) — pragmatik çözüm:
- Hidden
terms=1her zaman gönder → eski validation pass. - Hidden
kvkk_consent=1/marketing_consent=1consent vermiş kullanıcılar için (@elsebranch) → BE adapte olduğunda hazır. - FE gate: kvkk_consent checkbox görünüyor ve işaretli değilse submit’i engelle. Hidden
terms=1kullanıcının kabul ettiği yanılsaması yaratmasın.
FE gate pattern
var $kvkk = $('input[name="kvkk_consent"][type="checkbox"]');
if ($kvkk.length && !$kvkk.is(':checked')) {
$('#error-kvkk_consent').text('...').show();
return false;
}length check kritik: consented user’da checkbox DOM’da yok, gate de geçer.
Etkilenen FE dosyaları (yapılan değişiklikler)
Blade’ler (her birinde @else { Form::hidden('kvkk_consent', 1) } + hidden terms=1):
frontend/components/customer_page/modal.blade.phpfrontend/customer/contact.blade.php+mobile/customer/contact.blade.phpfrontend/static/contact_us.blade.php+mobile/static/contact_us.blade.phpfrontend/information/edit.blade.php+mobile/information/edit.blade.php(manual AJAX payload)
JS handler’lar (FE gate eklendi):
assets/scripts/frontend/customer-index.jsassets/scripts/frontend/customer-contact.jsassets/scripts/frontend/static-contact_us.jsassets/scripts/mobile/static-contact_us.jsassets/scripts/mobile/app.js(#customerFormhandler)
Alternatif değerlendirildi, reddedildi
- BE’yi adapte et: Doğru çözüm ama
Customer/ContactControllerinline validator + 2 FormRequest dosyası demek; CLAUDE.md “BE değişikliği için onay al” kuralı, ayrıca scope büyür. BE ekibine bu görev devredilebilir; bypass o zamana kadar geçici çözüm. - Sahte
terms=1göndermeden bırak: BE 422 dönüyor, form’lar kırılıyor. Kabul edilemez.
Sonraki adım
BE ekibi 3 endpoint’i kanonik pattern’e çekerse (kvkk_consent + marketing_consent accepted, UserService::hasAuthUserConsented*() ile koşullu required), bu bypass kaldırılmalı:
- Hidden
terms=1input’ları sil - JS gate’lerin kalması ok (zaten doğru davranış)
Related
- 2026-05-06-consent-checkbox-pattern — Kanonik consent pattern