validateLimitation() public method

Validates single Limitation.
public validateLimitation ( eZ\Publish\API\Repository\Values\User\Limitation $limitation ) : ValidationError[]
$limitation eZ\Publish\API\Repository\Values\User\Limitation
return eZ\Publish\Core\FieldType\ValidationError[]
Example #1
0
 /**
  * Assigns a role to the given user.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the authenticated user is not allowed to assign a role
  * @throws \eZ\Publish\API\Repository\Exceptions\LimitationValidationException if $roleLimitation is not valid
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If assignment already exists
  *
  * @param \eZ\Publish\API\Repository\Values\User\Role $role
  * @param \eZ\Publish\API\Repository\Values\User\User $user
  * @param \eZ\Publish\API\Repository\Values\User\Limitation\RoleLimitation $roleLimitation an optional role limitation (which is either a subtree limitation or section limitation)
  */
 public function assignRoleToUser(APIRole $role, User $user, RoleLimitation $roleLimitation = null)
 {
     if ($this->repository->canUser('role', 'assign', $user, $role) !== true) {
         throw new UnauthorizedException('role', 'assign');
     }
     if ($roleLimitation === null) {
         $limitation = null;
     } else {
         $limitationValidationErrors = $this->limitationService->validateLimitation($roleLimitation);
         if (!empty($limitationValidationErrors)) {
             throw new LimitationValidationException($limitationValidationErrors);
         }
         $limitation = array($roleLimitation->getIdentifier() => $roleLimitation->limitationValues);
     }
     // Check if objects exists
     $spiRole = $this->userHandler->loadRole($role->id);
     $spiUser = $this->userHandler->load($user->id);
     $limitation = $this->checkAssignmentAndFilterLimitationValues($spiUser->id, $spiRole, $limitation);
     $this->repository->beginTransaction();
     try {
         $this->userHandler->assignRole($spiUser->id, $spiRole->id, $limitation);
         $this->repository->commit();
     } catch (Exception $e) {
         $this->repository->rollback();
         throw $e;
     }
 }