PermissionSeeder.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Database\Seeders;
  3. use App\DataTransferObjects\PermissionDto;
  4. use Illuminate\Database\Seeder;
  5. use App\Services\PermissionService;
  6. class PermissionSeeder extends Seeder
  7. {
  8. public function __construct(
  9. protected PermissionService $permissionService,
  10. ) {
  11. }
  12. public function run()
  13. {
  14. // Criação de Permissões
  15. /*
  16. visualizar = 1
  17. adicionar = 2
  18. editar = 4
  19. deletar = 8
  20. imprimir = 16
  21. exportar = 32
  22. importar = 64
  23. limitar = 128
  24. menu = 256
  25. para cada cada bit selecionado se faz a soma dos valores.
  26. */
  27. $permissions = [
  28. [
  29. 'scope' => 'dashboard',
  30. 'description' => 'Dashboard',
  31. 'bits' => 256,
  32. 'children' => []
  33. ],
  34. [
  35. 'scope' => 'usuarios',
  36. 'description' => 'Usuários',
  37. 'descricao_detalhe' => 'Acesso aos Usuários',
  38. 'children' => []
  39. ],
  40. [
  41. 'scope' => 'processos',
  42. 'description' => 'Processos',
  43. 'bits' => 271,
  44. 'children' => [
  45. [
  46. 'scope' => 'processo_menu',
  47. 'description' => 'Menu de Processos',
  48. 'bits' => 271,
  49. ],
  50. [
  51. 'scope' => 'processo_relatorio_preliminar',
  52. 'description' => 'Relatório Preliminar',
  53. 'bits' => 271,
  54. ],
  55. [
  56. 'scope' => 'processo_acompanhamento_vistoria',
  57. 'description' => 'Acompanhamento de Vistoria',
  58. 'bits' => 271,
  59. ],
  60. // Add other child permissions here
  61. ]
  62. ]
  63. ];
  64. $this->createPermissionsAndChildren($permissions);
  65. $this->command->info('Permissions seeded successfully.');
  66. }
  67. private function createPermissionsAndChildren(array $permissions)
  68. {
  69. foreach ($permissions as $permission) {
  70. $this->permissionService->store(PermissionDto::fromArray($permission));
  71. if (isset($permission['children'])) {
  72. $this->createPermissionsAndChildren($permission['children']);
  73. }
  74. }
  75. }
  76. }