/** * @param Request $request * @return array */ private function getRequiredUserRolesForRequest(Request $request) { $patterns = $this->accessMap->getPatterns($request); if ($patterns && is_array($patterns) && is_array($patterns[0])) { return $patterns[0]; } return []; }
public function handle(Request $request, AccessDeniedException $accessDeniedException) { list($roles, $channel) = $this->accessMap->getPatterns($request); if ($this->securityChecker->isGranted('IS_AUTHENTICATED_REMEMBERED')) { //non anonymous user //check if the resource request has IS_ANONYMOUS //if so redirect to dashboard foreach ($roles as $role) { if ($role == 'IS_ANONYMOUS') { return new RedirectResponse($this->router->generate('dashboard')); } } } return null; }
private function checkAccessCallback($url) { $retval = false; $request = Request::create($url); list($roles, $channels) = $this->accessMap->getPatterns($request); if (count($roles) == 0) { $retval = true; } else { foreach ($roles as $role) { if ($this->sec->isGranted($role)) { $retval = true; break; } } } return $retval; }
/** * @param \Symfony\Component\Security\Http\Event\InteractiveLoginEvent $event */ public function onSecurityInteractiveLogin(InteractiveLoginEvent $event) { $request = $event->getRequest(); if (!($locale = $event->getAuthenticationToken()->getUser()->getLocale())) { $locale = $this->defaultLocale; } $patterns = $this->accessMap->getPatterns($request); //Set backend language to exactly user language settings (if it exists or not) $request->getSession()->set('admin/_locale', $locale); // If user language does not exist in frontend website, get next best $frontendLocale = $this->guessFrontendLocale($locale); if (in_array('ROLE_ADMIN', $patterns[0])) { $request->setLocale($locale); } else { $request->setLocale($frontendLocale); } }