Pular para conteúdo

É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:

  1. 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

  1. O usuário acessa a página de login.
  2. O sistema exibe campos para inserção de e-mail e senha.
  3. O usuário insere e-mail e senha.
  4. O usuário clica no botão "Login".
  5. O sistema valida as credenciais:
  6. Se houver erro, exibe mensagem de erro e permite nova tentativa.
  7. Se bem-sucedido, inicia a sessão contendo os dados do usuário logado.
  8. O sistema redireciona o usuário para a página inicial da plataforma.

PRIMEIRO ACESSO

  1. O usuário clica no botão “Primeiro acesso“:
  2. O usuário insere e-mail, senha e confirmação de senha.
  3. O usuário clica no botão “Salvar senha”.
  4. O sistema valida se o usuário já está pré-cadastrado.
  5. Se não está pré-cadastrado, exibe uma mensagem de erro.
  6. Se está pré-cadastrado, um novo campo é exibido para que o usuário informe o código de acesso.
  7. O usuário recebe por e-mail o código de acesso gerado pelo sistema
  8. O usuário informa esse código.
  9. O sistema valida o código.
  10. 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.
  11. Se não correto, exibe uma mensagem de erro.

ESQUECI MINHA SENHA

  1. O usuário clica no botão “Forgot Password“:
  2. O usuário insere e-mail, senha e confirmação de senha.
  3. O usuário clica no botão “Salvar senha”.
  4. O sistema valida se o usuário já está cadastrado.
  5. Se não está cadastrado, exibe uma mensagem de erro.
  6. Se está cadastrado, um novo campo é exibido para que o usuário informe o código de acesso.
  7. O usuário recebe por e-mail o código de acesso gerado pelo sistema
  8. O usuário informa esse código.
  9. O sistema valida o código.
  10. 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.
  11. 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

mmd

Login na Plataforma

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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)
  6. 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
  7. 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)