Proje: Okul B2B App · Hub: Okul B2B App — Architecture

OTP login: çoklu kullanıcı seçimi

Telefon numarasına birden fazla customer_user bağlıysa, OTP kodu doğrulandıktan sonra kullanıcıya hangi hesapla giriş yapacağı sorulur.

Akış

  1. Kod iste: POST /auth/otp (mevcut, değişmedi)
  2. Kodu doğrula + adayları çek: POST /customer/otp/users{ data: [{customer_user, customer, user}], user_count: N }
    • Auth gerektirmez. Kod burada markAsUsed:false ile doğrulanır, login’de yanar.
  3. Branch:
    • user_count <= 1 → direkt POST /auth/login (eski akış)
    • user_count > 1OtpUserSelectionScreen kart liste, seçimden sonra /auth/login çağrısına user_id eklenir.

Bu repodaki dosyalar

  • services/AuthService.ts
    • OtpUserCandidate, ResolveOtpUsersResponse tipleri
    • OTPVerification.userId?: number (opsiyonel)
    • resolveOtpUsers()/customer/otp/users çağrısı
    • verifyOTP()userId varsa user_id parametresi /auth/login’a eklenir
  • services/AnalyticsEvents.tsAuthEvent.action’a otp_resolve_users ve otp_user_select eklendi
  • components/auth/OtpUserSelectionScreen.tsx — yeni ekran (firma + kullanıcı adı kart liste)
  • components/auth/AuthFlow.tsx
    • Yeni step: otp-user-selection
    • performLogin(otp, userId?) helper’ı; OTP veya kullanıcı seçimi sonrası ortak login yolu
    • handleOTPVerification önce resolveOtpUsers çağırır

Yetkilendirme uyarısı (BE notu)

2026-05-06-customer-otp-multi-user-selection notunda detaylı: resolve listesi customer_user_schools.has_content_access OR has_lead_access filtresine bakmıyor; login bakıyor. Listede görünüp seçilen kullanıcı login’de düşerse “Girilen şifre kayıtlarımızla uyuşmuyor.” hatası alınır. UX hatası — ileride API tarafında filtreyi hizalamak doğrudur.