export type UserRole = 'tenant_admin' | 'vendedor' | 'financeiro' | 'visualizador'; export interface JwtPayload { sub: string; tipo: 'master' | 'tenant_user'; tenant_id: string | null; role?: UserRole; exp?: number; } /** * Decodifica o payload do access token para ler identidade/papel no * client. **Não valida assinatura nem expiração de verdade** — isso é * responsabilidade exclusiva do backend em cada chamada de API; aqui é * só para decisões de UI (qual área mostrar, quais itens de menu). */ export function decodeJwt(token: string): JwtPayload | null { try { const payload = token.split('.')[1]; const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/')); return JSON.parse(json) as JwtPayload; } catch { return null; } }