저자: Fabien Potencier (fabien.potencier@symfony-project.com)
상속: implements Serializable
예제 #1
1
 /**
  * On kernel response event
  *
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     // Only master request and 200 OK are processed
     if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType() && $event->getResponse()->isOk()) {
         $route = $this->router->match($this->request->getPathInfo());
         // Ignore internal route
         if (0 === stripos($route['_route'], '_')) {
             return;
         }
         $this->session->set('_unifik.last_master_request_uri', $this->request->getUri());
         $this->session->set('_unifik.last_master_request_route', $route);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getLocale()
 {
     if ($this->session) {
         return $this->session->getLocale();
     }
     return $this->defaultLocale;
 }
예제 #3
0
    protected function runSessionOnKernelResponse($newToken, $original = null)
    {
        $session = new Session(new ArraySessionStorage());

        if ($original !== null) {
            $session->set('_security_session', $original);
        }

        $this->securityContext->setToken($newToken);

        $request = new Request();
        $request->setSession($session);

        $event = new FilterResponseEvent(
            $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'),
            $request,
            HttpKernelInterface::MASTER_REQUEST,
            new Response()
        );

        $listener = new ContextListener($this->securityContext, array(), 'session');
        $listener->onKernelResponse($event);

        return $session;
    }
 /**
  * Moves flash messages from the session to a cookie inside a Response Kernel listener
  *
  * @param EventInterface $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) {
         return;
     }
     // Flash messages are stored in the session. If there is none, there
     // can't be any flash messages in it. $session->getFlashBag() would
     // create a session, we need to avoid that.
     if (!$this->session->isStarted()) {
         return;
     }
     $flashBag = $this->session->getFlashBag();
     $flashes = $flashBag->all();
     if (empty($flashes)) {
         return;
     }
     $response = $event->getResponse();
     $cookies = $response->headers->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
     if (isset($cookies[$this->options['host']][$this->options['path']][$this->options['name']])) {
         $rawCookie = $cookies[$this->options['host']][$this->options['path']][$this->options['name']]->getValue();
         $flashes = array_merge($flashes, json_decode($rawCookie));
     }
     $cookie = new Cookie($this->options['name'], json_encode($flashes), 0, $this->options['path'], $this->options['host'], $this->options['secure'], $this->options['httpOnly']);
     $response->headers->setCookie($cookie);
 }
 public function set($state, $value)
 {
     if (!in_array($state, array_keys($this->states))) {
         throw new \RunTimeException("Requested state {$state} does not exist");
     }
     $this->session->set($this->prefix . '.' . $state, $value);
 }
예제 #6
0
 public function setUp()
 {
     $this->request = new Request();
     $session = new Session(new ArraySessionStorage());
     $session->set('foobar', 'bar');
     $session->setFlash('foo', 'bar');
     $this->request->setSession($session);
 }
예제 #7
0
 public function testPathWithLocale()
 {
     $matcher = new RequestMatcher();
     $request = Request::create('/en/login');
     $session = new Session(new ArraySessionStorage());
     $session->setLocale('en');
     $request->setSession($session);
     $matcher->matchPath('^/{_locale}/login$');
     $this->assertTrue($matcher->matches($request));
     $session->setLocale('de');
     $this->assertFalse($matcher->matches($request));
 }
예제 #8
0
 public function finishView(FormView $view, FormInterface $form, array $options)
 {
     $configs = array_merge($options['configs'], array('id' => $view->vars['id'], 'name_id' => $view->getChild('name')->vars['id'], 'original_name_id' => $view->getChild('originalName')->vars['id'], 'size_id' => $view->getChild('size')->vars['id'], 'title_id' => $view->getChild('title')->vars['id'], 'caption_id' => $view->getChild('caption')->vars['id'], 'description_id' => $view->getChild('description')->vars['id'], 'hash_id' => $view->getChild('hash')->vars['id'], 'enabled_id' => $view->getChild('enabled')->vars['id'], 'scheduled_for_deletion_id' => $view->getChild('scheduledForDeletion')->vars['id'], 'enabled_value' => false));
     $file = $form->getData();
     if ($file instanceof FileInterface && null !== $file->getId()) {
         $configs['enabled_value'] = $file->isEnabled();
     }
     $this->session->set($view->vars['id'], $configs);
     $view->vars['configs'] = $configs;
 }
 protected function updateSession($translations)
 {
     foreach ($translations as $locale => $values) {
         // Clear empty domains
         foreach (array('new', 'updated') as $modififactionType) {
             foreach ($values[$modififactionType] as $domain => $trads) {
                 if (count($trads) == 0) {
                     unset($translations[$locale][$modififactionType][$domain]);
                 }
             }
         }
         // Clear empty locales
         if (count($translations[$locale]['new']) == 0 && count($translations[$locale]['updated']) == 0) {
             unset($translations[$locale]);
         }
     }
     $this->session->set(Configuration::SESSION_PREFIX . 'import-list', $translations);
 }
예제 #10
0
 /**
  * Get the language name in the used locale
  *
  * @param string $language the iso code of the language
  * @return string
  */
 public function getLanguageName($language)
 {
     return \Locale::getDisplayLanguage($language, $this->session->getLocale());
 }
예제 #11
0
 /**
  * Returns the ID of the user session
  *
  * Automatically starts the session if necessary.
  *
  * @return string  The session ID
  */
 protected function getSessionId()
 {
     return $this->session->getId();
 }
예제 #12
0
 private function generateCaptchaValue()
 {
     if (!$this->keepValue || !$this->session->has($this->key)) {
         $value = '';
         $chars = str_split($this->charset);
         for ($i = 0; $i < $this->length; $i++) {
             $value .= $chars[array_rand($chars)];
         }
         $this->session->set($this->key, $value);
     } else {
         $value = $this->session->get($this->key);
     }
     return $value;
 }
 /**
  * Clear the current filters
  */
 public function resetFilters()
 {
     $this->session->set(Configuration::SESSION_PREFIX . 'filters', null);
 }
 /**
  * Set the translation listener locale from the session.
  *
  * @param Session $session
  * @return void
  */
 public function setTranslatableLocaleFromSession(Session $session = null)
 {
     if ($session !== null) {
         $this->setTranslatableLocale($session->getLocale());
     }
 }
 public function showFlashMessages()
 {
     $return = '<div id="flashmessages"></div>';
     $return .= $this->renderFlashJavascript($this->session->getFlashes());
     return $return;
 }