import { defineStore } from 'pinia' interface AuthState { token: string | null role: string | null communeSlug: string | null } export const useAuthStore = defineStore('auth', { state: (): AuthState => ({ token: null, role: null, communeSlug: null, }), getters: { isAuthenticated: (state) => !!state.token, isAdmin: (state) => state.role === 'super_admin' || state.role === 'commune_admin', isSuperAdmin: (state) => state.role === 'super_admin', isCitizen: (state) => state.role === 'citizen', }, actions: { setAuth(token: string, role: string, communeSlug?: string) { this.token = token this.role = role this.communeSlug = communeSlug || null if (import.meta.client) { localStorage.setItem('sejeteralo_token', token) localStorage.setItem('sejeteralo_role', role) if (communeSlug) localStorage.setItem('sejeteralo_commune', communeSlug) } }, logout() { this.token = null this.role = null this.communeSlug = null if (import.meta.client) { localStorage.removeItem('sejeteralo_token') localStorage.removeItem('sejeteralo_role') localStorage.removeItem('sejeteralo_commune') } }, restore() { if (import.meta.client) { this.token = localStorage.getItem('sejeteralo_token') this.role = localStorage.getItem('sejeteralo_role') this.communeSlug = localStorage.getItem('sejeteralo_commune') } }, }, })