Skip to main content

Campos

O par phoneDdi + phoneNumber é único em todo o sistema.

Relacionamentos

  • Has one (optional) Customer (perfil de passageiro)
  • Has one (optional) Driver
  • Relaciona-se com múltiplas UserSession
  • Relaciona-se com múltiplos Membership (vínculo com organizações via roles)
  • Relaciona-se com múltiplos Employee (vínculo operacional com Companies)
  • Relaciona-se com múltiplos OTP
  • Relaciona-se com múltiplos Order (como responsável pela criação — soldBy)
  • Relaciona-se com múltiplos Invite (emitidos e recebidos)
  • Relaciona-se com múltiplas TripReview, quando responde ou modera avaliações

Regras de Negócio

  • O telefone (phoneDdi + phoneNumber) é obrigatório e único — é o identificador primário de login.
  • O email é opcional, mas único quando preenchido. O login por username aceita email ou telefone.
  • password é nulo para usuários autenticados exclusivamente via Google OAuth e para contas PENDING (criadas sem senha, ativadas por Invite).
  • googleProviderId é único quando preenchido.
  • Usuários BLOCKED não podem autenticar nem renovar sessão.
  • Ao bloquear um usuário, sessões ativas devem ser revogadas para interromper a cadeia de acesso.
  • Documento, data de nascimento e endereços de passageiro vivem em Customer, não no User.
  • Claims de acesso como access:ops, access:bko e access:driver são derivados no Profile a partir de Memberships e vínculos operacionais.

Enums

UserStatus

Example