PermissionsSeeder.php 2.0 KB

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