Pular para o conteúdo principal

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

  1. Usuario acessa rota web /admin/* autenticada.
  2. Middleware AuthGates monta gates em runtime usando role-permission.
  3. 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