A role may be given various permissions.
public permissions ( ) : Illuminate\Database\Eloquent\Relations\BelongsToMany | ||
리턴 | Illuminate\Database\Eloquent\Relations\BelongsToMany |
/** * Assign permissions to role */ public function updatePermissions(Request $request, Role $role) { $permissions = $request->checkedPermissions ?: []; // $permissions = array of submitted permissions OR if all checkboxes were unchecked, make it an empty array $role->permissions()->sync($permissions); logThis('Permissions for ' . $role->label . ' changed to ' . $role->permissions()->lists('label')); return $role->load('permissions'); }
/** * Method for stroring a new role in the database. * * @param RoleRequest $request * @return mixed */ public function store(RoleRequest $request) { $role = new Role($request->all()); $role->save(); if (is_null($request->get('permissions'))) { $role->permissions()->sync([]); } else { $role->permissions()->sync($request->get('permissions')); } return redirect(route('rbac.roles.index'))->withSuccess('You have successfully created a new role.'); }
/** * Seed Data Source * * @author EB * @return void */ protected function seedDataSource() { Model::unguard(); $role = new \App\Role(); $role->name = 'rosu'; $role->display_name = 'Read Only Super User'; $role->description = 'Read only user who can see everything'; $role->save(); $permissions = ['merchants-view', 'users-view', 'roles-view', 'locations-view', 'applications-view', 'reports-view']; foreach ($permissions as $permission) { try { $perm = \App\Permission::where('name', '=', $permission)->first(); $role->permissions()->sync([$perm->id], false); } catch (Exception $e) { } } Model::reguard(); }
/** * Sync up the list of permissions * @param User $user * @param array $permissions * @return void */ private function syncPermissions(Role $role, array $permissions) { $role->permissions()->sync($permissions); }