PermissionsSeeder.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/lumen-api-starter.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. use App\Repositories\Enums\PermissionEnum;
  11. use App\Repositories\Enums\RoleEnum;
  12. use Illuminate\Database\Seeder;
  13. use Illuminate\Support\Facades\DB;
  14. use Spatie\Permission\Contracts\Permission as PermissionContract;
  15. use Spatie\Permission\Contracts\Role as RoleContract;
  16. use Spatie\Permission\PermissionRegistrar;
  17. class PermissionsSeeder extends Seeder
  18. {
  19. public function run()
  20. {
  21. app(PermissionRegistrar::class)->forgetCachedPermissions();
  22. $permissionClass = app(PermissionContract::class);
  23. $roleClass = app(RoleContract::class);
  24. DB::statement('SET FOREIGN_KEY_CHECKS = 0'); // 禁用外键约束
  25. DB::table($roleClass->getTable())->truncate();
  26. DB::table($permissionClass->getTable())->truncate();
  27. DB::statement('SET FOREIGN_KEY_CHECKS = 1'); // 启用外键约束
  28. $roles = RoleEnum::makeRoles();
  29. foreach ($roles as $item) {
  30. $roleClass->create($item);
  31. }
  32. $permissions = PermissionEnum::makePermissions();
  33. foreach ($permissions as $item) {
  34. $permissionClass::create($item);
  35. }
  36. }
  37. }