RoleSeeder.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace Database\Seeders;
  3. use Illuminate\Database\Seeder;
  4. use Itstructure\LaRbac\Models\{Role, Permission};
  5. /**
  6. * Class RoleSeeder
  7. *
  8. * @author Andrey Girnik <girnikandrey@gmail.com>
  9. */
  10. class RoleSeeder extends Seeder
  11. {
  12. /**
  13. * Run the database seeds.
  14. * @return void
  15. */
  16. public function run()
  17. {
  18. $totalPermissionId = Permission::where('slug', Permission::ADMINISTRATE_PERMISSION)->firstOrFail()->id;
  19. $viewPermissionId = Permission::where('slug', Permission::VIEW_RECORD_PERMISSION)->firstOrFail()->id;
  20. $createPermissionId = Permission::where('slug', Permission::CREATE_RECORD_PERMISSION)->firstOrFail()->id;
  21. $updatePermissionId = Permission::where('slug', Permission::UPDATE_RECORD_PERMISSION)->firstOrFail()->id;
  22. $deletePermissionId = Permission::where('slug', Permission::DELETE_RECORD_PERMISSION)->firstOrFail()->id;
  23. $publishPermissionId = Permission::where('slug', Permission::PUBLISH_RECORD_PERMISSION)->firstOrFail()->id;
  24. $this->createRecord(
  25. Role::ADMIN_ROLE,
  26. 'Administrator',
  27. [
  28. $totalPermissionId,
  29. $viewPermissionId,
  30. $createPermissionId,
  31. $updatePermissionId,
  32. $deletePermissionId,
  33. $publishPermissionId
  34. ]
  35. );
  36. $this->createRecord(
  37. Role::MANAGER_ROLE,
  38. 'Content manager',
  39. [
  40. $viewPermissionId,
  41. $createPermissionId,
  42. $updatePermissionId,
  43. $deletePermissionId,
  44. $publishPermissionId
  45. ]
  46. );
  47. $this->createRecord(
  48. Role::EDITOR_ROLE,
  49. 'Record editor',
  50. [
  51. $viewPermissionId,
  52. $createPermissionId,
  53. $updatePermissionId,
  54. $deletePermissionId,
  55. $publishPermissionId
  56. ]
  57. );
  58. $this->createRecord(
  59. Role::USER_ROLE,
  60. 'Simple user',
  61. [
  62. $viewPermissionId
  63. ]
  64. );
  65. }
  66. /**
  67. * Create role record in database.
  68. * @param string $slug
  69. * @param string $description
  70. * @param array $permissions
  71. * @return void
  72. */
  73. private function createRecord(string $slug, string $description, array $permissions): void
  74. {
  75. Role::create([
  76. 'name' => ucfirst($slug),
  77. 'slug' => $slug,
  78. 'description' => $description,
  79. ])->permissions()
  80. ->attach($permissions);
  81. }
  82. }