Login
Tela onde a pessoa entra no Portal 2.0 com e-mail e senha. É a porta de entrada de todo o sistema: sem passar por aqui (ou pelo login por QR-code), ninguém acessa o restante do Portal.

Antes de começar
- Rota:
/:tenant/authorization/sign-in(neste ambiente,:tenantédefault). - Componente:
LoginComponent(@pages/authentication/login). - A pessoa precisa ter uma conta já cadastrada no Portal. Não há autocadastro nesta tela.
- Se a conta tiver TOTP ou SafeID habilitado, o login não termina aqui — ele continua na tela de MFA.
Permissões e acesso
Pública — qualquer pessoa não autenticada pode acessar. A rota fica dentro do grupo
:tenant/authorization, protegido por guestGuard: quem já tem uma sessão válida é
redirecionado para longe desta tela (não é possível ver a tela de login estando logado).
Caminho principal
- A pessoa digita o e-mail e a senha e clica em Entrar.
- Se as credenciais estiverem corretas e a conta não tiver segundo fator, o Portal cria a sessão
e leva a pessoa para a área logada (
/exams, ou a URL que ela tentou acessar antes de cair no login). - Se a conta tiver TOTP habilitado, o Portal manda para a tela de MFA em vez de
autenticar direto (confirmado navegando: entrar com uma conta com TOTP leva a
/default/authorization/mfa). - Se a conta tiver SafeID habilitado (e não TOTP), o Portal redireciona para a URL de autorização do provedor externo SafeID.
- Também é possível ir para Esqueci minha senha (leva a Recuperar senha) ou Entrar com QRCode (leva a Login por QR-code).
Estados e mensagens
| Estado | Quando aparece | Mensagem exibida | |
|---|---|---|---|
| Campos vazios | Clica em Entrar sem preencher | "E-mail é obrigatório." / "A senha é obrigatória." (abaixo de cada campo) | ![]() |
| E-mail/senha incorretos | Credenciais não conferem | Toast: "E-mail e/ou senha incorretos." | ![]() |
| Conta bloqueada | Backend recusa por bloqueio (progressivo, ver Regras) | Toast: "Conta bloqueada temporariamente por muitas tentativas. Tente novamente mais tarde." | ![]() |
O toast de conta bloqueada foi obtido de verdade: a conta de teste e2e.locked@mobilemed.test
errou a senha 3 vezes seguidas neste levantamento, o que a bloqueou temporariamente por 10 minutos
(ver regra de bloqueio progressivo abaixo) — a mensagem acima é exatamente a que a API devolveu.
Validações de frontend
| Campo | Regra | Mensagem |
|---|---|---|
Obrigatório, formato de e-mail (Validators.email) | "E-mail é obrigatório." / mensagem de e-mail inválido | |
| Senha | Obrigatória, 8 a 128 caracteres | "A senha é obrigatória." / mensagens de tamanho mínimo/máximo |
Essas validações rodam no navegador antes de qualquer chamada à API; elas não substituem a validação do backend (ver Login — API).
Validações e falhas de backend
| Situação | Onde é validada | Comportamento | Como se recupera |
|---|---|---|---|
| Origem não permitida | IdentityOriginGuard, no backend | 403 IDENTITY_AUTH_ORIGIN_FORBIDDEN | Não depende da pessoa usuária; é configuração de ambiente |
| Muitas tentativas em pouco tempo | Rate limit (7 requisições/60s por IP e por e-mail) | 429 RATE_LIMIT_EXCEEDED | Aguardar e tentar de novo |
| E-mail ou senha errados | Serviço de autenticação | 401 IDENTITY_INVALID_CREDENTIALS, toast "E-mail e/ou senha incorretos." | Conferir e-mail/senha; usar "Esqueci minha senha" se necessário |
| Conta bloqueada (temporária ou permanente) | Serviço de autenticação, checado antes da senha | 423, toast de conta bloqueada | Aguardar o tempo de bloqueio (temporário) ou contatar o suporte (permanente) |
| Erro de rede | Requisição HTTP falha | Toast "LOGIN.ERRORS.NETWORK" | Verificar conexão e tentar novamente |
Regras de negócio
| ID | Regra | O que a tela reflete |
|---|---|---|
| RN-01 | Bloqueio de conta é progressivo | 1ª/2ª falha: sem bloqueio · 3ª: bloqueio temporário de 10 min · 4ª: 15 min · 5ª ou mais: bloqueio permanente (ver Login — API) |
| RN-02 | TOTP tem prioridade sobre SafeID | Se a conta tiver os dois habilitados, a tela de MFA que aparece é a de TOTP |
| RN-03 | E-mail não distingue "não existe" de "senha errada" | A mensagem de erro é a mesma nos dois casos (anti-enumeração) |
Informações técnicas
Rota da tela: /:tenant/authorization/sign-in · Acesso: Público (guestGuard)
Rotas de API consumidas:
| Método | Rota | Quando é chamada |
|---|---|---|
| POST | /v1/authentication/login | Ao clicar em Entrar |
→ Detalhe da rota: Login (e-mail e senha) — API
Relacionado
- ⚙️ API: Login (e-mail e senha) — API
- 🔑 Próximo passo (com TOTP/SafeID): MFA
- 🔑 Esqueci a senha: Recuperar senha
- 🔑 Login alternativo: Login por QR-code
- 📂 Módulo (back): Authentication — visão geral


