/
kreyndelHam
/
Konstructorium
Обзор
Документация
Войти
/
kreyndelHam
/
Konstructorium
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
dev
frontend/src/store/adminStore.js
56 строк
2 KB
MihahamYT
Code Style + docstrings
22 апр 2026, 00:29
22 апр 2026, 00:29
eea24b4
Код
Авторство
О чём код?
import { create } from 'zustand' /** * Restore persisted admin session snapshot from localStorage. * * @returns {{id:number, username:string, email:string, is_staff:boolean, is_superuser:boolean}|null} */ const loadStoredAdmin = () => { try { const stored = localStorage.getItem('admin-storage') if (stored) { const parsed = JSON.parse(stored) return parsed.adminUser || null } } catch (error) { console.error('Error loading admin from storage:', error) } return null } const initialAdminUser = loadStoredAdmin() /** Zustand store for admin authentication state. */ export const useAdminStore = create((set) => ({ adminUser: initialAdminUser, isAdminAuthenticated: !!(initialAdminUser && (initialAdminUser.is_staff || initialAdminUser.is_superuser)), initialized: false, setAdminUser: (user) => { const adminUserData = user ? { id: user.id, username: user.username, email: user.email, is_staff: user.is_staff, is_superuser: user.is_superuser } : null if (adminUserData) { localStorage.setItem('admin-storage', JSON.stringify({ adminUser: adminUserData })) } else { localStorage.removeItem('admin-storage') } set({ adminUser: adminUserData, isAdminAuthenticated: !!(adminUserData && (adminUserData.is_staff || adminUserData.is_superuser)) }) }, setInitialized: (value) => set({ initialized: value }), logout: () => { set({ adminUser: null, isAdminAuthenticated: false }) localStorage.removeItem('admin-storage') }, }))