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/otp→throttle:5,1- Değer: telefon numarası veya e-posta
- SMS: Infobip (SmsService singleton)
- OTP:
OtpCodemodeli,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.
Related
- api-route-structure — Auth route’ları
- api-domain-model — User modeli