diff --git a/frontend/src/lib/session.ts b/frontend/src/lib/session.ts index 38b20ab..fe157f5 100644 --- a/frontend/src/lib/session.ts +++ b/frontend/src/lib/session.ts @@ -1,2 +1,34 @@ -export type SessionUser = { username: string; role: string } | null; -export function getSessionUser(): SessionUser { return null; } +const TOKEN_KEY = 'nm_token'; + +export type SessionUser = { + id: number; + username: string; + email: string | null; + role: string; + disabled: boolean; + force_password_change: boolean; +} | null; + +let _token: string | null = null; +let _user: SessionUser = null; + +export function getToken(): string | null { + if (_token) return _token; + _token = window.localStorage.getItem(TOKEN_KEY); + return _token; +} + +export function setToken(token: string): void { + _token = token; + window.localStorage.setItem(TOKEN_KEY, token); +} + +export function clearSession(): void { + _token = null; + _user = null; + window.localStorage.removeItem(TOKEN_KEY); +} + +export function getSessionUser(): SessionUser { return _user; } +export function setSessionUser(user: SessionUser): void { _user = user; } +export function isAdmin(): boolean { return _user?.role === 'admin'; }