Feature - Autorizacao e Acesso Administrativo
Introducao ao documento
Documenta o controle de acesso no painel admin e na API administrativa v1.
Versionamento
- Versao do documento: 1.0.0
- Ultima atualizacao: 2026-03-17
- Responsavel: GitHub Copilot
Referencial teorico
- RBAC (Role-Based Access Control)
- Gates Laravel
Visao geral
O sistema combina autenticacao web para /admin e gates dinamicos gerados a partir da matriz roles x permissions seedada no banco.
Atores
- Usuario autenticado no painel.
- Papel Admin/User com permissoes associadas.
- Evidencia: routes/web.php:35
- Evidencia: database/seeders/RolesTableSeeder.php:18
- Evidencia: database/seeders/RoleUserTableSeeder.php:15
Pre-condicoes
- Login web realizado.
- Permissao requerida para a acao.
- Evidencia: routes/web.php:35
- Evidencia: app/Http/Middleware/AuthGates.php:26
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:15
Fluxo principal
- Usuario acessa rota web /admin/* autenticada.
- Middleware AuthGates monta gates em runtime usando role-permission.
- Controllers admin/API verificam Gate::denies para bloquear acoes sem permissao.
- Evidencia: routes/web.php:35
- Evidencia: app/Http/Middleware/AuthGates.php:16
- Evidencia: app/Http/Middleware/AuthGates.php:26
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:15
Fluxos alternativos
- 403 Forbidden quando permissao nao existe para o papel do usuario.
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:15
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:39
Regras de negocio
- permission queue_logs_show habilita acesso ao Horizon.
- permissions sao seedadas com namespace funcional (appointment_, client_, employee_*).
- Evidencia: app/Providers/HorizonServiceProvider.php:31
- Evidencia: database/seeders/PermissionsTableSeeder.php:204
- Evidencia: database/seeders/PermissionsTableSeeder.php:174
- Evidencia: database/seeders/PermissionsTableSeeder.php:144
Estados possiveis
- Acesso autorizado (2xx)
- Acesso negado (403)
Endpoints envolvidos
- /admin/* (web)
- /api/v1/* (api administrativa)
Dados impactados
- users, roles, permissions, permission_role, role_user
- Referencia: ../data/model.md
Pendencias
- Rota api v1
appointments/date/{id}referencia updateDate que nao foi identificado no controller lido. - Evidencia: routes/api.php:76
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:12