Logo

Autenticação

O LipMKT implementa um sistema robusto de autenticação multi-tenant utilizando Firebase Authentication combinado com Custom Claims para controle de acesso granular.

🔐 Arquitetura de Autenticação

Fluxo de Autenticação

1. Usuário faz login (email/senha)
   ↓
2. Firebase Authentication valida credenciais
   ↓
3. Backend adiciona Custom Claims (tenantId, companyId, role)
   ↓
4. Token JWT é gerado com claims
   ↓
5. Frontend armazena token e dados do usuário
   ↓
6. Requisições incluem token no header Authorization
   ↓
7. Backend valida token e verifica permissões

🏗️ Componentes do Sistema

1. Firebase Authentication

Responsabilidade: Gerenciar identidades de usuários.

Recursos utilizados:

  • Email/Password authentication
  • Token refresh automático
  • Session management
  • Password reset

Configuração:


2. Custom Claims (JWT)

Propósito: Adicionar metadados personalizados ao token do usuário.

Claims implementados:

  • tenantId - ID do tenant (isolamento de dados)
  • companyId - ID da empresa
  • role - Papel do usuário (admin, agent, manager)
  • permissions - Array de permissões específicas

Exemplo de token decodificado:


3. Backend Authentication Service

Localização: functions/lib/auth/

Principais funções:

Login

Middleware de Autenticação

Verificação de Permissões


🎯 Implementação Frontend

Redux Auth Store

Estado gerenciado:

Login Flow

Proteção de Rotas

Verificação de Permissões


🔄 Refresh de Token

Automático

Manual


👥 Roles e Permissões

Hierarquia de Roles

Matriz de Permissões

RecursoSuper AdminAdminManagerAgentViewer
Conversas
Visualizar
Responder
Atribuir
Fechar
Fluxos
Visualizar
Criar/Editar
Ativar/Desativar
Deletar
Agentes
Visualizar
Criar/Editar
Deletar
Analytics
Visualizar
Exportar
Configurações
Visualizar
Editar

Definição de Permissões


🔒 Segurança

Boas Práticas Implementadas

  1. Token Expiration: Tokens expiram em 1 hora
  2. HTTPS Only: Todas as comunicações via HTTPS
  3. Secure Cookies: Cookies com flags httpOnly e secure
  4. Rate Limiting: Limite de tentativas de login
  5. Password Policy: Mínimo 8 caracteres, letras e números
  6. Multi-tenant Isolation: Dados isolados por tenantId

Firestore Security Rules


🧪 Testes

Teste de Login


🔗 Próximos Passos

Última atualização

26 de novembro de 2025