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
- Usuário insere e-mail e senha no formulário de login
- Frontend envia as credenciais para o NextAuth
- NextAuth faz uma requisição POST para o endpoint /Auth/login
- Backend valida as credenciais e retorna um token JWT
- NextAuth decodifica o token e cria uma sessão
- 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
- Usuário clica em "Login com Google"
- Google solicita permissões ao usuário
- Usuário autoriza o acesso
- Google retorna os dados do usuário para o frontend
- Frontend envia os dados para o NextAuth
- NextAuth faz uma requisição POST para /UserManagement/google
- Backend cria/valida o usuário e retorna um token JWT
- NextAuth decodifica o token e cria uma sessão
- 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