/** * Adds a policy to role. * * @param $roleId int ID of a role or a role draft * * @return \eZ\Publish\Core\REST\Server\Values\CreatedPolicy */ public function addPolicy($roleId, Request $request) { $createStruct = $this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type')), $request->getContent())); try { // First try to treat $roleId as a role draft ID. $role = $this->roleService->addPolicyByRoleDraft($this->roleService->loadRoleDraft($roleId), $createStruct); } catch (NotFoundException $e) { // Then try to treat $roleId as a role ID. $role = $this->roleService->addPolicy($this->roleService->loadRole($roleId), $createStruct); } catch (LimitationValidationException $e) { throw new BadRequestException($e->getMessage()); } return new Values\CreatedPolicy(array('policy' => $this->getLastAddedPolicy($role))); }
/** * Adds a policy to role * * @param $roleId * * @return \eZ\Publish\Core\REST\Server\Values\CreatedPolicy */ public function addPolicy($roleId) { $createStruct = $this->inputDispatcher->parse(new Message(array('Content-Type' => $this->request->headers->get('Content-Type')), $this->request->getContent())); try { $role = $this->roleService->addPolicy($this->roleService->loadRole($roleId), $createStruct); } catch (LimitationValidationException $e) { throw new BadRequestException($e->getMessage()); } $policies = $role->getPolicies(); $policyToReturn = $policies[0]; for ($i = 1, $count = count($policies); $i < $count; $i++) { if ($policies[$i]->id > $policyToReturn->id) { $policyToReturn = $policies[$i]; } } return new Values\CreatedPolicy(array('policy' => $policyToReturn)); }
/** * Adds a new policy to the role. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the authenticated user is not allowed to add a policy * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if limitation of the same type is repeated in policy create * struct or if limitation is not allowed on module/function * @throws \eZ\Publish\API\Repository\Exceptions\LimitationValidationException if a limitation in the $policyCreateStruct is not valid * * @param \eZ\Publish\API\Repository\Values\User\Role $role * @param \eZ\Publish\API\Repository\Values\User\PolicyCreateStruct $policyCreateStruct * * @return \eZ\Publish\API\Repository\Values\User\Role */ public function addPolicy(Role $role, PolicyCreateStruct $policyCreateStruct) { $returnValue = $this->service->addPolicy($role, $policyCreateStruct); $this->signalDispatcher->emit(new AddPolicySignal(array('roleId' => $role->id, 'policyId' => $returnValue->id))); return $returnValue; }