44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import {getRoleFromToken, getSubjectFromToken, type UserRole} from '../utils/jwt'
|
|
|
|
let _accessToken = $state<string | null>(localStorage.getItem('accessToken'))
|
|
let _refreshToken = $state<string | null>(localStorage.getItem('refreshToken'))
|
|
let _name = $state<string | null>(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')
|
|
}
|