Gestão de Acessos

Agências, tenants, tipos de usuário e perfis de permissão — como o sistema controla quem acessa o quê.

Visão Geral

O sistema possui uma hierarquia de 4 níveis que define o acesso e a organização dos sites:

Hierarquia do Sistema
  Master (super-admin)
    └── Agência (revenda white-label)
        └── Tenant (site/empresa do cliente)
            └── Usuário (quem opera o painel)
EntidadeO que éQuem gerencia
Master Administrador da plataforma. Acesso total a tudo.
Agência Revenda/agência digital. Tem branding próprio no painel (logo, nome). Gerencia vários tenants. Master
Tenant Um site/empresa. Tem domínios, configurações, conteúdo e template próprios. Master ou Agência
Usuário Pessoa que acessa o painel. Pode ser master, membro de agência ou cliente final. Master, Agência ou Admin do Tenant
Um tenant pode existir sem agência — nesse caso é gerenciado diretamente pelo Master. A agência é uma camada opcional de intermediação.

Agências

Agências são revendas white-label que gerenciam vários tenants. Cada agência tem branding próprio que substitui o padrão da plataforma quando os usuários da agência acessam o painel.

Campos da Agência

CampoDescrição
NomeNome interno da agência (ex: "Agência Digital XYZ")
SlugGerado automaticamente a partir do nome
E-mail de contatoE-mail da agência para referência interna
TelefoneTelefone da agência para referência interna
NotasObservações internas (visível apenas para master)
Nome no PainelNome exibido no cabeçalho do painel para tenants desta agência. Se vazio, usa o nome da agência.
Logo do PainelLogo exibido no cabeçalho do painel no lugar do logo padrão da plataforma
Desenvolvido porNome e URL do desenvolvedor para créditos no rodapé do front. Sobrescreve o padrão de config/panel.php

Status da Agência

StatusBadgeO que acontece
Liberada (is_active = true) Liberada Funcionamento normal. Pode criar novos tenants, editar, gerenciar tudo.
Bloqueada (is_active = false) Bloqueada Membros da agência não podem criar ou editar tenants/domínios. O painel exibe mensagem de erro. Sites existentes continuam funcionando normalmente no front.
Bloquear uma agência não desativa os sites dos clientes. Apenas impede a equipe da agência de fazer alterações no painel. Para desativar um site, altere o status do tenant para "Inativo".

Dashboard da Agência

A agência pode ter um dashboard próprio com métricas dos seus tenants. Para funcionar, dois gates precisam estar ativos:

  1. Na agência: campo dashboard_enabled deve estar ativo
  2. No usuário: campo can_view_dashboard deve estar ativo

Se qualquer um estiver desativado, o usuário vê uma tela de boas-vindas genérica no lugar do dashboard.

Transferência de Tenants

Na página de edição de uma agência, o master pode transferir todos os tenants para outra agência (ou para gestão direta do master).

Cuidado: A transferência move todos os tenants de uma vez. Membros da agência de origem perdem acesso aos tenants transferidos (permissões são limpas automaticamente). Clientes finais vinculados diretamente aos tenants mantêm o acesso.

Exclusão de Agência

Uma agência só pode ser excluída quando possui 0 tenants. Se houver tenants vinculados, primeiro é necessário transferi-los ou desvinculá-los individualmente.

Rotas da Agência

RotaAçãoAcesso
/panel/agenciesListar agênciasMaster only
/panel/agencies/createCriar agênciaMaster only
/panel/agencies/{id}/editEditar agência + transferênciaMaster only
/panel/agencies/{id} (DELETE)Excluir agênciaMaster only

Tenants

Cada tenant é um site independente com seu próprio conteúdo, configurações, domínios e template. Tenants podem pertencer a uma agência ou ser gerenciados diretamente pelo master.

Criando um Tenant

A criação de tenants segue regras diferentes dependendo de quem está criando:

Quem criaAgênciaSegmentoPós-criação
Master Pode escolher uma agência ou deixar "direto do Master" Pode selecionar segmento + Starter Kit Redireciona para edição (configurar domínios)
Membro de agência Vinculado automaticamente à agência do usuário Pode selecionar segmento + Starter Kit Redireciona para edição (configurar domínios)
Usuário normal Sem agência Pode selecionar segmento + Starter Kit Auto-vinculado como admin do tenant

Campos do Tenant

CampoDescrição
NomeNome do site/empresa (obrigatório)
SlugGerado automaticamente. Usado como identificador único.
Statusactive (site funciona) ou suspended (front retorna 503)
AgênciaAgência proprietária (opcional). Determina branding e acesso da equipe.
SegmentoTipo de site (Imobiliária, Loja, etc.). Define módulos e template via Starter Kit.

Starter Kit

Ao selecionar um segmento na criação, o sistema pode aplicar automaticamente o Starter Kit do segmento, que inclui:

O checkbox "Aplicar Starter Kit automaticamente" vem marcado por padrão. Se desmarcado, o tenant é criado vazio (sem template, módulos ou páginas).

Domínios

Após criar o tenant, o passo seguinte é configurar os domínios na tela de edição. Cada tenant pode ter múltiplos domínios.

OpçãoDescrição
PrincipalDomínio canônico do site. Apenas um pode ser principal.
RedirecionarQuando marcado, visitantes são enviados para o domínio principal.
Tipo (301/302)301 = permanente (SEO), 302 = temporário.
SSLIndica se o domínio usa HTTPS.
www.meusite.com.br e meusite.com.br são domínios diferentes. Cadastre ambos e configure um para redirecionar ao outro.

Vínculo com Agência (edição)

Na tela de edição do tenant:

Tipos de Usuário

Existem 3 tipos de usuário no sistema, definidos pela combinação de dois campos: is_master e agency_id.

Tipois_masteragency_idAcesso a TenantsPermissões
Master true null Todos os tenants automaticamente Bypassa todas as verificações
Membro de Agência false ID da agência Todos os tenants da agência automaticamente Controladas por perfil de permissão
Cliente / Normal false null Apenas tenants vinculados manualmente (pivot user_tenant) Controladas por perfil de permissão
Membros de agência não precisam de vínculo na tabela user_tenant. O acesso é automático via agency_id. Já clientes normais precisam ser vinculados manualmente a cada tenant.

Usuário Master

O Master é o super-administrador da plataforma. Ele tem acesso irrestrito a todas as funcionalidades.

Características

Criando um Usuário Master

  1. Acesse Usuários → Novo Usuário
  2. Preencha nome, e-mail e senha
  3. No campo Tipo, selecione Master
  4. Salve
Apenas um usuário Master pode criar outro Master. Ao marcar como Master, todos os vínculos de tenant e agência são removidos automaticamente (não são necessários).

Membro de Agência

Membros de agência são a equipe da revenda. Eles têm acesso automático a todos os tenants da agência, sem precisar de vínculo individual.

Características

Criando um Membro de Agência

Existem duas formas de criar um membro de agência:

Forma 1: Master cria o membro

  1. Acesse Usuários → Novo Usuário
  2. Preencha nome, e-mail e senha
  3. No campo Agência, selecione a agência desejada
  4. Opcionalmente marque "Pode ver Dashboard"
  5. Salve
  6. Acesse Permissões do usuário para atribuir um perfil

Forma 2: Outro membro da agência cria

  1. Logado como membro de agência, acesse Usuários → Novo Usuário
  2. Selecione o tipo "Membro da Agência"
  3. Preencha nome, e-mail e senha
  4. Opcionalmente marque "Pode ver Dashboard"
  5. Opcionalmente selecione um perfil de permissão inicial
  6. Salve
O campo "Pode ver Dashboard" só habilita o dashboard se a agência também tiver o dashboard habilitado (dashboard_enabled). Ambos os gates precisam estar ativos.

Usuário Cliente

Clientes (ou usuários normais) são os donos/operadores dos sites. Eles só acessam os tenants aos quais foram vinculados manualmente.

Características

Criando um Usuário Cliente

Forma 1: Master cria o cliente

  1. Acesse Usuários → Novo Usuário
  2. Preencha nome, e-mail e senha
  3. Deixe Agência vazia e Tipo como "Padrão"
  4. Selecione os tenants aos quais o usuário terá acesso (checkboxes)
  5. Opcionalmente selecione um perfil de permissão para definir o que o usuário pode acessar
  6. Salve

Forma 2: Membro de agência cria o cliente

  1. Logado como membro de agência, acesse Usuários → Novo Usuário
  2. Selecione o tipo "Cliente do Tenant"
  3. Selecione o tenant da agência ao qual vincular
  4. Preencha nome, e-mail e senha
  5. Opcionalmente selecione um perfil de permissão inicial
  6. Salve

Forma 3: Outro usuário do tenant cria

  1. Logado no contexto do tenant, acesse Usuários → Novo Usuário
  2. O tenant já vem fixo (o atual)
  3. Preencha nome, e-mail e senha
  4. Salve e depois configure permissões
As permissões efetivas de um usuário são determinadas exclusivamente pelo perfil de permissão atribuído. Sem um perfil (ou permissões customizadas), o usuário terá acesso apenas às rotas definidas como always_allowed.

Perfis de Permissão

Perfis de permissão definem quais rotas do painel um usuário pode acessar. Um perfil é um conjunto nomeado de rotas que pode ser reutilizado em vários usuários.

Conceitos Principais

ConceitoDescrição
Scope tenant — rotas de conteúdo (blog, páginas, produtos, configurações, etc.)
platform — rotas de gestão (fábrica de templates, gestão de tenants, agências, etc.)
Assignable By Quem pode atribuir este perfil a um usuário:
master — apenas master pode atribuir
agency — master ou membro de agência pode atribuir
client — qualquer usuário com permissão de gerenciar usuários pode atribuir
Sistema Perfis criados automaticamente na instalação. Não podem ser excluídos.

Perfis de Sistema

PerfilScopeDescrição
Acesso FábricaplatformRotas da fábrica (templates master, segmentos, páginas modelo)
Gestor de TenantsplatformRotas de gestão (tenants, domínios, agências)
Admin CompletotenantTodas as rotas de conteúdo do tenant
Editor de ConteúdotenantPáginas, blog, produtos, imóveis, veículos, portfólio, etc.
VisualizadortenantApenas visualização (index/show) em todos os módulos
AtendimentotenantMensagens de contato, orçamentos e comentários

Modos de Permissão

Ao atribuir permissões a um usuário, existem 3 modos:

ModoComo funciona
Perfil Seleciona um perfil pré-definido. O usuário herda todas as rotas do perfil. Se o perfil for atualizado, todos os usuários refletem a mudança.
Customizado Seleciona rotas individualmente (checkboxes agrupados por funcionalidade). Mais flexível, mas mais trabalhoso de manter.
Nenhum Remove todas as permissões. O usuário pode logar mas não acessa nenhuma funcionalidade.
Permissões de tenant são globais — o mesmo conjunto de rotas vale para todos os tenants que o usuário pode acessar. Se precisar de permissões diferentes por tenant, crie usuários separados.

Cadeia de Verificação

Quando um usuário acessa qualquer rota do painel, a verificação segue esta ordem:

1. Usuário é master? → PERMITIDO (bypassa tudo)
2. Rota está em always_allowed (33 rotas)? → PERMITIDO
3. Rota está em master_only? → BLOQUEADO
4. Rota é scope platform?
    → Verifica perfil platform (tenant_id = NULL)
5. Rota é scope tenant?
    → Usuário tem acesso ao tenant? (agency_id ou pivot)
    → Verifica perfil tenant (apply_to_all_tenants = true)
    → Rota está no perfil ou nas rotas customizadas? → PERMITIDO / BLOQUEADO

Rotas Sempre Permitidas (always_allowed)

Estas 33 rotas são acessíveis por qualquer usuário autenticado, independente de permissões:

Criando um Perfil de Permissão

  1. Acesse Perfis de Permissão (em Gestão, na sidebar)
  2. Clique em Novo Perfil
  3. Opcionalmente, use um template como ponto de partida (Editor, Atendimento ou Gerenciador)
  4. Defina nome, descrição, scope (tenant ou platform) e assignable_by
  5. Marque as rotas desejadas (organizadas por grupos)
  6. Salve

Atribuindo Permissões a um Usuário

  1. Na listagem de Usuários, clique no ícone de chave () do usuário
  2. Escolha o modo: Perfil, Customizado ou Nenhum
  3. Se perfil: selecione o perfil desejado no grid de cards
  4. Se customizado: marque as rotas individualmente
  5. Para master: opcionalmente atribua perfis de plataforma (seção separada na mesma tela)
  6. Salve
Todas as alterações de permissão ficam registradas no log de auditoria (permission_audit_log), incluindo quem fez a alteração e quando.

Guia Prático

Passo a passo completo para configurar uma agência funcional do zero.

Passo 1: Criar a Agência

  1. Logado como Master, acesse Agências → Nova Agência
  2. Preencha: nome, e-mail de contato, telefone
  3. Configure o branding do painel: nome no painel e logo (aparecem para a equipe da agência)
  4. Opcionalmente configure "Desenvolvido por" (créditos no rodapé dos sites)
  5. Ative "Dashboard" se quiser que a equipe tenha acesso ao dashboard de métricas
  6. Salve

Passo 2: Criar o Primeiro Membro da Agência

  1. Acesse Usuários → Novo Usuário
  2. Preencha nome, e-mail e senha
  3. No campo Agência, selecione a agência criada no passo 1
  4. Marque "Pode ver Dashboard" se a agência tem dashboard ativo
  5. Salve

Passo 3: Atribuir Permissões ao Membro

  1. Na listagem de Usuários, clique no ícone do membro criado
  2. Na seção Permissões do Tenant: selecione modo Perfil e escolha "Admin Completo" (ou outro perfil)
  3. Na seção Permissões da Plataforma (abaixo): marque "Gestor de Tenants" se quiser que ele gerencie tenants e domínios
  4. Salve

Passo 4: Criar um Tenant (Site)

Pode ser feito pelo Master ou pelo membro da agência:

  1. Acesse Tenants → Novo Tenant
  2. Preencha o nome do site
  3. Se logado como Master: selecione a agência
  4. Se logado como membro de agência: a vinculação é automática
  5. Selecione o segmento e mantenha "Aplicar Starter Kit" marcado
  6. Salve → será redirecionado para configurar domínios

Passo 5: Configurar Domínios

  1. Na tela de edição do tenant, clique em "Adicionar Domínio"
  2. Digite o domínio (ex: meucliente.com.br)
  3. Marque como Principal
  4. Se necessário, adicione www.meucliente.com.br e configure para redirecionar ao principal
  5. Marque SSL se o domínio usa HTTPS
  6. Salve

Passo 6: Criar Usuário Cliente Final (Opcional)

Se o dono do site precisa de acesso ao painel:

  1. Logado como membro de agência, acesse Usuários → Novo Usuário
  2. Selecione tipo "Cliente do Tenant"
  3. Selecione o tenant criado no passo 4
  4. Preencha nome, e-mail e senha do cliente
  5. Selecione um perfil de permissão inicial (ex: "Editor de Conteúdo")
  6. Salve

Passo 7: Verificar Acessos

Teste os acessos fazendo login com cada tipo de usuário:

UsuárioDeve verNão deve ver
Master Tudo: agências, todos os tenants, fábrica, gestão
Membro da agência Tenants da agência, branding da agência no painel, funcionalidades do perfil atribuído Tenants de outras agências, agências (a menos que tenha perfil platform)
Cliente final Apenas o(s) tenant(s) vinculado(s), funcionalidades do perfil atribuído Outros tenants, gestão, fábrica, agências
Dica: Use o navegador em modo privado (ou outro navegador) para testar logins diferentes simultaneamente sem precisar deslogar.