From 60d8835e990e68871a358aabd9219d805a19d4ef Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 6 Aug 2026 16:30:02 +0000 Subject: [PATCH] feat(auth): implement session store - token + user management --- frontend/src/lib/session.ts | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) 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'; }