import { defineStore } from 'pinia' import { ref, computed } from 'vue' export const useAuthStore = defineStore('auth', () => { const token = ref(null) const role = ref(null) const userId = ref(null) const fullName = ref(null) const schoolId = ref(null) const isAuthenticated = computed(() => !!token.value) const isSuperAdmin = computed(() => role.value === 'super_admin') const isSchoolAdmin = computed(() => role.value === 'school_admin') function loadFromStorage() { token.value = localStorage.getItem('hub_token') role.value = localStorage.getItem('hub_role') userId.value = localStorage.getItem('hub_user_id') fullName.value = localStorage.getItem('hub_full_name') schoolId.value = localStorage.getItem('hub_school_id') } function setAuth(data: { access_token: string; role: string; user_id: string; full_name: string; school_id: string | null }) { token.value = data.access_token role.value = data.role userId.value = data.user_id fullName.value = data.full_name schoolId.value = data.school_id localStorage.setItem('hub_token', data.access_token) localStorage.setItem('hub_role', data.role) localStorage.setItem('hub_user_id', data.user_id) localStorage.setItem('hub_full_name', data.full_name) if (data.school_id) localStorage.setItem('hub_school_id', data.school_id) } function logout() { token.value = null role.value = null userId.value = null fullName.value = null schoolId.value = null localStorage.removeItem('hub_token') localStorage.removeItem('hub_role') localStorage.removeItem('hub_user_id') localStorage.removeItem('hub_full_name') localStorage.removeItem('hub_school_id') } return { token, role, userId, fullName, schoolId, isAuthenticated, isSuperAdmin, isSchoolAdmin, loadFromStorage, setAuth, logout } })