/**
  * @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;
 }
Example #3
0
 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);
     }
 }