Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controle de Sessões e Notificação de Novo Login #102

Open
2 of 12 tasks
LivioAlvarenga opened this issue Sep 12, 2024 · 0 comments
Open
2 of 12 tasks

Controle de Sessões e Notificação de Novo Login #102

LivioAlvarenga opened this issue Sep 12, 2024 · 0 comments
Assignees
Labels
back Envolve modificações no backend front Envolve modificações no frontend

Comments

@LivioAlvarenga
Copy link
Owner

LivioAlvarenga commented Sep 12, 2024

Objetivo

Implementar o controle de sessões no sistema, permitindo que o usuário visualize e gerencie as sessões ativas, com a possibilidade de excluir uma ou todas as sessões, exceto a sessão atual. Além disso, enviar notificações via email sempre que um novo login for detectado, informando o dispositivo utilizado.

Descrição

Essa funcionalidade permitirá que os usuários visualizem todas as sessões ativas em uma interface dedicada, acessível pela página /account-management, onde poderão gerenciar suas sessões, excluindo uma ou todas as sessões exceto a atual. O sistema garantirá que a sessão em que o usuário está logado não possa ser removida.

Além disso, será implementado um sistema de notificação por email, alertando o usuário toda vez que um novo login for efetuado em sua conta, com informações sobre o dispositivo utilizado no acesso. Essa medida visa aumentar a segurança e o controle sobre acessos não autorizados.

Tarefas

Frontend

  • Adicionar um card na página /account-management com o título "Controle de Sessões", seguindo o modelo de ícone à esquerda e título/subtítulo à direita. Ao passar o mouse sobre o card, deve aparecer um texto explicando a funcionalidade de forma clara para leigos. Na versão mobile, adicionar um botão "?" que, ao ser clicado, exibe a tooltip, semelhante ao card de Autenticação de Dois Fatores.
  • Definir a URL da página que listará todas as sessões ativas como /account-management/sessions.
  • Criar a página /account-management/sessions para listar todas as sessões ativas, destacando a sessão atual no topo e desabilitando o botão de exclusão.
  • Implementar botões de exclusão individuais para cada sessão, exceto a atual.
  • Implementar um botão para excluir todas as sessões, exceto a atual.
  • Integrar o frontend às rotas da API para exclusão de sessões individuais e exclusão de todas as sessões.
  • Criar feedback visual para ações de exclusão (sucesso ou erro).

Backend

  • Criar rota api/v1/private/auth/sessions/delete-all para excluir todas as sessões, exceto a sessão atual.
  • Criar rota api/v1/private/auth/sessions/delete/:sessionId para excluir uma sessão individualmente, exceto a sessão atual.
  • Implementar verificação nas rotas para garantir que a sessão atual não possa ser excluída.
  • Integrar o envio de email de notificação em todos os tipos de login (credenciais, Google, GitHub, Magic Link, etc.), alertando o usuário sobre o novo login e informando o dispositivo utilizado no acesso. O email deve seguir o padrão LOGIN_NOTIFICATION e ser adicionado à interface EmailDataMap.
  • Escrever testes de integração para as rotas de exclusão de sessões (delete-all e delete/:sessionId) e para o envio de email de notificação de login.

Observações

  • Criar a branch feature/session-control-and-login-notification para a implementação das funcionalidades.
  • Seguir os princípios SOLID durante a implementação das funcionalidades, garantindo que o código seja modular, extensível e fácil de manter.
  • Adotar a metodologia TDD (Test-Driven Development) para a implementação das rotas e funcionalidades, assegurando que os testes de integração cubram todos os cenários possíveis.
  • Garantir que o sistema esteja seguro e eficiente, especialmente nas rotas de exclusão de sessões e no envio de notificações de login.
  • Revisar as permissões e acessos em todas as rotas, assegurando que somente usuários autenticados possam acessar ou manipular sessões e notificações.
  • Manter a consistência nos nomes de variáveis, métodos e rotas para garantir clareza no código e facilitar a leitura e manutenção.
@LivioAlvarenga LivioAlvarenga self-assigned this Sep 12, 2024
@LivioAlvarenga LivioAlvarenga added back Envolve modificações no backend front Envolve modificações no frontend labels Sep 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back Envolve modificações no backend front Envolve modificações no frontend
Projects
None yet
Development

No branches or pull requests

1 participant