Skip to main content

Redefinir senha

Tela onde a pessoa define uma nova senha depois de clicar no link recebido por e-mail em Recuperar senha.

Tela de redefinição de senha com os campos Nova senha e Confirmação de senha, e o botão Alterar Senha

Antes de começar​

  • Rota: /:tenant/authorization/reset-password?token=<token>.
  • Componente: ResetPasswordComponent (@pages/authentication/reset-password).
  • É preciso ter um token válido na URL — ele vem do link do e-mail de recuperação e expira em 60 minutos. Sem token, a tela ainda abre normalmente (os campos aparecem), mas o envio é recusado do lado do próprio frontend (ver Estados e mensagens).

Permissões e acesso​

Pública — o token na URL é a própria credencial de acesso a esta ação; não é preciso estar logado.

Caminho principal​

  1. A pessoa chega aqui pelo link do e-mail (ou digita a URL manualmente com um token válido).
  2. Preenche Nova senha e Confirmação de senha.
  3. Clica em Alterar Senha.
  4. Em sucesso, o Portal mostra um toast de confirmação e volta para a tela de Login.

Este levantamento confirmou o estado funcional real da tela (formulário carregado com um token válido, gerado de verdade a partir do fluxo de recuperação e obtido no Mailhog do ambiente) — ver print no topo desta página. Para não invalidar a senha de uma conta de teste compartilhada por outras pessoas do time, a submissão com esse token real não foi concluída nesta rodada; o comportamento de sucesso abaixo vem da leitura do código (ResetPasswordComponent.applyResult, caso completed), não de uma captura de tela.

Resultado (por código, não capturado em tela)Efeito
completedToast de sucesso "Senha alterada" e redireciona para o login
invalid_tokenToast de erro "Usuário não autorizado"
invalid_passwordToast de aviso "Verifique os requisitos da senha"
network_error / recoverable_errorToast de erro genérico

A confirmar — responsável: time de frontend; data: 24/09/2026.: captura de tela do toast de sucesso real, sem gastar um token de uma conta de teste compartilhada.

Estados e mensagens​

EstadoQuando aparecePrint
Token real presente na URLChegando pelo link do e-mailFormulário de redefinição de senha vazio, pronto para preencher, com um token real na URL
Erro de validação de senhaSenha não cumpre a política, ou confirmação não confereMensagens de erro sobre a senha (comprimento, maiúscula, número, caractere especial) e sobre as senhas não coincidirem
Token ausenteSem ?token= na URL, ao tentar enviarToast de erro Não foi possível encontrar o token esperado, realize o login novamente

Validações de frontend​

CampoRegraMensagem
Nova senhaObrigatória; entre 8 e 16 caracteres; exige maiúscula, minúscula, número e caractere especial (passwordStrengthValidator)"A senha é obrigatória." / "A senha deve ter entre 12 e 16 caracteres." / "Pelo menos 1 letra maiúscula." / "Pelo menos 1 número." / "Pelo menos 1 caractere especial."
Confirmação de senhaObrigatória; deve ser igual à nova senha (passwordMatchValidator)"Confirmação de senha é obrigatória." / "As senhas não coincidem."
Token (não é um campo de formulário)Precisa existir na URLToast "Não foi possível encontrar o token esperado! Realize o login novamente." ao tentar enviar sem token

:::caution Divergência observada entre a mensagem e a validação do campo A mensagem de erro exibida na tela diz "entre 12 e 16 caracteres", mas o FormControl da Nova senha usa Validators.minLength(8) — ou seja, o campo aceita 8 caracteres no navegador, mesmo com a mensagem sugerindo um mínimo de 12. A política real do backend também é de 8 a 16 caracteres (ver Recuperar, redefinir e trocar senha — API, RN-04). A confirmar — responsável: time de frontend; data: 24/09/2026.: qual dos dois (mensagem ou validador) está desatualizado. :::

Validações e falhas de backend​

SituaçãoOnde é validadaComportamentoComo se recupera
Token mal formadoPOST /authentication/password/reset400 IDENTITY_RECOVERY_TOKEN_INVALIDPedir um novo link em Recuperar senha
Token inexistente, expirado ou já usadoMesmo endpoint401 IDENTITY_INVALID_RECOVERY_TOKENPedir um novo link
Senha fora da políticaMesmo endpoint400 INVALID_PASSWORDAjustar a senha conforme os requisitos
Muitas tentativas em pouco tempoRate limit (5 requisições/60s)429 RATE_LIMIT_EXCEEDEDAguardar e tentar novamente

Regras de negócio​

IDRegraO que a tela reflete
RN-01Token de uso únicoDepois de usado (ou de outro pedido de recuperação), o link antigo passa a ser inválido
RN-02Sem confirmação de senha no backendA checagem de "senhas coincidem" é só de interface; o backend não recebe/valida um segundo campo
RN-03Sucesso zera o bloqueio de loginAo trocar a senha por este fluxo, failedLoginAttempts da conta volta a zero

Informações técnicas​

Rota da tela: /:tenant/authorization/reset-password · Acesso: Público, mediante posse do token

Rotas de API consumidas:

MétodoRotaQuando é chamada
POST/v1/authentication/password/resetAo clicar em Alterar Senha

→ Detalhe da rota: Recuperar, redefinir e trocar senha — API

Relacionado​