PermissionSeeder.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Database\Seeders;
  3. use App\Models\Permission;
  4. use Illuminate\Database\Seeder;
  5. class PermissionSeeder extends Seeder
  6. {
  7. public function run(): void
  8. {
  9. $permissions = [
  10. [
  11. 'scope' => 'dashboard',
  12. 'description' => 'Dashboard',
  13. 'bits' => Permission::ALL_PERMS,
  14. ],
  15. [
  16. 'scope' => 'franchisor_franchisee',
  17. 'description' => 'Franqueados',
  18. 'bits' => Permission::ALL_PERMS,
  19. ],
  20. [
  21. 'scope' => 'franchisor_packages',
  22. 'description' => 'Pacotes',
  23. 'bits' => Permission::MENU | Permission::VIEW | Permission::ADD | Permission::EDIT,
  24. ],
  25. [
  26. 'scope' => 'franchisor_products',
  27. 'description' => 'Produtos',
  28. 'bits' => Permission::CRUD,
  29. ],
  30. [
  31. 'scope' => 'franchisor_tbr',
  32. 'description' => 'TBR',
  33. 'bits' => Permission::MENU | Permission::VIEW | Permission::ADD | Permission::EDIT,
  34. ],
  35. [
  36. 'scope' => 'franchisor_financial',
  37. 'description' => 'Financeiro',
  38. 'bits' => Permission::MENU | Permission::VIEW | Permission::ADD | Permission::EDIT,
  39. ],
  40. [
  41. 'scope' => 'franchisor_support',
  42. 'description' => 'Suporte',
  43. 'bits' => Permission::CRUD,
  44. ],
  45. [
  46. 'scope' => 'franchisor_activities',
  47. 'description' => 'Atividades',
  48. 'bits' => Permission::CRUD,
  49. ],
  50. [
  51. 'scope' => 'franchisor_registrations',
  52. 'description' => 'Cadastros',
  53. 'bits' => Permission::CRUD,
  54. ],
  55. ...collect([
  56. 'dashboard' => 'Dashboard',
  57. 'students' => 'Alunos',
  58. 'contracts' => 'Contratos',
  59. 'classes' => 'Agenda / Aulas',
  60. 'financial' => 'Financeiro',
  61. 'packages' => 'Pacotes',
  62. 'users' => 'Usuários',
  63. 'unit' => 'Unidade',
  64. 'integrations' => 'APIs',
  65. 'support' => 'Suporte',
  66. 'activities' => 'Atividades',
  67. 'orders' => 'Pedidos',
  68. ])->map(fn (string $description, string $scope) => [
  69. 'scope' => "franchisee_{$scope}",
  70. 'description' => $description,
  71. 'bits' => Permission::CRUD,
  72. ])->values()->all(),
  73. ];
  74. foreach ($permissions as $permission) {
  75. Permission::updateOrCreate(
  76. ['scope' => $permission['scope']],
  77. $permission + ['parent_id' => null],
  78. );
  79. }
  80. $activeScopes = array_column($permissions, 'scope');
  81. Permission::query()
  82. ->whereNotIn('scope', $activeScopes)
  83. ->orderByDesc('_lft')
  84. ->get()
  85. ->each
  86. ->delete();
  87. }
  88. }