Pular para conteúdo

Autenticação (Next.js)

O sistema usa magic link — o corretor recebe um link por email e clica para entrar. Não há senha.


Fluxo completo

1. Corretor acessa /login
2. Digita email e envia
3. Next.js → POST /api/auth/magic-link
4. Next.js → POST https://api.viacorretor.com.br/v1/auth/magic-link
5. FastAPI cria MagicLinkToken (UUID, expira 15min) e envia email
6. Corretor clica no link: /auth/callback?token=<uuid>
7. Next.js → GET /api/auth/callback?token=<uuid>
8. Next.js → GET https://api.viacorretor.com.br/v1/auth/verify?token=<uuid>
9. FastAPI valida token → retorna JWT
10. Next.js seta cookie HttpOnly: galgal_token=<jwt>
11. Corretor é redirecionado para /dashboard

Atributo Valor
Nome galgal_token
Tipo HttpOnly (inacessível ao JavaScript do browser)
SameSite Lax
Expira Segue expiração do JWT (configurável via JWT_SECRET)

Proteção de rotas (middleware)

src/middleware.ts protege automaticamente todas as rotas /dashboard/* e /admin/*:

  • Sem cookie → redireciona para /login
  • Cookie expirado → redireciona para /login
  • Cookie válido → deixa passar

Dev login (sem email)

Para desenvolvimento, com DEV_LOGIN=true no .env da FastAPI:

# Via API direto
curl -X POST http://localhost:8000/v1/auth/dev-login \
  -H "Content-Type: application/json" \
  -d '{"email": "glauci@viacorretor.com.br"}'

# Via Next.js API route (seta o cookie automaticamente)
curl -X POST http://localhost:3000/api/auth/dev-login \
  -H "Content-Type: application/json" \
  -d '{"email": "glauci@viacorretor.com.br"}'

Logout

POST /api/auth/logout → remove cookie galgal_token → redireciona para /login

Dados do corretor autenticado

Após login, o dashboard busca o perfil via GET /v1/me (FastAPI), que decodifica o JWT e retorna os dados do Broker vinculado ao email.