PATCH
https://api.myidvirtual.com
/
user
/
change-password
/
:id
Alterar Senha
curl --request PATCH \
  --url https://api.myidvirtual.com/user/change-password/:id \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "oldPassword": "<string>",
  "password": "<string>",
  "passwordConfirmation": "<string>"
}
'
{
  "user": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "email": "[email protected]",
    "name": "João Silva",
    "role": "CUSTOMER",
    "status": true,
    "updatedAt": "2024-01-20T14:45:00.000Z"
  },
  "message": "Senha alterada com sucesso"
}

Alterar Senha

Endpoint para alteração de senha do usuário. Requer a senha atual para validação e permite definir uma nova senha com confirmação.

Autenticação

Authorization
string
required
Bearer token JWT do usuário autenticado

Parâmetros

Path Parameters

id
string
required
ID do usuário que terá a senha alterada

Request Body

oldPassword
string
required
Senha atual do usuário para validação
password
string
required
Nova senha (máximo 32 caracteres)
passwordConfirmation
string
required
Confirmação da nova senha (deve ser igual ao campo password)

Responses

{
  "user": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "email": "[email protected]",
    "name": "João Silva",
    "role": "CUSTOMER",
    "status": true,
    "updatedAt": "2024-01-20T14:45:00.000Z"
  },
  "message": "Senha alterada com sucesso"
}

Exemplo de Requisição

curl --location --request PATCH 'http://localhost:3333/user/change-password/123e4567-e89b-12d3-a456-426614174000' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
--header 'Content-Type: application/json' \
--data-raw '{
  "oldPassword": "senhaAtual123",
  "password": "novaSenhaSegura456",
  "passwordConfirmation": "novaSenhaSegura456"
}'

Validações e Regras

Validação de Senha Atual

A senha atual deve ser fornecida corretamente para validação. Caso contrário, a requisição será rejeitada com erro 401.

Requisitos da Nova Senha

  • Tamanho: Máximo de 32 caracteres
  • Confirmação: Deve ser igual ao campo passwordConfirmation
  • Diferente: Recomenda-se que seja diferente da senha atual

Permissões

  • Próprio usuário: Pode alterar apenas sua própria senha

Notificação por E-mail

Após a alteração bem-sucedida, um e-mail de confirmação é enviado automaticamente:

Recuperação de Senha

Se o usuário esqueceu a senha atual, use o endpoint /user/forgot-password/:email para enviar um código de recuperação por e-mail.

Troubleshooting

Problemas Comuns

ProblemaCausaSolução
”Senha atual incorreta”Senha informada não confereVerificar senha atual do usuário
”As senhas não conferem”password ≠ passwordConfirmationGarantir que ambos os campos sejam iguais
”Senha muito longa”Senha > 32 caracteresLimitar senha a 32 caracteres
”Sem permissão”Tentando alterar senha de outro usuárioApenas o próprio usuário ou admin pode alterar
Implemente um timer de bloqueio após múltiplas tentativas incorretas de senha para aumentar a segurança.

Próximos Passos

  1. Implementar validação de força da senha
  2. Adicionar autenticação de dois fatores (2FA)
  3. Configurar política de expiração de senha
  4. Manter histórico de senhas usadas