Proje: Okul Platform · Hub: Okul Platform — Domain

AuthService

app/Services/Controllers/User/AuthService.php

E-posta + Şifre Login (attemptPasswordLogin)

  1. UserRepository::findActiveByEmail() ile akif kullanıcı bul
  2. Hash::check ile şifre kontrol
  3. Bulunamadıysa → UserContact tablosundan email tipinde ara
  4. Her eşleşen kullanıcı için şifre dene
  5. Başarılı → createToken(user, AccessTokenNameType::LOGIN) → Sanctum token

Neden UserContact’ta arama? E-posta hem users.email hem user_contacts tablosunda olabilir.

OTP Login (attemptOtpLogin)

  1. identifier (telefon veya email) üzerinden UserContact’ta kullanıcıları bul
  2. Her kullanıcı için: a. Master şifre kontrolü: config('services.master_pass.login') — eğer set edilmişse bypass b. OTP doğrulama: OtpCodeService::verifyOtp()
  3. Başarılı → createToken(user, AccessTokenNameType::OTP_CODE)

Master Password (Güvenli Amaçlı)

config('services.master_pass.login') — Tüm OTP girişlerini bypass eder. Muhtemelen destek/test amaçlı kullanılıyor.

loginUsingId (Statik)

AuthService::loginUsingId(int $userId)
// auth()->loginUsingId($userId)
// B2CService::dispatchImportUser() — Kullanıcıyı CIO'ya import et

Hash Login (attemptHashLogin)

UserSessionHash tablosu üzerinden — okul projesi session’larını API’ya aktarır.

B2C CIO Entegrasyonu

Login olunca B2CService::dispatchImportUser() çağrılır → Kullanıcı CIO’ya gönderilir.