/** * Generates the user hash * * @return string */ public function generate() { foreach ($this->getIdentityDefiners() as $identityDefiner) { $identityDefiner->setIdentity($this->userIdentity); } return $this->userIdentity->getHash(); }
public function setIdentity(Identity $identity) { $user = $this->repository->getCurrentUser(); $roleAssignments = $this->repository->sudo(function ($repository) use($user) { return $repository->getRoleService()->getRoleAssignmentsForUser($user, true); }); $roleIds = array(); $limitationValues = array(); /** @var UserRoleAssignment $roleAssignment */ foreach ($roleAssignments as $roleAssignment) { $roleIds[] = $roleAssignment->role->id; // If a limitation is present, store the limitation values by roleId if ($roleAssignment->limitation !== null) { $limitationValuesKey = "{$roleAssignment->role->id}-" . $roleAssignment->limitation->getIdentifier(); $limitationValues[$limitationValuesKey] = array(); foreach ($roleAssignment->limitation->limitationValues as $value) { $limitationValues[$limitationValuesKey][] = $value; } } } $identity->setInformation('roleIdList', implode('|', $roleIds)); // Flatten each limitation values to a string and then store it as Identity information $limitationValuesFlattened = array(); foreach ($limitationValues as $roleId => $limitationArray) { $limitationValuesFlattened[] = "{$roleId}:" . implode('|', $limitationArray); } $identity->setInformation('roleLimitationList', implode(',', $limitationValuesFlattened)); }