PermissionsSeeder.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace Database\Seeders;
  3. use App\Models\User;
  4. use Illuminate\Database\Seeder;
  5. use Spatie\Permission\Models\Permission;
  6. use Spatie\Permission\Models\Role;
  7. use Spatie\Permission\PermissionRegistrar;
  8. class PermissionsSeeder extends Seeder
  9. {
  10. /**
  11. * Run the database seeds.
  12. *
  13. * @return void
  14. */
  15. public function run()
  16. {
  17. // Reset cached roles and permissions.
  18. app()[PermissionRegistrar::class]->forgetCachedPermissions();
  19. $this->createPermissions();
  20. $this->createRoles();
  21. $users = User::all();
  22. foreach($users as $user){
  23. $user->assignRole(Role::findByName('user'));
  24. }
  25. $admins = User::where("role","admin")->get();
  26. foreach($admins as $admin) {
  27. $admin->syncRoles(Role::findByName('Admin'));
  28. }
  29. $mods = User::where("role","moderator")->get();
  30. foreach($mods as $mod) {
  31. $mod->syncRoles(Role::findByName('Support-Team'));
  32. }
  33. $clients = User::where("role","client")->get();
  34. foreach($clients as $client) {
  35. $client->syncRoles(Role::findByName('Client'));
  36. }
  37. }
  38. public function createPermissions()
  39. {
  40. foreach(config('permissions_web') as $permission_name => $permission_value) {
  41. Permission::create(['name' => $permission_value, 'readable_name' => $permission_name]);
  42. }
  43. }
  44. //TODO run only once
  45. public function createRoles()
  46. {
  47. $userPermissions=[
  48. 'user.server.create',
  49. 'user.server.upgrade',
  50. 'user.shop.buy',
  51. 'user.ticket.read',
  52. 'user.ticket.write',
  53. 'user.referral',
  54. ];
  55. /** @var Role $adminRole */
  56. $adminRole = Role::create(["name"=>"Admin","color"=>"#fa0000", "power"=>100]);
  57. $supportRole = Role::create(["name"=>"Support-Team","color"=>"#00b0b3","power"=>50]);
  58. $clientRole = Role::create(["name"=>"Client","color"=>"#008009","power"=>10]);
  59. $userRole = Role::create(["name"=>"User","color"=>"#0052a3","power"=>10]);
  60. $adminRole->givePermissionTo(Permission::findByName('*'));
  61. $userRole->syncPermissions($userPermissions);
  62. $clientRole->syncPermissions($userPermissions);
  63. }
  64. }