v beta-2.0.1 Released
Fluxo de Login e Autenticação via WhatsApp
05 de janeiro de 2026
beta-2.0.1
Time Técnico NexarSystems
Fluxo de Login e Autenticação via WhatsApp
NexarGrid Documentation • v beta-2.0.1
O NexarGrid implementa um sistema de autenticação robusto e moderno, priorizando a segurança e a facilidade de uso para os profissionais de saúde. O fluxo principal utiliza autenticação de dois fatores (2FA) com envio de tokens OTP (One-Time Password) via WhatsApp, integrado através da API da Twilio.
# Visão Geral do Processo
O processo de login é composto por duas etapas principais:
- Identificação e Validação de Credenciais: O usuário fornece e-mail e senha.
- Verificação de Segundo Fator (2FA): Um código OTP é enviado para o WhatsApp cadastrado do usuário e deve ser validado para liberar o token de acesso JWT.
Gerando diagrama...
# Detalhes da Implementação
# 1. Serviço de Autenticação (auth.service.js)
Este serviço atua como a autoridade central para geração e validação de tokens e OTPs.
- Geração de OTP:
- Utiliza um gerador numérico de 6 dígitos.
- Armazena o código no Redis com uma chave padrão
auth:otp:{userId}. - Define um TTL (Time-To-Live) de 180 segundos (3 minutos) para expiração automática.
- Validação de OTP:
- Recupera o código do Redis.
- Compara com o código fornecido pelo usuário.
- Se válido, remove imediatamente a chave do Redis para garantir que o OTP seja utilizado apenas uma vez (prevenção contra ataques de replay).
# 2. Serviço de Pessoas (people.service.js)
Gerencia os dados dos usuários e orquestra a comunicação com provedores externos.
- Integração Twilio:
- Utiliza a biblioteca oficial
twiliopara Node.js. - Envia mensagens através de templates pré-aprovados pelo WhatsApp (Content SID:
HXb7cbd0627b4d80da94d6322024519a5b). - O corpo da mensagem é dinâmico, inserindo o código OTP gerado.
- Fallback: O sistema possui suporte para envio via SMS caso o WhatsApp falhe, embora o WhatsApp seja o canal primário.
- Utiliza a biblioteca oficial
# 3. Segurança
- Senhas: Armazenadas como hashes utilizando
bcryptcom salt gerado automaticamente. - Tokens de Acesso: Utiliza JWT (JSON Web Tokens) assinados com um segredo (
JWT_SECRET). O token tem validade de 2 horas e contém o ID do usuário, e-mail e roles (permissões). - Mocking em Desenvolvimento: Para facilitar testes e desenvolvimento sem custos de API, o sistema pode ser configurado para usar um número de telefone “mock” ou retornar o OTP diretamente na resposta da API em ambientes não-produtivos.
# Configuração Necessária
Para que o fluxo funcione corretamente, as seguintes variáveis de ambiente devem estar configuradas no arquivo .env ou no orquestrador de containers:
| Variável | Descrição | Exemplo |
|---|---|---|
TWILIO_ACCOUNT_SID |
ID da conta Twilio | AC6b00cc... |
TWILIO_AUTH_TOKEN |
Token de autenticação Twilio | 4474c0fa... |
TWILIO_PHONE_NUMBER |
Número remetente (Sender) | +16363063149 |
REDIS_HOST |
Host do servidor Redis | localhost |
REDIS_PORT |
Porta do servidor Redis | 6379 |
JWT_SECRET |
Chave secreta para assinatura de tokens | S3cr3tK3y... |
# Tratamento de Erros Comuns
- OTP Expirado: Se o usuário demorar mais de 3 minutos, o código é removido do Redis. A validação retornará
isValid: falsecom razãoexpired_or_not_found. O frontend deve solicitar um novo envio. - Número Inválido: Se o número cadastrado não for um WhatsApp válido, a API da Twilio retornará erro, que é capturado e logado pelo
people.service. - Falha no Redis: Se o serviço de cache estiver indisponível, a geração de OTP falhará, impedindo o login. O monitoramento do Redis é crítico para a disponibilidade do serviço.