14-16 Mar 2026
Logica do Sistema

Frontend — Fluxos Criticos

Secao 14

Login e Autenticacao

Adicionado em 2026-03-14 a partir de varredura manual do codigo Angular/Ionic/Capacitor.

  • Login via password grant (angular/src/app/login/login.component.ts)
  • Login biometrico via refresh_token (BiometricLoginService)
  • Refresh token salvo em SecureStorage do Capacitor (iOS Keychain, Android EncryptedSharedPreferences)
  • Apos login com senha, refresh token e salvo automaticamente para biometria futura
  • AcceptLanguageInterceptor forca idioma pt-BR em todos os requests HTTP

Logout

  • LogoutService tenta revogar token no AuthServer via POST /connect/revocation
  • BUG CONFIRMADO (FE-01): URL esta com typo "connect/revocat" — revocacao NUNCA funciona
  • localStorage.clear() e sessionStorage.clear() executados antes do request HTTP (linhas 33-34)
  • Erro de revocacao e silenciosamente ignorado (catchError retorna of())
  • Resultado: logout e apenas visual, token permanece valido no AuthServer por ate 180 dias

Guards de Acesso

  • TenantGuard: verifica roles.includes('Admin Cargo Fleet') + tenantId == null (acesso host)
  • TenantGuardHost: verifica roles.includes('admin') + tenantId == null (acesso SaaS management)
  • BUG CONFIRMADO (FE-02): TenantGuardHost.canMatch nao retorna false quando usuario nao esta logado — retorna undefined implicitamente
  • INCONSISTENCIA (FE-03): Roles diferentes entre os dois guards — 'Admin Cargo Fleet' vs 'admin'

Cotacao Manual (CotarComponent)

  • Dados de rota e oferta salvos em localStorage sem criptografia (cotar.component.ts linhas 83-85)
  • Preco inicializado com valor 0 (sem minimo forcado no frontend)
  • Campos nao-preco desabilitados no formulario

Interceptors

  • AcceptLanguageInterceptor: forca idioma pt-BR em todos os requests Angular