| Data de elaboração | 28/02/2023 |
| Responsável pelo estudo | Rafael Passos dos Santos (Assessor) |
| Equipe do estudo | André Honório de Andrade Silva (Tecnico), Gezinéia Paula da Costa (Product Owner), Emanuel Rufino Alcantara de Lima (Analista), Rafael Passos dos Santos (Assessor), Alef Carvalho (Analista), Gustavo Félix (Analista) |
| Alvo | Consignação |
| Origem | Implementação: Alteração e expiração de senhas do sistema de Consignação |
| Objetivo | O presente estudo visa analisar e propor a funcionalidade para alterar e expirar senhas de usuários do sistema Consignação |
| Documentação correlata | |
| Observações | O presente estudo pretende também pretende levantar as Historias dos cards para a Sprint |
O presente estudo visa analisar e propor a funcionalidade para alterar e expirar senhas de usuários do sistema Consignação.
O sistema não conta com uma ferramenta automatizada em que o próprio usuário realize a alteração de senha. Também é necessário criar um mecanismo para expirar a senha.
Espera-se que, após este estudo, seja possível identificar uma forma para que o próprio usuário realize a alteração de senha.
Há a necessidade de alteração de senha por parte do usuário, pois este item não está funcionando.
No momento que foi realizado o estudo, somente o usuário MASTER realizava a alteração de senhas dentro do sistema.
Existia uma funcionalidade para alteração de senhas, porém a mesma parou de funcionar e foi retirada do front-end do sistema.
Ao analisar o código fonte, foi possível identificar os passos para recuperação de senha:

| Ação | Parâmetros | Descrição |
| Método de solicitar a recuperação a senha | login e email | É gerado um token de confirmação, É criado um registro no banco na tabela FuncionarioRecuperacaoSenha, É criado e enviado o email para recuperação de senha |
| Método de alterar a senha | token e novaSenha | É buscado um funcionário por um token, Caso o funcionário seja encontrado, é realizada a alteração da senha. |
Observações:
Classes no BackEnd: FuncionarioRecuperacaoSenhaControlador e FuncionarioRecuperacaoSenhaServico
No momento que foi realizado o estudo, a tela de Recuperar a senha não estava funcionando.
Após a análise do cenário atual, propomos as seguintes ações para o pleno funcionamento:
Reset de senhas
Atualmente a tela não está funcionando, porém o código está no projeto. É preciso identificar por que ao clicar nessa tela ela redireciona para o Index. Após o ajuste nesta tela, é preciso verificar se ela está fazendo o Post com os parâmetros para a rota da API.
Ao alterar a senha, os campos Data de Expiração e Expirado devem ser atualizadas
O sistema está utilizando um SMTP próprio. É preciso criar uma estrutura para o consumo da API do Hermes (API de e-mail) para enviar o e-mail ao usuário com o Link em que será cadastrada a nova senha.
Nesta tela, que será acessada pelo link enviado pelo email, o usuário irá cadastrar a nova senha. Também é preciso verificar se ela está fazendo o Post com os parâmetros para a rota da API.
Expiração de senha
«Data de expiração»: Data em que expirará a senha.
«Expirado»: campo que identifica que o login está expirado ou não.
Ao realizar o login, o sistema identificará se a senha está expirada. Caso esteja, o usuário é redirecionado para a tela que informa que a senha está expirada com link para o reset de senhas.
Criar rota para expirar as senhas de acordo com a data de expiração.
Criar um job no CaveiraJob para consumir essa rota.
Para aplicar a solução acima será necessário as seguintes histórias de usuários:
| O que? | Pontos | Regras | Produto |
| Alteração de senhas | |||
| Criar ou recuperar a tela para a solicitação de alteração de senhas | 5 | Nesta tela solicitar usuário e e-mail. Obs: Deve haver um link na tela de login para esta tela. Consumir a rota para incluir a solicitação de recuperação de senha | Consignação |
| Mudança na rota de alteração de senhas | 3 | Ao alterar a senha, os campos Data de Expiração e Expirado devem ser atualizadas | Consignação |
| Consumir o sistema Hermes para envio do e-mail de alteração. | 8 | No e-mail haverá um link para o reset de senhas. Há um exemplo de consumo no Mr.Day | Consignação |
| Criar ou recuperar a tela para realizar o reset de senhas | 5 | Após o envio do email, é necessária uma tela para digitar a nova senha. O backend irá: Alterar a senha no banco, Atualizar o campo «data de expiração» e «expirado». | Consignação |
| Expiração de senha | |||
| Criar campos na tabela Funcionario referente à expiração de senhas | 5 | «Data de expiração»: Data em que expirará a senha. «Expirado»: campo que identifica que o login está expirado ou não. | Consignação |
| Bloquear login de usuários com senha expirada | 5 | Consultar campo Expirado, Caso esteja expirado, o usuário é redirecionado para a tela que informa que a senha está expirada com link para o reset de senhas. | Consignação |
| Expirar senha | 5 | Criar rota para expirar as senhas de acordo com a data de expiração, Criar um job no CaveiraJob para consumir essa rota | Consignação |
A linguagem utilizada no projeto é nova para o time.
Conclui-se que para a devida implementação destas melhorias, o time poderá, além consultar este documento, consultar a PO e os demais integrantes da SETIC, pois objetiva-se a funcionalidade de expirar e alterar a senha dos usuários.