2026-08-06 16:30:02 +00:00
|
|
|
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'; }
|