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 |