Usuários não autenticados
Fazemos uma PUT
solicitação em um api/v1/account/password
endpoint e exigimos um parâmetro com o e-mail da conta correspondente para identificar a conta para a qual o usuário deseja redefinir (atualizar) a senha:
PUT : /api/v1/account/password?email={email@example.com}
Nota: Como @DougDomeny mencionou em seu comentário, passar o e-mail como uma string de consulta no url é um risco de segurança. Os parâmetros GET não são expostos durante o uso https
(e você deve sempre usar uma https
conexão adequada para essas solicitações), mas há outros riscos de segurança envolvidos. Você pode ler mais sobre este tópico nesta postagem do blog aqui .
Passar o e-mail no corpo da solicitação seria uma alternativa mais segura do que passá-lo como um parâmetro GET:
PUT : /api/v1/account/password
Corpo da solicitação:
{
"email": "email@example.com"
}
A resposta tem um significado de resposta 202
aceito :
A solicitação foi aceita para processamento, mas o processamento não foi concluído. A solicitação pode ou não ser atendida, pois pode ser proibida quando o processamento realmente ocorrer. Não há recurso para reenviar um código de status de uma operação assíncrona como esta.
O usuário receberá um e-mail em email@example.com
e o processamento da solicitação de atualização depende das ações realizadas com o link do e-mail.
https://example.com/password-reset?token=1234567890
Abrir o link deste e-mail direcionará para um formulário de redefinição de senha no aplicativo front end que usa o token de redefinição de senha do link como entrada para um campo de entrada oculto (o token faz parte do link como uma string de consulta). Outro campo de entrada permite que o usuário defina uma nova senha. Uma segunda entrada para confirmar a nova senha será usada para validação no front-end (para evitar erros de digitação).
Nota: No email também poderíamos mencionar que caso o usuário não inicialize nenhuma redefinição de senha ele pode ignorar o email e continuar usando o aplicativo normalmente com sua senha atual
Quando o formulário é enviado com a nova senha e o token como entradas, o processo de redefinição da senha ocorrerá. Os dados do formulário serão enviados com uma PUT
solicitação novamente, mas desta vez incluindo o token e substituiremos a senha do recurso por um novo valor:
PUT : /api/v1/account/password
Corpo da solicitação:
{
"token":"1234567890",
"new":"password"
}
A resposta será uma resposta 204
sem conteúdo
O servidor atendeu à solicitação, mas não precisa retornar um corpo de entidade e pode desejar retornar metainformações atualizadas. A resposta PODE incluir metainformações novas ou atualizadas na forma de cabeçalhos de entidade, que, se presentes, DEVEM ser associados à variante solicitada.
Usuários autenticados
Para usuários autenticados que desejam alterar sua senha, a PUT
solicitação pode ser realizada imediatamente sem o e-mail (a conta para a qual estamos atualizando a senha é conhecida pelo servidor). Nesse caso, o formulário apresentará dois campos:
PUT : /api/v1/account/password
Corpo da solicitação:
{
"old":"password",
"new":"password"
}