Autenticação & Login
O módulo de Autenticação do M4TCH.AI é projetado para máxima segurança e retenção.
Utilizamos um fluxo de Password + Email OTP (One Time Password). O acesso às rotas privadas do app é garantido via JWT (JSON Web Token).
Ciclo de Vida do Usuário
Cadastro & Bloqueio
O backend salva o usuário com verified: 0 e dispara um PIN de 6 dígitos pro e-mail. O app bloqueia a navegação.
Verificação (OTP)
O usuário insere o PIN. O backend valida o tempo, atualiza para verified: 1 e libera o app.
Login Inteligente
No Login, o AuthScreen decide se manda pra Home ou força a verificação dependendo da flag retornada pela API.
Criação de Conta
/api/auth/signup
Cria um novo usuário, faz o hash da senha via bcrypt, gera o PIN na tabela verification_codes e dispara o e-mail em background.
{
"email": "user@m4tchai.com",
"password": "securePassword123",
"lang": "pt" // Idioma dinâmico da UI
}
{
"message": "Conta criada com sucesso.",
"token": "eyJhbG...",
"user": {
"id": 42,
"email": "user@...",
"verified": 0,
"lang": "pt"
}
}
Acesso de Usuário
/api/auth/login
A flag verified retornada pelo backend é utilizada no AuthScreen.tsx para definir o fluxo condicional do Navigation (Home vs VerifyEmail).
{
"email": "user@m4tchai.com",
"password": "..."
}
{
"message": "Login realizado.",
"token": "eyJhb...",
"user": {
"id": 42,
"email": "user@...",
"verified": 1
}
}
{
"message": "E-mail ou senha inválidos."
}
Validação OTP (PIN de 6 dígitos)
/api/auth/verify-code
{
"email": "user@m4tchai.com",
"code": "123456"
}
{
"message": "E-mail verificado.",
"token": "NovoTokenValido...",
"user": { "verified": true, ... }
}
Utilitários de Segurança
/api/auth/resend-code
Gera e reenvia um novo PIN. Regra Anti-Tracking: retorna sucesso silencioso para evitar rastreio de e-mails cadastrados.
Body{ "email": "user@m4tchai.com" }
/api/auth/update-email
Altera o e-mail, força a verificação a zerar (verified: 0) e invalida PINs antigos. Requer Token Bearer.
Authorization: Bearer {token}
{ "email": "novo@m4tchai.com" }