Campos
| Campo | Tipo | Descrição |
|---|---|---|
otpId | UUID | Identificador único |
userId | UUID | Referência ao usuário |
code | String | Credencial protegida do código OTP (nunca armazenado em texto puro) |
context | OtpContext | Contexto de uso do código |
recipient | String | Destinatário da entrega (telefone do usuário) |
expiresAt | DateTime | Data de expiração do código |
usedAt | DateTime? | Data em que o código foi utilizado |
createdBy | UUID? | Usuário que criou o registro, quando aplicável |
createdAt | DateTime | Data de criação |
updatedBy | UUID? | Usuário que fez a última atualização, quando aplicável |
updatedAt | DateTime | Data da última atualização |
Relacionamentos
- Relaciona-se com User
Regras de Negócio
- O código tem vida curta — expira em 2 minutos após a criação (
expiresAt). - Apenas a versão protegida do
codeé mantida; o valor em texto puro só existe no momento da entrega ao destinatário. - Uso único — após validado,
usedAté preenchido e o código não pode ser reutilizado. - O campo
contextdetermina o fluxo ao qual o OTP está associado.
Enums
OtpContext
| Valor | Descrição |
|---|---|
RESET_PASSWORD | Recuperação de senha |
RESET_PHONE | Verificação para troca de telefone |
RESET_EMAIL | Verificação para troca de email |