feat(auth): implement session store - token + user management
This commit is contained in:
@@ -1,2 +1,34 @@
|
|||||||
export type SessionUser = { username: string; role: string } | null;
|
const TOKEN_KEY = 'nm_token';
|
||||||
export function getSessionUser(): SessionUser { return null; }
|
|
||||||
|
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'; }
|
||||||
|
|||||||
Reference in New Issue
Block a user