Alterar E-mail
Endpoint para alteração de e-mail do usuário. Requer validação por código enviado ao e-mail atual, senha atual e confirmação do novo e-mail.
Autenticação
Bearer token JWT do usuário autenticado
Parâmetros
Path Parameters
ID do usuário que terá o e-mail alterado
Request Body
Senha atual do usuário para validação
Confirmação do novo e-mail (deve ser igual ao campo email)
Código de verificação enviado ao e-mail atual
Responses
{
"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": "E-mail alterado com sucesso"
}
Exemplo de Requisição
curl --location --request PATCH 'http://localhost:3333/user/change-email/123e4567-e89b-12d3-a456-426614174000' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
--header 'Content-Type: application/json' \
--data-raw '{
"password": "minhasenha123",
"email": "[email protected]",
"emailConfirmation": "[email protected]",
"code": "ABC123"
}'
Validações e Regras
Código de Verificação
O código de verificação tem validade limitada (geralmente 15-30 minutos). Após expirar, será necessário solicitar um novo código.
Novo E-mail
- Deve ser único no sistema
- Formato válido de e-mail
- Não pode ser igual ao e-mail atual
Permissões
- Próprio usuário: Pode alterar apenas seu próprio e-mail
Notificações por E-mail
E-mail de Confirmação
Enviado para o NOVO e-mail após alteração bem-sucedida.
Segurança
Proteção contra Ataques
// Implementar rate limiting
let tentativas = 0;
const MAX_TENTATIVAS = 3;
async function verificarCodigo(codigo) {
if (tentativas >= MAX_TENTATIVAS) {
alert('Número máximo de tentativas excedido. Solicite um novo código.');
return;
}
try {
// Fazer requisição
tentativas++;
} catch (error) {
// Tratar erro
}
}
Após alterar o e-mail, recomenda-se fazer logout e login novamente para atualizar o token JWT com as novas informações.
Troubleshooting
| Problema | Causa | Solução |
|---|
| Código não recebido | E-mail na caixa de spam | Verificar pasta de spam/lixo eletrônico |
| Código inválido | Código expirado ou incorreto | Solicitar novo código |
| E-mail já em uso | E-mail pertence a outro usuário | Usar e-mail diferente |
| Senha incorreta | Senha informada está errada | Verificar senha atual |
Próximos Passos
- Implementar validação de domínio de e-mail
- Adicionar verificação de e-mail descartável
- Configurar timeout para códigos de verificação
- Manter histórico de alterações de e-mail