Files
NetMapper2026/frontend/src/lib/session.ts
T

35 lines
856 B
TypeScript
Raw Normal View History

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'; }