import { authApi } from '../api/modules'; export interface AuthUser { id: number; username: string; role: string; role_label?: string; permissions: string[]; } const TOKEN_KEY = 'token'; const USER_KEY = 'user'; export function getToken(): string | null { return localStorage.getItem(TOKEN_KEY); } export function getUser(): AuthUser | null { const raw = localStorage.getItem(USER_KEY); if (!raw) return null; try { return JSON.parse(raw); } catch { return null; } } export function setAuth(token: string, user: AuthUser) { localStorage.setItem(TOKEN_KEY, token); localStorage.setItem(USER_KEY, JSON.stringify(user)); } export function clearAuth() { localStorage.removeItem(TOKEN_KEY); localStorage.removeItem(USER_KEY); } export async function fetchCurrentUser(): Promise { const token = getToken(); if (!token) return null; try { const data = await authApi.me(); return { id: data.id, username: data.username, role: data.role, role_label: data.role_label, permissions: data.permissions, }; } catch { clearAuth(); return null; } } export function hasPerm(user: AuthUser | null, perm: string): boolean { if (!user) return false; return user.permissions.includes(perm); }