/** * Vote to see if $user can act on the user $subject * $user can do it if $subject is in a group depending on $user * * @param UserInterface $subject * @param UserInterface $user * * @return bool */ protected function voteForUser(UserInterface $subject, UserInterface $user) { foreach ($subject->getGroups() as $group) { if ($this->canActOnSite($group->getSite()->getSiteId(), $user)) { return true; } } return false; }
/** * Check if $subjectKey is in an allowed perimeter to $user * The perimeter to check is of $entityType * * @param string $subjectKey * @param UserInterface $user * @param string $entityType * * @return bool */ protected function isSubjectInPerimeter($subjectKey, UserInterface $user, $entityType) { foreach ($user->getGroups() as $group) { $perimeter = $group->getPerimeter($entityType); if ($perimeter instanceof PerimeterInterface && $this->perimeterManager->isInPerimeter($subjectKey, $perimeter)) { return true; } } return false; }
/** * @param Request $request * @param UserInterface $user * * @return UserInterface */ protected function refreshLanguagesByAliases(UserInterface $user) { $sites = array(); $siteIds = array(); if ($user->isSuperAdmin()) { $sites = $this->container->get('open_orchestra_model.repository.site')->findByDeleted(false); } else { foreach ($user->getGroups() as $group) { /** @var SiteInterface $site */ $site = $group->getSite(); if (!$site->isDeleted() && !in_array($site->getSiteId(), $siteIds)) { $siteIds[] = $site->getSiteId(); $sites[] = $site; } } } foreach ($sites as $site) { if (!$user->hasLanguageBySite($site->getSiteId())) { $user->setLanguageBySite($site->getSiteId(), $site->getDefaultLanguage()); } } return $user; }