Skip to content

Auth — Módulo

Gerado pelo Writer (Reversa) em 2026-05-11 doc_level: detalhado

Visão Geral

Módulo de autenticação com Google OAuth2 via PKCE, usando react-native-app-auth. Credenciais são armazenadas com estratégia dual: Keychain/Keystore no nativo e localStorage/memória na web. Inclui refresh automático de token e revogação no logout.

Regras de Negócio

  • Fluxo OAuth2 PKCE com Google — scopes: openid, profile, email 🟢
  • Dois clientId distintos: desenvolvimento e produção, escolhidos via flag DEVELOPMENT 🟢
  • Token é considerado ativo se accessTokenExpirationDate - 1min > agora 🟢
  • Refresh automático se credenciais expiradas 🟢
  • Revogação do refreshToken no logout (best-effort, falha silenciosa) 🟢
  • Credenciais armazenadas via CredentialsService — estratégia por plataforma 🟢
  • Native: react-native-keychain
  • Web: localStorage → fallback memoryStorage se window.localStorage indisponível

Requisitos Funcionais

ID Requisito Prioridade Critério de Aceite
RF-01 Autenticar via Google OAuth2 PKCE Must idToken retornado; credenciais persistidas
RF-02 Reusar credenciais ativas sem nova autenticação Must autenticar() retorna idToken sem abrir browser
RF-03 Refresh automático de token expirado Must refresh(config, {refreshToken}) chamado; credenciais salvas
RF-04 Deslogar com revogação do refreshToken Must revoke chamado; keychain e store limpos
RF-05 Web: fallback de memória quando localStorage ausente Should Credenciais em memória quando window.localStorage falha

Rastreabilidade de Código

Arquivo Função / Classe Cobertura
src/arch/auth/Auth.ts Auth.autenticar, isAtiva, refresh, deslogar 🟢
src/arch/auth/AuthRepository.ts getCredenciais, setCredenciais, setCredenciaisRefreshed 🟢
src/arch/auth/CredentialsService.ts WebCredentialsStrategy, NativeCredentialsStrategy 🟢
src/arch/auth/Conta.ts Conta interface 🟢
src/repository/UsuarioLogadoRepository.ts setUsuarioLogado, logout 🟡

Dependências Externas

Dependência Uso
react-native-app-auth authorize, refresh, revoke
react-native-keychain Armazenamento nativo de credenciais
Api.auth POST para criar/validar conta no backend
@sentry/react-native Captura de exceções de autenticação