security = $security; $this->roleHierarchy = $roleHierarchy; $this->module = $module; } public function supports(string $resourceClass, string $operationName = null, array $context = []): bool { return MyProfile::class === $resourceClass; } public function getItem(string $resourceClass, $id, string $operationName = null, array $context = []): ?MyProfile { /** @var Access $access */ $access = $this->security->getUser(); $myProfile = $this->setProfileFromAccess($access); $myProfile->setRoles($this->roleHierarchy->getReachableRoleNames($this->security->getToken()->getRoleNames())); $myProfile->setModules($this->module->getOrganizationModules($access->getOrganization())); return $myProfile; } /** * @param Access $access * @return MyProfile */ public function setProfileFromAccess(Access $access): MyProfile { $myProfile = new MyProfile(); $myProfile->setId($access->getId()); $myProfile->setName($access->getPerson()->getName()); $myProfile->setGivenName($access->getPerson()->getGivenName()); return $myProfile; } }