eZ\Publish\Core\Repository\RoleService::createRole PHP Method

createRole() public method

Creates a new RoleDraft.
Since: 6.0
public createRole ( eZ\Publish\API\Repository\Values\User\RoleCreateStruct $roleCreateStruct ) : eZ\Publish\API\Repository\Values\User\RoleDraft
$roleCreateStruct eZ\Publish\API\Repository\Values\User\RoleCreateStruct
return eZ\Publish\API\Repository\Values\User\RoleDraft
    public function createRole(APIRoleCreateStruct $roleCreateStruct)
    {
        if (!is_string($roleCreateStruct->identifier) || empty($roleCreateStruct->identifier)) {
            throw new InvalidArgumentValue('identifier', $roleCreateStruct->identifier, 'RoleCreateStruct');
        }
        if ($this->repository->hasAccess('role', 'create') !== true) {
            throw new UnauthorizedException('role', 'create');
        }
        try {
            $existingRole = $this->loadRoleByIdentifier($roleCreateStruct->identifier);
            throw new InvalidArgumentException('$roleCreateStruct', "Role '{$existingRole->id}' with the specified identifier '{$roleCreateStruct->identifier}' " . 'already exists');
        } catch (APINotFoundException $e) {
            // Do nothing
        }
        $limitationValidationErrors = $this->validateRoleCreateStruct($roleCreateStruct);
        if (!empty($limitationValidationErrors)) {
            throw new LimitationValidationException($limitationValidationErrors);
        }
        $spiRoleCreateStruct = $this->roleDomainMapper->buildPersistenceRoleCreateStruct($roleCreateStruct);
        $this->repository->beginTransaction();
        try {
            $spiRole = $this->userHandler->createRole($spiRoleCreateStruct);
            $this->repository->commit();
        } catch (Exception $e) {
            $this->repository->rollback();
            throw $e;
        }
        return $this->roleDomainMapper->buildDomainRoleDraftObject($spiRole);
    }