First crack at the app. Still lots of bugs to squash.
This commit is contained in:
43
src/lib/stores/auth.svelte.ts
Normal file
43
src/lib/stores/auth.svelte.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
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')
|
||||
}
|
||||
Reference in New Issue
Block a user