public function handle(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     $session = $request->getSession();
     $bag_configuration = new BagConfiguration();
     if ($session->getBag($bag_configuration->getNamespace(BagManagerConfigurationInterface::ATTRIBUTE_NAMESPACE))->has('sfGuardSecurityUser')) {
         $sf1_guard_security_user = $session->getBag($bag_configuration->getNamespace(BagManagerConfigurationInterface::ATTRIBUTE_NAMESPACE))->get('sfGuardSecurityUser');
         $username = $sf1_guard_security_user['username'];
         $token = new MinisterioUserBridgeToken();
         $token->setUser($username);
         try {
             $authToken = $this->authenticationManager->authenticate($token);
             $this->tokenStorage->setToken($authToken);
             $event->getDispatcher()->dispatch(self::AUTHENTICATED_EVENT, new MinisterioUserBridgeAuthenticatedEvent($authToken));
             return;
         } catch (AuthenticationException $failed) {
             // ... you might log something here
             // To deny the authentication clear the token. This will redirect to the login page.
             // Make sure to only clear your token, not those of other authentication listeners.
             // $token = $this->tokenStorage->getToken();
             // if ($token instanceof WsseUserToken && $this->providerKey === $token->getProviderKey()) {
             //     $this->tokenStorage->setToken(null);
             // }
             // return;
         }
     }
     // By default deny authorization
     $response = new Response("", Response::HTTP_TEMPORARY_REDIRECT, array("Location" => $this->container->getParameter('logout_url')));
     $event->setResponse($response);
 }
コード例 #2
0
ファイル: HttpListener.php プロジェクト: zenmagick/zenmagick
 public function onKernelRequest(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     // If we have a somebody elses controller, just exit (for now)
     $controller = $request->attributes->get('_controller');
     if (false === strpos($controller, 'ZenMagick')) {
         return;
     }
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     $dispatcher = $event->getDispatcher();
     $request->getSession()->restorePersistedServices();
     $dispatcher->dispatch('request_ready', new GenericEvent($this, array('request' => $request)));
     $dispatcher->dispatch('container_ready', new GenericEvent($this, array('request' => $request)));
     $this->container->get('sacsManager')->authorize($request, $request->getRequestId(), $request->getAccount());
     foreach ($this->container->get('containerTagService')->findTaggedServiceIds('zenmagick.http.session.validator') as $id => $args) {
         if (null != ($validator = $this->container->get($id)) && $validator instanceof SessionValidator) {
             $session = $request->getSession();
             if (!$validator->isValidSession($request, $session)) {
                 $session->getFlashBag()->error('Invalid session');
                 $session->migrate();
                 $event->setResponse(new RedirectResponse($request->server->get('HTTP_REFERER')));
             }
         }
     }
 }
コード例 #3
0
 public function handle(GetResponseEvent $event)
 {
     $request = $event->getRequest();
     $token = $this->_context->getToken();
     $errmsg = '';
     if (null !== $request->request->get('login') && null !== $request->request->get('password')) {
         $token = new UsernamePasswordToken($request->request->get('login'), $request->request->get('password'));
         $token->setUser($request->request->get('login'), $request->request->get('password'));
         try {
             $token = $this->_authenticationManager->authenticate($token);
             if (null !== $this->_logger) {
                 $this->_logger->info(sprintf('Authentication request succeed for user "%s"', $token->getUsername()));
             }
         } catch (\Symfony\Component\Security\Core\Exception\AuthenticationException $e) {
             $event->getDispatcher()->dispatch(\Symfony\Component\Security\Core\AuthenticationEvents::AUTHENTICATION_FAILURE, new \Symfony\Component\Security\Core\Event\AuthenticationFailureEvent($token, $e));
             $errmsg = $e->getMessage();
             if (null !== $this->_logger) {
                 $this->_logger->info(sprintf('Authentication request failed for user "%s": %s', $token->getUsername(), $e->getMessage()));
             }
         } catch (\Exception $e) {
             $errmsg = $e->getMessage();
             if (null !== $this->_logger) {
                 $this->_logger->info(sprintf('Authentication request failed for user "%s": %s', $token->getUsername(), $e->getMessage()));
             }
         }
     }
     if (is_a($token, 'BackBee\\Security\\Token\\UsernamePasswordToken') && $errmsg != '') {
         if (null !== $this->_login_path) {
             if (preg_match('/%(.*)%/s', $this->_login_path, $matches)) {
                 if ($this->_context->getApplication()->getContainer()->hasParameter($matches[1])) {
                     $this->_login_path = $this->_context->getApplication()->getContainer()->getParameter($matches[1]);
                 }
             }
             $redirect = $request->query->get('redirect');
             if (null === $redirect) {
                 $redirect = $request->request->get('redirect', '');
             }
             if ('' === $redirect) {
                 $redirect = $request->getPathInfo();
             }
             if (null !== ($qs = $request->getQueryString())) {
                 $redirect .= '?' . $qs;
             }
             $response = new RedirectResponse($event->getRequest()->getUriForPath($this->_login_path . '?redirect=' . urlencode($redirect) . '&errmsg=' . urlencode($errmsg) . '&login='******'login'))));
             $event->setResponse($response);
             return;
         }
         $response = new Response();
         $response->setStatusCode(403);
         $event->setResponse($response);
     }
     if (null !== $token && is_a($token, 'BackBee\\Security\\Token\\UsernamePasswordToken')) {
         $this->_context->setToken($token);
         if ($request->request->get('redirect')) {
             $response = new RedirectResponse($request->getBaseUrl() . $request->request->get('redirect'));
             $event->setResponse($response);
         }
     }
 }
コード例 #4
0
ファイル: RequestListener.php プロジェクト: nirnanaaa/xlix
 public function onKernelRequest(GetResponseEvent $event)
 {
     //$logger = $event->
     $dispatcher = $event->getDispatcher();
     $ofwnGateway = new Ofwn\OfwnGateway();
     if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
         $ofwnGateway->handleRequest($event, $this->router);
         // $dispatcher->addListener('kernel.request', array($ofwnGateway, 'handleRequest'), 999);
     }
 }
コード例 #5
0
 public function rememberMeLoader(GetResponseEvent $event)
 {
     /** @var \Thelia\Core\HttpFoundation\Request $request */
     $request = $event->getRequest();
     /** @var \Thelia\Core\HttpFoundation\Session\Session $session */
     $session = $request->getSession();
     if (null === $session->getCustomerUser()) {
         // Check customer remember me token
         $this->getRememberMeCustomer($request, $session, $event->getDispatcher());
     }
     // Check admin remember me token
     if (null === $session->getAdminUser()) {
         $this->getRememberMeAdmin($request, $session);
     }
 }
コード例 #6
0
 public function onKernelRequest(GetResponseEvent $event)
 {
     /* @var $request \Symfony\Component\HttpFoundation\Request */
     $request = $event->getRequest();
     if ($request->attributes->has('hasGrid')) {
         if ($request->isMethod('POST')) {
             $data = array();
             foreach ($this->fields as $field) {
                 if ($request->request->has($field)) {
                     $data[$field] = $request->request->get($field);
                 }
             }
             $executeEvent = new DataGridEvent();
             $executeEvent->setData($data);
             $event->getDispatcher()->dispatch('grid.event', $executeEvent);
             if ($request->isXmlHttpRequest()) {
                 $response = new JsonResponse(array('post' => $_POST, 'success' => true));
                 //                    $event->setResponse($response);
             }
         }
     }
 }
コード例 #7
0
 /**
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->getRequest()->headers->has('link')) {
         return;
     }
     $links = array();
     $header = $event->getRequest()->headers->get('link');
     /*
      * Due to limitations, multiple same-name headers are sent as comma
      * separated values.
      *
      * This breaks those headers into Link headers following the format
      * http://tools.ietf.org/html/rfc2068#section-19.6.2.4
      */
     while (preg_match('/^((?:[^"]|"[^"]*")*?),/', $header, $matches)) {
         $header = trim(substr($header, strlen($matches[0])));
         $links[] = $matches[1];
     }
     if ($header) {
         $links[] = $header;
     }
     $requestMethod = $this->urlMatcher->getContext()->getMethod();
     // The controller resolver needs a request to resolve the controller.
     $stubRequest = new Request();
     foreach ($links as $idx => $link) {
         // Force the GET method to avoid the use of the
         // previous method (LINK/UNLINK)
         $this->urlMatcher->getContext()->setMethod('GET');
         $linkParams = explode(';', trim($link));
         $resourceType = null;
         if (count($linkParams) > 1) {
             $resourceType = trim(preg_replace('/<|>/', '', $linkParams[1]));
             $resourceType = str_replace("\"", "", str_replace("rel=", "", $resourceType));
         }
         $resource = array_shift($linkParams);
         $resource = preg_replace('/<|>/', '', $resource);
         $tempRequest = Request::create($resource);
         try {
             $route = $this->urlMatcher->match($tempRequest->getRequestUri());
         } catch (\Exception $e) {
             // If we don't have a matching route we return the original Link header
             continue;
         }
         if (strpos($route['_route'], 'newscoop_gimme_') === false) {
             return;
         }
         $stubRequest->attributes->replace($route);
         $stubRequest->server = $event->getRequest()->server;
         if (false === ($controller = $this->resolver->getController($stubRequest))) {
             continue;
         }
         $subEvent = new FilterControllerEvent($event->getKernel(), $controller, $stubRequest, HttpKernelInterface::SUB_REQUEST);
         $kernelSubEvent = new GetResponseEvent($event->getKernel(), $stubRequest, HttpKernelInterface::SUB_REQUEST);
         $event->getDispatcher()->dispatch(KernelEvents::REQUEST, $kernelSubEvent);
         $event->getDispatcher()->dispatch(KernelEvents::CONTROLLER, $subEvent);
         $controller = $subEvent->getController();
         $arguments = $this->resolver->getArguments($stubRequest, $controller);
         try {
             $result = call_user_func_array($controller, $arguments);
             // Our api returns objects for single resources
             if (!is_object($result)) {
                 continue;
             }
             $links[$idx] = array('object' => $result, 'resourceType' => $resourceType);
         } catch (\Exception $e) {
             $links[$idx] = array('object' => $e, 'resourceType' => 'exception');
             continue;
         }
     }
     $event->getRequest()->attributes->set('links', $links);
     $this->urlMatcher->getContext()->setMethod($requestMethod);
 }
コード例 #8
0
ファイル: InitListener.php プロジェクト: planetenkiller/core
 /**
  * Initialise Zikula.
  *
  * Carries out a number of initialisation tasks to get Zikula up and
  * running.
  *
  * @param integer $stage Stage to load.
  *
  * @return boolean True initialisation successful false otherwise.
  */
 public function onInit(GetResponseEvent $event)
 {
     if ($event->getRequestType() === HttpKernelInterface::SUB_REQUEST) {
         return;
     }
     $this->dispatcher = $event->getDispatcher();
     $this->stage = $stage = self::STAGE_ALL;
     $coreInitEvent = new GenericEvent($this);
     $coreInitEvent['request'] = $event->getRequest();
     // store the load stages in a global so other API's can check whats loaded
     $this->dispatcher->dispatch(CoreEvents::PREINIT, new GenericEvent($this));
     //        // Initialise and load configuration
     //        if ($stage & self::STAGE_CONFIG) {
     //            // error reporting
     //            if (!\System::isInstalling()) {
     //                // this is here because it depends on the config.php loading.
     //                $event = new GenericEvent(null, array('stage' => $stage));
     //                $this->dispatcher->dispatch(CoreEvents::ERRORREPORTING, $event);
     //            }
     //
     //            // initialise custom event listeners from config.php settings
     //            $coreInitEvent->setArg('stage', self::STAGE_CONFIG);
     //            $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     //        }
     //        // Check that Zikula is installed before continuing
     //        if (\System::getVar('installed') == 0 && !\System::isInstalling()) {
     //            $response = new RedirectResponse(\System::getBaseUrl().'install.php?notinstalled');
     //            $response->send();
     //            \System::shutdown();
     //        }
     if ($stage & self::STAGE_DB) {
         try {
             $dbEvent = new GenericEvent();
             $this->dispatcher->dispatch('doctrine.init_connection', $dbEvent);
             $dbEvent = new GenericEvent($this, array('stage' => self::STAGE_DB));
             $this->dispatcher->dispatch(CoreEvents::INIT, $dbEvent);
         } catch (\PDOException $e) {
             if (!\System::isInstalling()) {
                 header('HTTP/1.1 503 Service Unavailable');
                 require_once \System::getSystemErrorTemplate('dbconnectionerror.tpl');
                 \System::shutDown();
             } else {
                 return false;
             }
         }
     }
     if ($stage & self::STAGE_TABLES) {
         // Initialise dbtables
         \ModUtil::initCoreVars();
         \ModUtil::dbInfoLoad('SettingsModule', 'SettingsModule');
         \ModUtil::dbInfoLoad('ThemeModule', 'ThemeModule');
         \ModUtil::dbInfoLoad('UsersModule', 'UsersModule');
         \ModUtil::dbInfoLoad('GroupsModule', 'GroupsModule');
         \ModUtil::dbInfoLoad('PermissionsModule', 'PermissionsModule');
         \ModUtil::dbInfoLoad('CategoriesModule', 'CategoriesModule');
         if (!\System::isInstalling()) {
             \ModUtil::registerAutoloaders();
         }
         $coreInitEvent->setArg('stage', self::STAGE_TABLES);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     if ($stage & self::STAGE_SESSIONS) {
         \SessionUtil::requireSession();
         $coreInitEvent->setArg('stage', self::STAGE_SESSIONS);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     // Have to load in this order specifically since we cant setup the languages until we've decoded the URL if required (drak)
     // start block
     if ($stage & self::STAGE_LANGS) {
         $lang = \ZLanguage::getInstance();
     }
     if ($stage & self::STAGE_DECODEURLS) {
         \System::queryStringDecode();
         $coreInitEvent->setArg('stage', self::STAGE_DECODEURLS);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     if ($stage & self::STAGE_LANGS) {
         $lang->setup();
         $coreInitEvent->setArg('stage', self::STAGE_LANGS);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     // end block
     if ($stage & self::STAGE_MODS) {
         // Set compression on if desired
         if (\System::getVar('UseCompression') == 1) {
             //ob_start("ob_gzhandler");
         }
         \ModUtil::load('SecurityCenter');
         $coreInitEvent->setArg('stage', self::STAGE_MODS);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     if ($stage & self::STAGE_THEME) {
         // register default page vars
         \PageUtil::registerVar('title');
         \PageUtil::setVar('title', \System::getVar('defaultpagetitle'));
         \PageUtil::registerVar('keywords', true);
         \PageUtil::registerVar('stylesheet', true);
         \PageUtil::registerVar('javascript', true);
         \PageUtil::registerVar('jsgettext', true);
         \PageUtil::registerVar('body', true);
         \PageUtil::registerVar('header', true);
         \PageUtil::registerVar('footer', true);
         $theme = \Zikula_View_Theme::getInstance();
         // set some defaults
         // Metadata for SEO
         $this->container['zikula_view.metatags']['description'] = \System::getVar('defaultmetadescription');
         $this->container['zikula_view.metatags']['keywords'] = \System::getVar('metakeywords');
         $coreInitEvent->setArg('stage', self::STAGE_THEME);
         $this->dispatcher->dispatch(CoreEvents::INIT, $coreInitEvent);
     }
     // check the users status, if not 1 then log him out
     if (\UserUtil::isLoggedIn()) {
         $userstatus = \UserUtil::getVar('activated');
         if ($userstatus != UsersConstant::ACTIVATED_ACTIVE) {
             \UserUtil::logout();
             // TODO - When getting logged out this way, the existing session is destroyed and
             //        then a new one is created on the reentry into index.php. The message
             //        set by the registerStatus call below gets lost.
             \LogUtil::registerStatus(__('You have been logged out.'));
             $response = new RedirectResponse(\ModUtil::url('Users', 'user', 'login'));
             $response->send();
             exit;
         }
     }
     if ($stage & self::STAGE_POST && $this->stage & ~self::STAGE_POST) {
         $this->dispatcher->dispatch(CoreEvents::POSTINIT, new GenericEvent($this, array('stages' => $stage)));
     }
     $this->dispatcher->dispatch('frontcontroller.predispatch', new GenericEvent());
 }
コード例 #9
0
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     if (!$event->getRequest()->headers->has('link')) {
         return;
     }
     $links = array();
     $header = $event->getRequest()->headers->get('link');
     /*
      * Due to limitations, multiple same-name headers are sent as comma
      * separated values.
      *
      * This breaks those headers into Link headers following the format
      * http://tools.ietf.org/html/rfc2068#section-19.6.2.4
      */
     while (preg_match('/^((?:[^"]|"[^"]*")*?),/', $header, $matches)) {
         $header = trim(substr($header, strlen($matches[0])));
         $links[] = $matches[1];
     }
     if ($header) {
         $links[] = $header;
     }
     $requestMethod = $this->urlMatcher->getContext()->getMethod();
     // Force the GET method to avoid the use of the
     // previous method (LINK/UNLINK)
     $this->urlMatcher->getContext()->setMethod('GET');
     // The controller resolver needs a request to resolve the controller.
     $stubRequest = new Request();
     foreach ($links as $idx => $link) {
         $linkHeader = $this->parseLinkHeader($link);
         $resource = $this->parseResource($linkHeader, $event->getRequest());
         try {
             $route = $this->urlMatcher->match($resource);
         } catch (\Exception $e) {
             // If we don't have a matching route we return
             // the original Link header
             continue;
         }
         $stubRequest->attributes->replace($route);
         if (false === ($controller = $this->resolver->getController($stubRequest))) {
             continue;
         }
         // Make sure @ParamConverter and some other annotations are called
         $subEvent = new FilterControllerEvent($event->getKernel(), $controller, $stubRequest, HttpKernelInterface::SUB_REQUEST);
         $event->getDispatcher()->dispatch(KernelEvents::CONTROLLER, $subEvent);
         $controller = $subEvent->getController();
         $arguments = $this->resolver->getArguments($stubRequest, $controller);
         try {
             $result = call_user_func_array($controller, $arguments);
             $value = is_array($result) ? current($result) : $result;
             if ($linkHeader->hasRel()) {
                 unset($links[$idx]);
                 $links[$linkHeader->getRel()][] = $value;
             } else {
                 $links[$idx] = $value;
             }
         } catch (\Exception $e) {
             continue;
         }
     }
     $event->getRequest()->attributes->set('links', $links);
     $this->urlMatcher->getContext()->setMethod($requestMethod);
 }