ADR 0009 — Login por e-mail e senha¶
Status: Aceita · Data: 09/11/2026
Contexto¶
O padrão do Django é login por nome de usuário e senha. Para a equipe, o e-mail é mais fácil de lembrar e já identifica a pessoa. Também foi considerado o login só com senha (a senha identificaria o usuário), e ele foi descartado.
Decisão¶
- O usuário é identificado pelo e-mail. Não existe campo de nome de usuário.
- O e-mail é único, obrigatório, guardado em minúsculas e sem espaços, e o login não diferencia maiúsculas de minúsculas (
Fulano@Exemplo.com=fulano@exemplo.com). Uma restrição no banco (usuario_email_unico_sem_caixa) garante isso. createsuperuserpede o e-mail. O superusuário já recebe o papel administrador.- O admin do Django também entra com e-mail. O campo se chama "username" no formulário padrão, mas recebe o e-mail.
Alternativas consideradas¶
- Nome de usuário + senha (padrão do Django): funciona, mas é mais um dado para a equipe lembrar.
- Só senha, sem identificar o usuário: descartado. Obrigaria senhas diferentes entre todos (e, ao recusar uma repetida, o sistema revelaria a senha de outra pessoa), cada tentativa seria testada contra todos os usuários ao mesmo tempo (facilitando adivinhar) e o login ficaria lento, já que cada senha guardada teria de ser conferida uma a uma.
Consequências¶
- Trocar o e-mail de alguém troca o login dessa pessoa (fica registrado na auditoria).
- Conforto adicional previsto para a F2: lembrar o e-mail no aparelho, "manter conectado" em aparelho confiável e, depois, login por biometria (passkey).