/**
  * Generates the user hash
  *
  * @return string
  */
 public function generate()
 {
     foreach ($this->getIdentityDefiners() as $identityDefiner) {
         $identityDefiner->setIdentity($this->userIdentity);
     }
     return $this->userIdentity->getHash();
 }
Esempio n. 2
0
 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));
 }