Ejemplo n.º 1
0
 public function deletePolicyAction(Request $request, $roleId, $policyId)
 {
     $role = $this->roleService->loadRole($roleId);
     $deleteForm = $this->createForm(new PolicyDeleteType(), ['policyId' => $policyId, 'roleId' => $roleId]);
     $deleteForm->handleRequest($request);
     if ($deleteForm->isValid()) {
         try {
             $roleDraft = $this->roleService->loadRoleDraftByRoleId($roleId);
         } catch (NotFoundException $e) {
             // The draft doesn't exist, let's create one
             $roleDraft = $this->roleService->createRoleDraft($role);
         }
         $foundPolicy = false;
         /** @var PolicyDraft $policy */
         foreach ($roleDraft->getPolicies() as $policy) {
             if ($policy->originalId == $policyId) {
                 $foundPolicy = true;
                 break;
             }
         }
         if (!$foundPolicy) {
             throw new BadRequestHttpException($this->translator->trans('role.error.policy_not_found', ['%policyId%' => $policyId, '%roleId%' => $roleId], 'role'));
         }
         $this->roleService->removePolicyByRoleDraft($roleDraft, $policy);
         $this->roleService->publishRoleDraft($roleDraft);
         $this->notify('role.policy.deleted', ['%roleIdentifier%' => $role->identifier, '%policyId%' => $policyId], 'role');
     } elseif ($deleteForm->isSubmitted()) {
         $this->notifyError('role.policy.error.delete', ['%roleIdentifier%' => $role->identifier, '%policyId%' => $policyId], 'role');
     }
     return $this->redirectToRouteAfterFormPost('admin_roleView', ['roleId' => $roleId]);
 }
 public function processRemoveDraft(FormActionEvent $event)
 {
     /** @var \EzSystems\RepositoryForms\Data\Role\PolicyCreateData|\EzSystems\RepositoryForms\Data\Role\PolicyUpdateData $data */
     $data = $event->getData();
     if (!$data->isNew()) {
         $this->roleService->removePolicyByRoleDraft($data->roleDraft, $data->policyDraft);
     }
     $this->roleService->deleteRoleDraft($data->roleDraft);
 }
Ejemplo n.º 3
0
 /**
  * Remove a policy from a role draft.
  *
  * @since 6.2
  * @deprecated since 6.3, use {@see deletePolicy}
  *
  * @param $roleId
  * @param $policyId
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\NotFoundException
  *
  * @return \eZ\Publish\Core\REST\Server\Values\NoContent
  */
 public function removePolicyByRoleDraft($roleId, $policyId, Request $request)
 {
     $roleDraft = $this->roleService->loadRoleDraft($roleId);
     $policy = null;
     foreach ($roleDraft->getPolicies() as $rolePolicy) {
         if ($rolePolicy->id == $policyId) {
             $policy = $rolePolicy;
             break;
         }
     }
     if ($policy !== null) {
         $this->roleService->removePolicyByRoleDraft($roleDraft, $policy);
         return new Values\NoContent();
     }
     throw new Exceptions\NotFoundException("Policy not found: '{$request->getPathInfo()}'.");
 }
Ejemplo n.º 4
0
 /**
  * Removes a policy from a role draft.
  *
  * @since 6.0
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the authenticated user is not allowed to remove a policy
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if policy does not belong to the given role draft
  *
  * @param \eZ\Publish\API\Repository\Values\User\RoleDraft $roleDraft
  * @param \eZ\Publish\API\Repository\Values\User\Policy $policy the policy to remove from the role
  *
  * @return \eZ\Publish\API\Repository\Values\User\RoleDraft the updated role
  */
 public function removePolicyByRoleDraft(RoleDraft $roleDraft, Policy $policy)
 {
     $returnValue = $this->service->removePolicyByRoleDraft($roleDraft, $policy);
     $this->signalDispatcher->emit(new RemovePolicyByRoleDraftSignal(array('roleId' => $roleDraft->id, 'policyId' => $policy->id)));
     return $returnValue;
 }