/**
  * @param Collection $currentPermissions
  */
 public static function syncPermissions(Collection $currentPermissions)
 {
     $currentPermissions = $currentPermissions->groupBy('module')->transform(function ($module, $key) {
         $groups = $module->groupBy('group');
         $groups->transform(function ($group, $key) {
             return $group->pluck('action');
         });
         return $groups;
     })->toArray();
     foreach (static::$availablePermissions as $module => $groups) {
         foreach ($groups as $group => $actions) {
             if (!isset($currentPermissions[$module][$group])) {
                 $oldPermissions = [];
                 $newPermissions = $actions;
             } else {
                 $oldPermissions = array_diff($currentPermissions[$module][$group], $actions);
                 $newPermissions = array_diff($actions, $currentPermissions[$module][$group]);
             }
             foreach ($newPermissions as $action) {
                 $permission = new Permission();
                 $permission->module = $module;
                 $permission->group = $group;
                 $permission->action = $action;
                 $permission->save();
             }
             foreach ($oldPermissions as $action) {
                 Permission::where(['action' => $action, 'module' => $module, 'group' => $group])->delete();
             }
         }
     }
 }
 public function register()
 {
     $this->registerAliases(['Frontpage' => Frontpage::class, 'Block' => BlockFacade::class]);
     $this->registerProviders([BladeServiceProvider::class, EventServiceProvider::class]);
     $this->registerConsoleCommand(RebuildLayoutBlocksCommand::class);
     Permission::register('pages', 'page', ['reorder', 'list', 'edit', 'create', 'delete']);
     Permission::register('pages', 'layout', ['add', 'list', 'rebuild', 'edit', 'view', 'delete']);
     Permission::register('pages', 'part', ['reorder', 'list', 'create', 'delete']);
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     Role::truncate();
     Permission::truncate();
     \DB::table('permission_role')->truncate();
     $roles = [['name' => 'login', 'label' => 'Login privileges, granted after account confirmation.'], ['name' => 'administrator', 'label' => 'Administrative user, has access to everything.'], ['name' => 'developer', 'label' => '']];
     foreach ($roles as $data) {
         Role::create($data);
     }
 }
 /**
  * @param UserRoleRepository $repository
  * @param int                $id
  */
 public function getEdit(UserRoleRepository $repository, $id)
 {
     /** @var Role $role */
     $role = $repository->findOrFail($id);
     $this->setTitle(trans($this->wrapNamespace('role.title.edit'), ['name' => ucfirst($role->name)]));
     $permissions = Permission::get()->groupBy('module_label')->transform(function ($modules) {
         return $modules->groupBy('group_label');
     });
     $selectedPermissions = $role->permissions->pluck('id')->all();
     $users = $role->users()->with('roles')->paginate();
     $this->setContent('roles.edit', compact('role', 'permissions', 'selectedPermissions', 'users'));
 }
 /**
  * Fetch the collection of site permissions.
  *
  * @return \Illuminate\Database\Eloquent\Collection
  */
 protected function getPermissions()
 {
     $permissions = Permission::with('roles')->get();
     Permission::syncPermissions($permissions);
     return $permissions;
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     Permission::register('plugins', 'plugin', ['change_status', 'list', 'view_settings']);
 }
 private function registerPermissions()
 {
     Permission::register('cms', 'system', ['view_phpinfo', 'view_about', 'view_settings']);
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     Permission::register('filemanager', 'filemanager', ['view']);
 }
 public function register()
 {
     $this->registerAliases(['RouteAPI' => \KodiCMS\API\RouteApiFacade::class]);
     Permission::register('api', 'api', ['view_keys', 'refresh_key', 'create_keys', 'delete_keys']);
 }
 private function registerPermissions()
 {
     Permission::register('widgets', 'widget', ['list', 'add', 'delete', 'edit']);
     Permission::register('widgets', 'widget_settings', ['cache', 'roles', 'location']);
     Permission::register('widgets', 'snippet', ['add', 'edit', 'list', 'view', 'delete']);
 }
 private function registerPermissions()
 {
     Permission::register('dashboard', 'dashboard', ['manage']);
 }