Visão Geral
A API usa Session Cookie para autenticação — não Bearer Token. O fluxo é:- Frontend chama
POST /auth/logincom e-mail e senha - O backend valida as credenciais na Firebase Identity Toolkit, cria um session cookie via Firebase Admin SDK e o seta na resposta
- Todas as requisições seguintes enviam o cookie automaticamente (browser/fetch com
credentials: "include") - O middleware
verificarTokenvalida o cookie em cada requisição usandoadmin.auth().verifySessionCookie()
SESSION_COOKIE_NAME (padrão: imob_session) e expira em SESSION_EXPIRES_DAYS dias (padrão: 5).
Login
Resposta 200
imob_session é setado automaticamente na resposta com as flags httpOnly, secure e sameSite: none em produção.
Erros possíveis:
401 — Credenciais inválidas
403 — Conta desativada
Como fazer requisições autenticadas
No frontend, usecredentials: "include" em todas as chamadas para que o browser envie o cookie automaticamente:
Authorization é necessário — o cookie é enviado automaticamente pelo browser.
Logout
Invalida o cookie e revoga os refresh tokens do Firebase.Resposta 200
Registro
Cria uma conta nova. O primeiro usuário registrado recebe automaticamente o roleSUPER_ADMIN. Os demais recebem LOCADOR.
Suporta Pessoa Física (PF) e Pessoa Jurídica (PJ).
Resposta 201
Campos obrigatórios por tipo de pessoa
PF:nomeCompleto, cpf, mais o endereço completo.
PJ: razaoSocial, cnpj, nomeResponsavel, mais o endereço completo.
Verificação de e-mail
Reenviar e-mail de verificação
Rate limit interno: 1 envio a cada 2 minutos por usuário.Confirmar verificação
Chamado pelo frontend após o usuário clicar no link e o Firebase processar. AtualizaemailVerificado: true no Firestore.
Recuperação de senha
Envia o link de redefinição via Brevo. Por segurança, a resposta é sempre200 independente de o e-mail existir ou não.
Resposta 200
Perfil do usuário autenticado
Buscar perfil
Atualizar perfil
Campos protegidos e ignorados mesmo que enviados:userId, email, role, tipoPessoa, cpf, cnpj, criadoEm, emailVerificado.
Erros de autenticação
| Status | Causa |
|---|---|
401 | Cookie ausente, inválido ou expirado |
403 | Cookie válido, mas conta desativada ou sem permissão para o recurso |