Esempio n. 1
0
 /**
  * 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)));
 }
Esempio n. 2
0
 /**
  * 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));
 }
Esempio n. 3
0
 /**
  * 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;
 }