import {getRoleFromToken, getSubjectFromToken, type UserRole} from '../utils/jwt' let _accessToken = $state(localStorage.getItem('accessToken')) let _refreshToken = $state(localStorage.getItem('refreshToken')) let _name = $state(localStorage.getItem('hunterName')) export const auth = { get accessToken() { return _accessToken }, get refreshToken() { return _refreshToken }, get isLoggedIn() { return _accessToken !== null }, get role(): UserRole | null { return _accessToken ? getRoleFromToken(_accessToken) : null }, get isAdmin() { return auth.role === 'ADMIN' }, get subject() { return _accessToken ? getSubjectFromToken(_accessToken) : null }, get name() { return _name }, } export function setTokens(accessToken: string, refreshToken: string, name?: string) { _accessToken = accessToken _refreshToken = refreshToken localStorage.setItem('accessToken', accessToken) localStorage.setItem('refreshToken', refreshToken) if (name !== undefined) { _name = name localStorage.setItem('hunterName', name) } } export function setAccessToken(token: string) { _accessToken = token localStorage.setItem('accessToken', token) } export function getAccessToken() { return _accessToken } export function getRefreshToken() { return _refreshToken } export function clearTokens() { _accessToken = null _refreshToken = null _name = null localStorage.removeItem('accessToken') localStorage.removeItem('refreshToken') localStorage.removeItem('hunterName') }