Épico Detalhado - Login de Usuários
Visão Geral do Épico
O épico de Gestão de Usuários é o ponto de partida do nosso sistema de feedback. Ele estabelece a base para a autenticação e autorização, permitindo que diferentes tipos de usuários (colaboradores, PDMs e administradores) acessem funcionalidades específicas de acordo com seus papéis.
Este épico abrange a seguinte funcionalidade:
- Login na Plataforma: Permitir que colaboradores e PDMs façam login na plataforma e, caso seja a primeira vez, definam uma senha.
User View
COMO um colaborador ou PDM ou administrador EU QUERO fazer login na plataforma PARA QUE eu possa acessar meus dados e funcionalidades associadas ao meu perfil
Business Narrative
Permitir que colaboradores, PDMs e administradores façam login na plataforma e tenham acesso as funcionalidades associadas ao seus perfis. Caso seja o primeiro acesso, permitir a definição da senha.
Screen Flow
LOGIN
- O usuário acessa a página de login.
- O sistema exibe campos para inserção de e-mail e senha.
- O usuário insere e-mail e senha.
- O usuário clica no botão "Login".
- O sistema valida as credenciais:
- Se houver erro, exibe mensagem de erro e permite nova tentativa.
- Se bem-sucedido, inicia a sessão contendo os dados do usuário logado.
- O sistema redireciona o usuário para a página inicial da plataforma.
PRIMEIRO ACESSO
- O usuário clica no botão “Primeiro acesso“:
- O usuário insere e-mail, senha e confirmação de senha.
- O usuário clica no botão “Salvar senha”.
- O sistema valida se o usuário já está pré-cadastrado.
- Se não está pré-cadastrado, exibe uma mensagem de erro.
- Se está pré-cadastrado, um novo campo é exibido para que o usuário informe o código de acesso.
- O usuário recebe por e-mail o código de acesso gerado pelo sistema
- O usuário informa esse código.
- O sistema valida o código.
- Se correto, o sistema exibe uma mensagem de confirmação de senha definida com sucesso e o usuário é direcionado para a tela de login.
- Se não correto, exibe uma mensagem de erro.
ESQUECI MINHA SENHA
- O usuário clica no botão “Forgot Password“:
- O usuário insere e-mail, senha e confirmação de senha.
- O usuário clica no botão “Salvar senha”.
- O sistema valida se o usuário já está cadastrado.
- Se não está cadastrado, exibe uma mensagem de erro.
- Se está cadastrado, um novo campo é exibido para que o usuário informe o código de acesso.
- O usuário recebe por e-mail o código de acesso gerado pelo sistema
- O usuário informa esse código.
- O sistema valida o código.
- Se correto, o sistema exibe uma mensagem de confirmação de senha definida com sucesso e o usuário é direcionado para a tela de login.
- Se não correto, exibe uma mensagem de erro.
Non-Functional Requirements
- O sistema deve gerar um token JWT com os dados do usuário nas claims, incluindo informações do PDM.
Acceptance Criteria
- O sistema deve permitir que colaboradores, PDMs e administradores façam login.
- O sistema deve exibir uma tela para definição de senha se for o primeiro acesso do usuário.
- O sistema deve exibir uma tela para redefinição de senha se o usuário esqueceu a senha.
- O administrador também deve se logar ao sistema, porém o mesmo só é cadastrado através de uma linha de comando.
Visão das Hitórias
Login na Plataforma
-
Setup do módulo
- Configurar o projeto Spring Boot para o microserviço de gerenciamento de usuários
- Configurar o banco de dados PostgreSQL
- Configurar a biblioteca de segurança para JWT
-
Criar linha de comando para cadastro de administradores
- Implementar um CommandLineRunner para cadastro de administradores
- Adicionar criptografia de senhas com BCrypt
- Implementar validações de dados
-
Definição de Senha no Primeiro Login
- Criar a tela de primeiro acesso, com campos de email, nova senha e repetir nova senha
- Criar botão de envio de código de segurança
- Implementar endpoint de envio de código de segurança, gera código e envia por email (OTP)
- Implementar endpoint para definição de senha, recebe senha e código de segurança
-
Fluxo de login de colaboradores, admin e PDM
- Implementar tela de login com campos de login e senha
- Implementar endpoint para login, valida email e senha (Usar BCrypt para validação e armazenamento de senhas)
- Implementar tratamento de erros, backend envia mensagens para serem exibidas no frontend
-
Implementação do código de segurança (One Time Password)
- Após login com email e senha, redirecionar para tela de código de segurança (OTP)
- Implementar tela de validação de código de segurança (OTP)
- Implementar serviço para envio de código de segurança (OTP)
- Implementar endpoint de recebimento e validação do código de segurança (OTP)
-
Gestão da sessão do usuário
- Implementar serviço para geração de token JWT
- Incluir claims relevantes no token (ID, nome, email, tipo, PDM)
- Configurar tempo de expiração do token
- Armazenar token JWT no local storage
- Implementar interceptor para incluir token em requisições
-
Aplicar o filtro bloqueio de acesso a admin
- Implementar o filtro de segurança para rotas administrativas no backend
- Implementar middlware que restringe acesso a rotas privadas
- Configurar autorização baseada em roles (Middleware NextJS que verifica acesso a determinadas roles a determinadas rotas)