/** * @param $id * @param $input * @param $roles * @return bool * @throws GeneralException */ public function update($id, $input, $roles) { $permission = $this->findOrThrowException($id); $permission->name = $input['name']; $permission->display_name = $input['display_name']; $permission->system = isset($input['system']) ? 1 : 0; $permission->group_id = isset($input['group']) && strlen($input['group']) > 0 ? (int) $input['group'] : null; $permission->sort = isset($input['sort']) ? (int) $input['sort'] : 0; //See if this permission is tied directly to a user first if (count($permission->users) > 0) { throw new GeneralException('This permission is currently tied directly to one or more users and can not be assigned to a role.'); } if ($permission->save()) { //Detach permission from every role, then add the permission to the selected roles $currentRoles = $this->roles->getAllRoles(); foreach ($currentRoles as $role) { $role->detachPermission($permission); } if (count($roles['permission_roles']) > 0) { //For each role, load role, collect perms, add perm to perms, flush perms, read perms foreach ($roles['permission_roles'] as $role_id) { //Get the role, with permissions $role = $this->roles->findOrThrowException($role_id, true); //Get the roles permissions into an array $role_permissions = $role->permissions->lists('id')->all(); if (count($role_permissions) >= 1) { //Role has permissions, gather them first //Add this new permission id to the role array_push($role_permissions, $permission->id); //For some reason the lists() casts as a string, convert all to int $role_permissions_temp = array(); foreach ($role_permissions as $rp) { array_push($role_permissions_temp, (int) $rp); } $role_permissions = $role_permissions_temp; //Sync the permissions to the role $role->permissions()->sync($role_permissions); } else { //Role has no permissions, add the 1 $role->permissions()->sync([$permission->id]); } } } //Add the dependencies of this permission if any if (isset($input['dependencies']) && count($input['dependencies'])) { //Remove all current dependencies $this->dependencies->clear($permission->id); //Add the currently checked dependencies foreach ($input['dependencies'] as $dependency_id) { $this->dependencies->create($permission->id, $dependency_id); } } else { //None checked, remove any if they were there prior $this->dependencies->clear($permission->id); } return true; } throw new GeneralException("There was a problem updating this permission. Please try again."); }
/** * @param $id * @param $input * @param $roles * @throws GeneralException * @return bool */ public function update($id, $input, $roles) { $permission = $this->findOrThrowException($id); $permission->name = $input['name']; $permission->display_name = $input['display_name']; $permission->system = isset($input['system']) ? 1 : 0; $permission->group_id = isset($input['group']) && strlen($input['group']) > 0 ? (int) $input['group'] : null; $permission->sort = isset($input['sort']) ? (int) $input['sort'] : 0; if ($permission->save()) { //Detach permission from every role, then add the permission to the selected roles $currentRoles = $this->roles->getAllRoles(); foreach ($currentRoles as $role) { $role->detachPermission($permission); } if (count($roles['permission_roles']) > 0) { //For each role, load role, collect perms, add perm to perms, flush perms, read perms foreach ($roles['permission_roles'] as $role_id) { //Get the role, with permissions $role = $this->roles->findOrThrowException($role_id, true); //Get the roles permissions into an array $role_permissions = $role->permissions->lists('id')->all(); if (count($role_permissions) >= 1) { //Role has permissions, gather them first //Add this new permission id to the role array_push($role_permissions, $permission->id); //For some reason the lists() casts as a string, convert all to int $role_permissions_temp = array(); foreach ($role_permissions as $rp) { array_push($role_permissions_temp, (int) $rp); } $role_permissions = $role_permissions_temp; //Sync the permissions to the role $role->permissions()->sync($role_permissions); } else { //Role has no permissions, add the 1 $role->permissions()->sync([$permission->id]); } } } //Add the dependencies of this permission if any if (isset($input['dependencies']) && count($input['dependencies'])) { //Remove all current dependencies $this->dependencies->clear($permission->id); //Add the currently checked dependencies foreach ($input['dependencies'] as $dependency_id) { $this->dependencies->create($permission->id, $dependency_id); } } else { $this->dependencies->clear($permission->id); } return true; } throw new GeneralException(trans('exceptions.backend.access.permissions.update_error')); }
/** * @return mixed */ public function search() { $query = Input::get('q'); $order_by = null !== Input::get('field') ? Input::get('field') : 'id'; $sort = null !== Input::get('sort') ? Input::get('sort') : 'asc'; $user = $this->users->searchUsers($query, true, $order_by, $sort); $total = $user->count(); $pageName = 'page'; $per_page = config('access.users.default_per_page'); $page = null; //Create custom pagination $users = new LengthAwarePaginator($user, $total, $per_page, $page, ['path' => Paginator::resolveCurrentPath(), 'pageName' => $pageName]); if ($users->count() == 0) { return redirect()->route('admin.access.users.index')->withFlashDanger('Your search term "' . $query . '" not found!'); } return view('backend.access.index', compact('users'))->withRoles($this->roles->getAllRoles('id', 'asc', true)); }
/** * @param $id * @param EditUserRequest $request * @return mixed */ public function edit($id, EditUserRequest $request) { $user = $this->users->findOrThrowException($id, true); return view('backend.access.edit')->withUser($user)->withUserRoles($user->roles->lists('id')->all())->withRoles($this->roles->getAllRoles('sort', 'asc', true))->withUserPermissions($user->permissions->lists('id')->all())->withPermissions($this->permissions->getAllPermissions()); }
/** * @param $id * @return mixed */ public function edit($id) { $permission = $this->permissions->findOrThrowException($id, true); return view('backend.access.roles.permissions.edit')->withPermission($permission)->withPermissionRoles($permission->roles->lists('id')->all())->withRoles($this->roles->getAllRoles()); }
/** * @param $id * @return mixed */ public function edit($id) { $user = $this->users->findOrThrowException($id, true); return view('backend.access.edit')->withUser($user)->withUserRoles($user->roles->lists('id')->all())->withRoles($this->roles->getAllRoles('id', 'asc', true))->withUserPermissions($user->permissions->lists('id')->all())->withPermissions($this->permissions->getPermissionsNotAssociatedWithRole()); }
/** * @param $id * @param EditPermissionRequest $request * * @return mixed */ public function edit($id, EditPermissionRequest $request) { $permission = $this->permissions->findOrThrowException($id, true); return view('backend.access.roles.permissions.edit')->withPermission($permission)->withPermissionRoles($permission->roles->lists('id')->all())->withGroups($this->groups->getAllGroups(true))->withRoles($this->roles->getAllRoles())->withPermissions($this->permissions->getAllPermissions())->withPermissionDependencies($permission->dependencies->lists('dependency_id')->all()); }