public function updateUserContext(UserContext $context)
{
$user = $this->repository->getCurrentUser();
/** @var \eZ\Publish\API\Repository\Values\User\RoleAssignment[] $roleAssignments */
$roleAssignments = $this->repository->sudo(function (Repository $repository) use($user) {
return $repository->getRoleService()->getRoleAssignmentsForUser($user, true);
});
$roleIds = array();
$limitationValues = array();
/** @var UserRoleAssignment $roleAssignment */
foreach ($roleAssignments as $roleAssignment) {
$roleId = $roleAssignment->getRole()->id;
$roleIds[] = $roleId;
$limitation = $roleAssignment->getRoleLimitation();
// If a limitation is present, store the limitation values by roleId
if ($limitation !== null) {
$limitationValuesKey = sprintf('%s-%s', $roleId, $limitation->getIdentifier());
$limitationValues[$limitationValuesKey] = array();
foreach ($limitation->limitationValues as $value) {
$limitationValues[$limitationValuesKey][] = $value;
}
}
}
$context->addParameter('roleIdList', $roleIds);
$context->addParameter('roleLimitationList', $limitationValues);
}