Fluxos de Autenticação

1. Login com E-mail e Senha

Diagrama de Sequência

sequenceDiagram participant Usuário participant Frontend participant NextAuth participant Backend Usuário->>Frontend: Insere e-mail e senha Frontend->>NextAuth: Envia credenciais NextAuth->>Backend: POST /Auth/login Backend->>NextAuth: Retorna token JWT NextAuth->>Frontend: Cria sessão Frontend->>Usuário: Redireciona para dashboard

Passo a Passo

  1. Usuário insere e-mail e senha no formulário de login
  2. Frontend envia as credenciais para o NextAuth
  3. NextAuth faz uma requisição POST para o endpoint /Auth/login
  4. Backend valida as credenciais e retorna um token JWT
  5. NextAuth decodifica o token e cria uma sessão
  6. Usuário é autenticado e redirecionado para a página inicial

2. Login com Google

Diagrama de Sequência

sequenceDiagram participant Usuário participant Google participant Frontend participant NextAuth participant Backend Usuário->>Google: Clica em "Login com Google" Google->>Usuário: Solicita permissões Usuário->>Google: Autoriza acesso Google->>Frontend: Retorna dados do usuário Frontend->>NextAuth: Envia dados do Google NextAuth->>Backend: POST /UserManagement/google Backend->>NextAuth: Retorna token JWT NextAuth->>Frontend: Cria sessão Frontend->>Usuário: Redireciona para dashboard

Passo a Passo

  1. Usuário clica em "Login com Google"
  2. Google solicita permissões ao usuário
  3. Usuário autoriza o acesso
  4. Google retorna os dados do usuário para o frontend
  5. Frontend envia os dados para o NextAuth
  6. NextAuth faz uma requisição POST para /UserManagement/google
  7. Backend cria/valida o usuário e retorna um token JWT
  8. NextAuth decodifica o token e cria uma sessão
  9. Usuário é autenticado e redirecionado para a página inicial

Considerações Importantes

  • Ambos os fluxos utilizam JWT (JSON Web Tokens) para autenticação
  • O token contém informações do usuário como ID, e-mail, nome e role
  • A sessão é gerenciada pelo NextAuth e persistida no frontend
  • Em caso de erros, o usuário é redirecionado para a página de erro