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: boolean

User 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_token set eder (7 gün, path /)
  • Zustand state’e yazar
  • DEV modda console log atar

clearUser

  • auth_token ve auth_token_client cookie’lerini siler
  • State’i sıfırlar

checkAuth

  • Cookie’de token var ama store’da yoksa: store’u günceller → true döner
  • Store’da var cookie’de yoksa: store’u temizler → false döner
  • Rehydrate sırasında çağrılır

Super Admin Kontrolü

usePermission hook’unda iki koşul birden super admin sayılır:

  1. user.user_type.id === 1
  2. roles dizisinde name === '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.