'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); //administrator不受Gate限制 Gate::before(function($user, $ability) { /** @var \App\User $user */ if($user->hasRole('administrator')) { return true; } }); try { // Register all permissions as gate ability $allPermissions = Permission::all(); foreach ($allPermissions as $permission) { /** @var Permission $permission */ $permissionName = $permission->name; $gateName = 'permission:' . Str::kebab($permissionName); Gate::define($gateName, function ($user) use ($permissionName) { /** @var \App\User $user */ return $user->hasPermissionTo($permissionName); }); } // Register all roles as gate ability $allRoles = Role::all(); foreach ($allRoles as $role) { /** @var Role $permission */ $roleName = $role->name; $gateName = 'role:' . Str::kebab($roleName); Gate::define($gateName, function ($user) use ($roleName) { /** @var \App\User $user */ return $user->hasRole($roleName); }); } } catch (\Exception $e) {} } }