コード例 #1
0
 /**
  * Compose the view.
  *
  * @param  \Illuminate\Contracts\View\View  $view
  */
 public function composeRolePermissions(View $view)
 {
     $permissions = $this->cacheResults('permissions.form', function () {
         return Permission::with(['group'])->orderBy('group_id', 'desc')->get();
     });
     $view->with('permissions', $permissions);
 }
コード例 #2
0
ファイル: RolesTableSeeder.php プロジェクト: arcanesoft/blog
 /**
  * Sync the roles.
  *
  * @todo: Refactor this method
  */
 private function syncRoles()
 {
     $permissions = Permission::all();
     $roles = ['blog-moderators' => 'blog.', 'blog-authors' => 'blog.posts.'];
     foreach ($roles as $roleSlug => $permissionSlug) {
         /** @var  \Arcanesoft\Auth\Models\Role  $role */
         $role = Role::where('slug', $roleSlug)->first();
         $ids = $permissions->filter(function (Permission $permission) use($permissionSlug) {
             return starts_with($permission->slug, $permissionSlug);
         })->lists('id')->toArray();
         $role->permissions()->sync($ids);
     }
 }
コード例 #3
0
 /**
  * Get the groups filters data.
  *
  * @return \Illuminate\Support\Collection
  */
 private function getFilters()
 {
     $filters = new Collection();
     foreach ($this->getCachedPermissionGroups() as $group) {
         /** @var  \Arcanesoft\Auth\Models\PermissionsGroup  $group */
         $filters->push(['name' => $group->name, 'params' => [$group->hashed_id]]);
     }
     // Custom Permission group
     //----------------------------------
     if (Permission::where('group_id', 0)->count()) {
         $filters->push(['name' => 'Custom', 'params' => [hasher()->encode(0)]]);
     }
     return $filters;
 }
コード例 #4
0
 /**
  * Sync the roles.
  *
  * @todo: Refactor this method
  */
 private function syncRoles()
 {
     /** @var \Illuminate\Database\Eloquent\Collection $permissions */
     $permissions = Permission::all();
     $roles = ['logviewer-manager' => 'foundation.logviewer.'];
     foreach ($roles as $roleSlug => $permissionSlug) {
         /** @var  \Arcanesoft\Auth\Models\Role  $role */
         $role = Role::where('slug', $roleSlug)->first();
         $ids = $permissions->filter(function (Permission $permission) use($permissionSlug) {
             return Str::startsWith($permission->slug, $permissionSlug);
         })->pluck('id')->toArray();
         $role->permissions()->sync($ids);
     }
 }
コード例 #5
0
ファイル: PermissionsRoutes.php プロジェクト: arcanesoft/auth
 /**
  * Map routes.
  *
  * @param  \Illuminate\Contracts\Routing\Registrar  $router
  */
 public function map(Registrar $router)
 {
     $this->bind('auth_permission', function ($hashedId) {
         return Permission::firstHashedOrFail($hashedId);
     });
     $this->bind('auth_permissions_group', function ($hashedId) {
         return PermissionsGroup::firstHashedOrFail($hashedId);
     });
     $this->group(['prefix' => 'permissions', 'as' => 'permissions.'], function () {
         $this->get('/', 'PermissionsController@index')->name('index');
         // auth::foundation.permissions.index
         $this->get('group/{auth_permissions_group}', 'PermissionsController@group')->name('group');
         // auth::foundation.permissions.group
         $this->group(['prefix' => '{auth_permission}'], function () {
             $this->get('/', 'PermissionsController@show')->name('show');
             // auth::foundation.permissions.show
             $this->delete('roles/{auth_role}/detach', 'PermissionsController@detachRole')->name('roles.detach');
             // auth::foundation.permissions.roles.detach
         });
     });
 }
コード例 #6
0
ファイル: RolesSeeder.php プロジェクト: arcanesoft/auth
 /**
  * Sync the admin role with all permissions.
  */
 protected function syncAdminRole()
 {
     /** @var \Arcanesoft\Auth\Models\Role $admin */
     $admin = Role::admin()->first();
     $admin->permissions()->sync(Permission::all()->pluck('id')->toArray());
 }
コード例 #7
0
ファイル: ViewComposer.php プロジェクト: arcanesoft/auth
 /**
  * Get all cached permissions.
  *
  * @return \Illuminate\Database\Eloquent\Collection
  */
 protected function getCachedPermissions()
 {
     return $this->cacheResults('permissions.all', function () {
         return Permission::all();
     });
 }
コード例 #8
0
ファイル: RoleFormRequest.php プロジェクト: ARCANESOFT/Auth
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     return ['name' => 'required|min:3', 'slug' => 'required|min:3|unique:roles,slug', 'description' => 'required|min:10', 'permissions' => 'required|array|in:' . Permission::getIds()->implode(',')];
 }