public function setPermitsAttribute($permits) { // устанавливаем новый набор прав для роли $this->setPermissions([]); if (isset($permits)) { foreach ($permits as $permitid) { $permit = \App\Permit::find($permitid); $this->addPermission($permit->slug); } } // перепрописываем отношения с таблицей permits $this->permits()->detach(); if (!$permits) { return; } if (!$this->exists) { $this->save(); } $this->permits()->attach($permits); }
/** * Update role from admin panel * * @param Request $request * @param $id * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function adminRoleUpdate(Request $request, $id) { $role = Sentinel::findRoleById($id); $allpermits = Permit::all(); foreach ($allpermits as $permit) { $role->removePermission($permit->slug)->save(); } if (isset($request->permits)) { foreach ($request->permits as $permitId) { $permit = Permit::find($permitId); $role->addPermission($permit->slug); } } $role->slug = $request->slug; $role->name = $request->name; $role->save(); $role = Role::find($role->id); $arrPermitsForRole = $request->input('permits'); $role->setPermitsAttribute($arrPermitsForRole); return Redirect('/admin/roles'); }