Pular para conteúdo

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.
  • createsuperuser pede 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).