Proje: Okul Platform · Hub: Okul Platform — Domain

Auth Altyapısı

Laravel Sanctum — token tabanlı API auth. HasApiTokens trait → User modeline eklendi.

Login Yöntemleri

1. E-posta + Şifre Login

POST /api/login
{ email: "...", password: "..." }

throttle:20,1 — 1 dakikada max 20 istek.

2. OTP Login

POST /api/otp             → OTP kodu gönder
POST /api/login           → { value: "05xxxxxxxxxx", code: "123456" }

throttle:5,1 OTP gönderimi. value = telefon numarası veya e-posta. OtpCodeController::generate() → OTP üretir + SMS gönderir.

3. Hash Login (özel)

POST /api/hash-login
{ user_id: 123, hash: "...", device_name: "..." }

Amaç: Frontend (school projesi) session’larını API’a aktarmak için. Ekleyen: Ege Sertçetin, 2025-09-09. Açıklama: Swagger dokümantasyonu yok.

4. Google OAuth

google_id field’ı users tablosunda mevcut (migration: 2025-12-16).

OTP Gönderimi

  • POST /api/otpthrottle:5,1
  • Değer: telefon numarası veya e-posta
  • SMS: Infobip (SmsService singleton)
  • OTP: OtpCode modeli, OtpCodeRepository

Login Response

{
    "access_token": "...",
    "data": { ...UserResource... }
}

Admin kullanıcılar → roles, permissions, roles.permissions, userType yüklenir. Normal kullanıcılar → sadece userType yüklenir.

OneSignal Player ID

Login sırasında onesignal_player_id gönderilirse token + kullanıcı ile ilişkilendirilir. UserNotificationId modeli bu ilişkiyi tutar.

Logout

ANY /api/logout — auth:sanctum → Token silinir.

isActive Kontrolü

Login sırasında user->isActive() kontrolü yapılır. Pasif kullanıcı LoginFailedException::inactiveUser() fırlatır.

Staging Hack (geçici)

B2B mobil (okhttp/) bazen staging’e istek atıyor.
Login controller’da tespit edilince @namlifurkan’e CIO webhook ile bildirim gönderiliyor.
2026-03-25’te eklendi, sorun çözülünce silinecek.

Şifre Sıfırlama

POST /api/forgot-password  → Reset link/code gönder
POST /api/reset-password/{code}  → Yeni şifre belirle

VerificationCode modeli bu süreçte kullanılır.

UserSessionHash

user_session_hash tablosu — Migration: 2026-04-09. Hash login için kullanılıyor.