PATCH
https://api.myidvirtual.com
/
auth
/
send-recover-email
/
{email}
Recuperar Senha
curl --request PATCH \
  --url https://api.myidvirtual.com/auth/send-recover-email/{email}
{
  "message": "Email de recuperação enviado com sucesso"
}

Recuperar Senha

Endpoint para iniciar o processo de recuperação de senha, enviando email com token de reset para o usuário.

Parâmetros

Path Parameters

email
string
required
Email do usuário que deseja recuperar a senha

Responses

{
  "message": "Email de recuperação enviado com sucesso"
}

Exemplo de Requisição

curl --location --request PATCH 'http://localhost:3333/auth/send-recover-email/[email protected]'

Processo de Recuperação

Fluxo Completo

1

Solicitação

Usuário informa email no formulário de recuperação
2

Validação

Sistema verifica se email existe na base de dados
3

Geração de Token

Sistema gera token único com validade limitada (30 minutos)
4

Envio de Email

Email com link de reset é enviado para o usuário
5

Reset

Usuário clica no link e define nova senha

Implementação Frontend

Formulário de Recuperação

<form id="forgot-password-form" class="recovery-form">
  <h2>Recuperar Senha</h2>

  <div class="form-group">
    <label for="email">Email:</label>
    <input
      type="email"
      id="email"
      name="email"
      required
      placeholder="Digite seu email"
    >
  </div>

  <button type="submit" id="submit-btn">
    <span id="btn-text">Enviar Email de Recuperação</span>
    <span id="loading" style="display: none;">Enviando...</span>
  </button>

  <div id="message-container"></div>

  <a href="/login">Voltar ao Login</a>
</form>

Segurança

Token de Reset

  • Validade: 30 minutos
  • Uso único: Token é invalidado após uso
  • Criptografia: Token é hash único e não previsível

Validações

const securityChecks = {
  // Verificar se email existe (sem vazar informação)
  emailExists: async (email) => {
    // Retorna sempre sucesso para não vazar dados
    return true;
  },

  // Rate limiting por IP
  checkIPLimit: (ip) => {
    const attempts = getAttempts(ip);
    return attempts < 5;
  },

  // Rate limiting por email
  checkEmailLimit: (email) => {
    const attempts = getEmailAttempts(email);
    return attempts < 3;
  }
};

Métricas Importantes

  • Taxa de conversão (email enviado → senha alterada)
  • Tentativas por hora/dia
  • Emails mais frequentes (possível abuse)
  • Tokens expirados não utilizados

Troubleshooting

Problemas Comuns

ProblemaCausa ProvávelSolução
Email não chegaSpam/bloqueio SMTPVerificar configuração de email
Token expiradoUsuário demorou para usarSolicitar novo token
Link quebradoTemplate mal formatadoVerificar template de email
Por segurança, o endpoint sempre retorna sucesso, mesmo para emails inexistentes, evitando enumeração de usuários.
Implemente logs detalhados para monitorar tentativas de abuse e tokens não utilizados.

Próximos Passos

  1. Configure template de email personalizado
  2. Implemente rate limiting robusto
  3. Configure monitoramento de deliverabilidade
  4. Teste diferentes provedores de email
O token de reset é válido por apenas 30 minutos e pode ser usado uma única vez para máxima segurança.