/** * Auth utilities - Gerenciamento de autenticação no cliente */ export interface User { id: string; email: string; name: string; role: string; tenantId?: string; company?: string; subdomain?: string; } const TOKEN_KEY = 'token'; const USER_KEY = 'user'; /** * Salva token e dados do usuário no localStorage */ export function saveAuth(token: string, user: User): void { if (typeof window === 'undefined') return; localStorage.setItem(TOKEN_KEY, token); localStorage.setItem(USER_KEY, JSON.stringify(user)); } /** * Retorna o token JWT armazenado */ export function getToken(): string | null { if (typeof window === 'undefined') return null; return localStorage.getItem(TOKEN_KEY); } /** * Retorna os dados do usuário armazenados */ export function getUser(): User | null { if (typeof window === 'undefined') return null; const userStr = localStorage.getItem(USER_KEY); if (!userStr) return null; try { return JSON.parse(userStr); } catch { return null; } } /** * Verifica se o usuário está autenticado */ export function isAuthenticated(): boolean { return !!getToken() && !!getUser(); } /** * Remove token e dados do usuário (logout) */ export function clearAuth(): void { if (typeof window === 'undefined') return; localStorage.removeItem(TOKEN_KEY); localStorage.removeItem(USER_KEY); } /** * Retorna headers com Authorization para requisições autenticadas */ export function getAuthHeaders(): HeadersInit { const token = getToken(); return { 'Content-Type': 'application/json', ...(token ? { 'Authorization': `Bearer ${token}` } : {}), }; }