Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Architecture
CRM Auth Akışı
useAuthStore (src/store/useAuthStore.ts)
Tek Zustand store. localStorage’a persist edilir (auth-storage key’i ile).
State
user: User | null // id, name, email, user_type, roles, permissions
token: string | null
isAuthenticated: booleanUser Tipi (auth context)
user_type: { id: number; name: string; type: string; is_admin: string }
roles: { id: number; name: string; display_name: string }[]
permissions: { id: number; name: string; display_name: string; ... }[]setUser
- Cookie’ye
auth_tokenset eder (7 gün, path/) - Zustand state’e yazar
- DEV modda console log atar
clearUser
auth_tokenveauth_token_clientcookie’lerini siler- State’i sıfırlar
checkAuth
- Cookie’de token var ama store’da yoksa: store’u günceller →
truedöner - Store’da var cookie’de yoksa: store’u temizler →
falsedöner - Rehydrate sırasında çağrılır
Super Admin Kontrolü
usePermission hook’unda iki koşul birden super admin sayılır:
user.user_type.id === 1rolesdizisindename === 'super-admin'olan bir rol
Super admin tüm permission kontrollerini bypass eder.
Çift Token Senaryosu
Hem auth_token hem auth_token_client cookie’si kontrol edilir. Bu muhtemelen admin ile müşteri paneli arasında ayrım için kullanılır.
Related
- api-katmani — Request interceptor’daki token ekleme
- permission-sistemi — usePermission hook detayları