Data: 07 de Novembro de 2025
Versão: 1.0
Sistema: Multi-usuário para empresas de pequeno porte (até 20 funcionários)
- Visão Geral
- Cargos Definidos
- Módulos do Sistema
- Matriz de Permissões
- Regras Específicas
- Implementação Técnica
O sistema foi projetado para suportar trabalho em equipe com múltiplos usuários, cada um com diferentes níveis de acesso e responsabilidades. A estrutura de permissões garante:
- ✅ Segurança de dados sensíveis
- ✅ Controle granular de ações
- ✅ Rastreabilidade de operações
- ✅ Separação de responsabilidades
- ✅ Escalabilidade para crescimento da equipe
Quantidade sugerida: 1-2 pessoas
Responsabilidades:
- Controle total do sistema
- Gerenciamento de usuários e permissões
- Acesso a todos os recursos e configurações
- Visualização de logs e auditoria completa
- Configuração de integrações e sistema
Acesso:
- ✅ TUDO
Quantidade sugerida: 2-4 pessoas
Responsabilidades:
- Supervisão de orçamentos e vendas
- Gerenciamento de clientes e produtos
- Envio de campanhas de marketing
- Acesso a relatórios gerenciais
Acesso:
- ✅ Gerencia orçamentos (criar, editar, arquivar)
- ✅ Gerencia clientes e produtos
- ✅ Gerencia newsletter e comunicação
- ✅ Acessa relatórios completos
- ❌ NÃO pode: criar/editar/deletar usuários
- ❌ NÃO pode: deletar orçamentos permanentemente
- ❌ NÃO pode: alterar configurações críticas do sistema
Quantidade sugerida: 5-10 pessoas
Responsabilidades:
- Criação e gerenciamento de orçamentos
- Atendimento a clientes
- Envio de propostas comerciais
- Acompanhamento de vendas
Acesso:
- ✅ Cria e edita seus próprios orçamentos
- ✅ Visualiza orçamentos próprios
- ✅ Gerencia clientes
- ✅ Envia orçamentos por e-mail
- ✅ Exporta relatórios próprios
- ❌ NÃO pode: deletar orçamentos
- ❌ NÃO pode: ver orçamentos de outros vendedores (opcional)
- ❌ NÃO pode: acessar configurações
- ❌ NÃO pode: gerenciar produtos
Quantidade sugerida: 1-3 pessoas
Responsabilidades:
- Análise financeira
- Geração de relatórios
- Acompanhamento de faturamento
- Auditoria de orçamentos
Acesso:
- ✅ Visualiza todos os orçamentos (somente leitura)
- ✅ Exporta relatórios financeiros
- ✅ Acessa informações de clientes (básico)
- ✅ Visualiza produtos e preços
- ❌ NÃO pode: criar/editar orçamentos
- ❌ NÃO pode: deletar nada
- ❌ NÃO pode: enviar e-mails
- ❌ NÃO pode: acessar inbox
Quantidade sugerida: 2-5 pessoas
Responsabilidades:
- Primeiro contato com clientes
- Cadastro de clientes
- Gerenciamento de inbox do site
- Suporte básico
Acesso:
- ✅ Visualiza orçamentos (informações básicas)
- ✅ Cria e gerencia clientes
- ✅ Gerencia e-mails do inbox
- ✅ Visualiza e edita status de newsletter
- ❌ NÃO pode: criar orçamentos
- ❌ NÃO pode: ver valores sensíveis completos
- ❌ NÃO pode: deletar clientes
- ❌ NÃO pode: acessar configurações
- Cadastro de usuários
- Atribuição de cargos
- Controle de acesso
- Criação de orçamentos
- Edição e acompanhamento
- Envio por e-mail com PDF
- Histórico de alterações
- Exportação
- Cadastro completo
- Gerenciamento de contatos
- Histórico de orçamentos
- Catálogo de produtos
- Preços e opções
- Locais/Áreas de aplicação
- Inbox: E-mails recebidos e enviados
- Newsletter: Gerenciamento de assinantes
- E-mails de Orçamento: Envio automático de propostas
- Configurações gerais
- Configurações de orçamento
- Configurações de e-mail
- Módulos do sistema
- Activity logs
- Relatórios de vendas
- Exportações
| Módulo / Ação | super_admin | admin | vendedor | financeiro | atendimento |
|---|---|---|---|---|---|
| 👥 USUÁRIOS | |||||
user_view_any - Ver lista |
✅ | ✅ | ❌ | ❌ | ❌ |
user_view - Ver detalhes |
✅ | ✅ | ❌ | ❌ | ❌ |
user_create - Criar |
✅ | ❌ | ❌ | ❌ | ❌ |
user_update - Editar |
✅ | ❌ | ❌ | ❌ | ❌ |
user_delete - Deletar |
✅ | ❌ | ❌ | ❌ | ❌ |
user_force_delete - Deletar permanente |
✅ | ❌ | ❌ | ❌ | ❌ |
| 👔 CARGOS E PERMISSÕES | |||||
role_view_any - Ver cargos |
✅ | ❌ | ❌ | ❌ | ❌ |
role_view - Ver detalhes |
✅ | ❌ | ❌ | ❌ | ❌ |
role_create - Criar cargo |
✅ | ❌ | ❌ | ❌ | ❌ |
role_update - Editar cargo |
✅ | ❌ | ❌ | ❌ | ❌ |
role_delete - Deletar cargo |
✅ | ❌ | ❌ | ❌ | ❌ |
| 💰 ORÇAMENTOS | |||||
budget_view_any - Ver lista |
✅ | ✅ | ✅ Próprios | ✅ | ✅ Básico |
budget_view - Ver detalhes |
✅ | ✅ | ✅ Próprios | ✅ | ✅ Básico |
budget_create - Criar |
✅ | ✅ | ✅ | ❌ | ❌ |
budget_update - Editar |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
budget_delete - Arquivar |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
budget_force_delete - Deletar permanente |
✅ | ❌ | ❌ | ❌ | ❌ |
budget_restore - Restaurar |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
budget_export - Exportar |
✅ | ✅ | ✅ Próprios | ✅ | ❌ |
budget_send_email - Enviar por e-mail |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
| 👥 CLIENTES | |||||
customer_view_any - Ver lista |
✅ | ✅ | ✅ | ✅ Básico | ✅ |
customer_view - Ver detalhes |
✅ | ✅ | ✅ | ✅ Básico | ✅ |
customer_create - Criar |
✅ | ✅ | ✅ | ❌ | ✅ |
customer_update - Editar |
✅ | ✅ | ✅ | ❌ | ✅ |
customer_delete - Deletar |
✅ | ✅ | ❌ | ❌ | ❌ |
customer_force_delete - Deletar permanente |
✅ | ✅ | ❌ | ❌ | ❌ |
customer_restore - Restaurar |
✅ | ✅ | ❌ | ❌ | ❌ |
| 🛍️ PRODUTOS | |||||
product_view_any - Ver lista |
✅ | ✅ | ✅ | ✅ | ✅ |
product_view - Ver detalhes |
✅ | ✅ | ✅ | ✅ | ✅ |
product_create - Criar |
✅ | ✅ | ❌ | ❌ | ❌ |
product_update - Editar |
✅ | ✅ | ❌ | ❌ | ❌ |
product_delete - Deletar |
✅ | ✅ | ❌ | ❌ | ❌ |
product_force_delete - Deletar permanente |
✅ | ✅ | ❌ | ❌ | ❌ |
| 📬 INBOX (E-MAILS) | |||||
mail_view_any - Ver lista |
✅ | ✅ | ✅ Próprios | ❌ | ✅ Próprios |
mail_view - Ver detalhes |
✅ | ✅ | ✅ Próprios | ❌ | ✅ Próprios |
mail_create - Compor/Enviar |
✅ | ✅ | ✅ Limitado | ❌ | ✅ |
mail_update - Editar (marcar lido) |
✅ | ✅ | ✅ Próprios | ❌ | ✅ Próprios |
mail_delete - Deletar |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
mail_force_delete - Deletar permanente |
✅ | ✅ | ❌ | ❌ | ❌ |
mail_restore - Restaurar |
✅ | ✅ | ✅ Próprios | ❌ | ❌ |
| 📮 NEWSLETTER | |||||
newsletter_view_any - Ver assinantes |
✅ | ✅ | ❌ | ❌ | ✅ |
newsletter_view - Ver detalhes |
✅ | ✅ | ❌ | ❌ | ✅ |
newsletter_create - Criar assinante |
✅ | ✅ | ❌ | ❌ | ✅ |
newsletter_update - Editar status |
✅ | ✅ | ❌ | ❌ | ✅ |
newsletter_delete - Deletar |
✅ | ✅ | ❌ | ❌ | ❌ |
newsletter_export - Exportar lista |
✅ | ✅ | ❌ | ❌ | ❌ |
newsletter_send - Enviar campanha |
✅ | ✅ | ❌ | ❌ | ❌ |
| ⚙️ CONFIGURAÇÕES | |||||
setting_view - Ver configurações |
✅ | ✅ Parcial | ❌ | ❌ | ❌ |
setting_update - Editar configurações |
✅ | ✅ Parcial | ❌ | ❌ | ❌ |
setting_budget - Config. orçamento |
✅ | ✅ | ❌ | ❌ | ❌ |
setting_email - Config. e-mail |
✅ | ❌ | ❌ | ❌ | ❌ |
setting_system - Config. sistema |
✅ | ❌ | ❌ | ❌ | ❌ |
| 📊 LOGS E RELATÓRIOS | |||||
activity_log_view_any - Ver logs |
✅ | ✅ Básico | ❌ | ❌ | ❌ |
activity_log_view - Ver detalhes |
✅ | ✅ Básico | ❌ | ❌ | ❌ |
report_view - Ver relatórios |
✅ | ✅ | ✅ Próprios | ✅ | ❌ |
report_export - Exportar |
✅ | ✅ | ✅ Próprios | ✅ | ❌ |
| 📄 PÁGINAS ESPECIAIS | |||||
page_dashboard - Dashboard |
✅ | ✅ | ✅ | ✅ | ✅ |
page_fabricator - Editor de páginas |
✅ | ✅ | ❌ | ❌ | ❌ |
-
super_admin e admin:
- Veem TODOS os e-mails (centralizados)
- Podem gerenciar inbox completo
- Acessam pastas: Recebidos, Enviados, Favoritos, Spam, Lixeira
-
vendedor:
- Vê apenas e-mails relacionados aos seus orçamentos
- Pode enviar e-mails para seus clientes
- Acessa apenas suas mensagens
-
atendimento:
- Vê e-mails recebidos do formulário do site
- Pode compor respostas
- Gerencia comunicação inicial com clientes
-
financeiro:
- SEM acesso ao inbox (não necessita)
- Apenas quem pode editar o orçamento pode enviá-lo por e-mail
- O PDF é anexado automaticamente
- Registro no inbox quando enviado
- super_admin e admin podem enviar campanhas
- atendimento pode gerenciar assinantes
- Outros cargos não têm acesso
- Todo orçamento registra quem criou (
user_id) - Vendedores veem apenas orçamentos onde
user_id = auth()->id() - admin e super_admin veem todos
- super_admin: Edita qualquer orçamento
- admin: Edita qualquer orçamento
- vendedor: Edita apenas
WHERE user_id = auth()->id()
- super_admin: Pode fazer
force_delete(permanente) - admin: Pode arquivar (soft delete)
- vendedor: Pode arquivar apenas os próprios
- Registrado na tabela
budget_histories - Vinculado ao usuário que fez a alteração
- Auditável pelo super_admin
-
Completo (super_admin, admin, vendedor, atendimento):
- Nome, e-mail, telefone, endereço completo
- Histórico de orçamentos
- Notas e observações
-
Básico (financeiro):
- Nome, e-mail, telefone
- Cidade/Estado
- SEM acesso a observações internas
- Todos menos financeiro podem criar clientes
- Apenas admin pode deletar clientes
- super_admin e admin: Gerenciam catálogo completo
- Demais cargos: Somente visualização
- Preços visíveis para todos (necessário para orçamentos)
-
super_admin:
- Configurações gerais do sistema
- Configurações de e-mail (SMTP)
- Configurações de orçamento
- Módulos ativos/inativos
- Integrações
-
admin:
- Configurações de orçamento (parcial)
- Configurações de comunicação
- SEM acesso a: SMTP, sistema crítico
-
Demais:
- SEM acesso a configurações
- Laravel 11.x
- Filament 3.x
- Spatie Laravel Permission (roles e permissões)
- Filament Shield (interface de gerenciamento)
- roles (cargos)
- permissions (permissões)
- model_has_roles (usuário → cargo)
- model_has_permissions (usuário → permissão direta)
- role_has_permissions (cargo → permissões)-
Tabela
users:- Já possui trait
HasRoles - Sem modificações necessárias
- Já possui trait
-
Tabela
budgets:ALTER TABLE budgets ADD COLUMN user_id BIGINT UNSIGNED; ALTER TABLE budgets ADD FOREIGN KEY (user_id) REFERENCES users(id);
-
Tabela
mails:ALTER TABLE mails ADD COLUMN user_id BIGINT UNSIGNED; ALTER TABLE mails ADD FOREIGN KEY (user_id) REFERENCES users(id);
database/seeders/RolesAndPermissionsSeeder.php
app/Policies/BudgetPolicy.php
app/Policies/UserPolicy.php
app/Policies/CustomerPolicy.php
app/Policies/ProductPolicy.php
app/Policies/MailPolicy.php
app/Policies/NewsletterPolicy.php
app/Policies/SettingPolicy.php
app/Policies/ActivityLogPolicy.php
database/migrations/xxxx_add_user_id_to_budgets_table.php
database/migrations/xxxx_add_user_id_to_mails_table.php
Modificar para aplicar policies:
app/Filament/Resources/BudgetResource.php
app/Filament/Resources/CustomerResource.php
app/Filament/Resources/ProductResource.php
app/Filament/Resources/MailResource.php
app/Filament/Resources/NewsletterResource.php
app/Models/Scopes/UserBudgetScope.php
app/Models/Scopes/UserMailScope.php
- ✅ Criar migration para adicionar
user_idem budgets e mails - ✅ Criar Seeder com cargos e permissões
- ✅ Executar migrations e seeders
- ✅ Testar criação de usuários com cargos
- ✅ Criar Policies para cada Resource
- ✅ Implementar métodos: viewAny, view, create, update, delete, forceDelete
- ✅ Adicionar lógica de propriedade (user_id)
- ✅ Registrar Policies no AuthServiceProvider
- ✅ Aplicar Policies nos Resources
- ✅ Adicionar Global Scopes para filtrar por user_id
- ✅ Modificar queries para respeitar permissões
- ✅ Adicionar campo user_id nos formulários (hidden)
- ✅ Configurar Filament Shield Resource
- ✅ Adicionar navegação para gerenciamento de cargos
- ✅ Customizar dashboard por cargo
- ✅ Ajustar widgets de estatísticas
- ✅ Testar cada cargo individualmente
- ✅ Validar visibilidade de orçamentos
- ✅ Validar permissões de e-mail
- ✅ Testar criação/edição/exclusão
- Todas as permissões são verificadas tanto no backend (Policies) quanto no frontend (Filament)
- Queries são filtradas automaticamente via Global Scopes
- Logs de auditoria registram todas as ações críticas
- Fácil adicionar novos cargos via interface
- Permissões granulares permitem ajustes finos
- Estrutura suporta crescimento da equipe
- Documentação inline em todos os arquivos
- Nomenclatura padronizada de permissões
- Testes automatizados para validação
php artisan shield:generatephp artisan shield:super-adminphp artisan db:seed --class=RolesAndPermissionsSeederphp artisan permission:cache-resetphp artisan make:policy BudgetPolicy --model=BudgetPara dúvidas sobre implementação ou ajustes na estrutura de permissões:
- Consultar documentação do Spatie Permission
- Consultar documentação do Filament Shield
Documento criado em: 07/11/2025
Última atualização: 07/11/2025
Status: ✅ Aprovado para implementação