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

assignRoleToUser() public method

Assigns a role to the given user.
public assignRoleToUser ( eZ\Publish\API\Repository\Values\User\Role $role, eZ\Publish\API\Repository\Values\User\User $user, eZ\Publish\API\Repository\Values\User\Limitation\RoleLimitation $roleLimitation = null )
$role eZ\Publish\API\Repository\Values\User\Role
$user eZ\Publish\API\Repository\Values\User\User
$roleLimitation eZ\Publish\API\Repository\Values\User\Limitation\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;
        }
    }