Sfoglia il codice sorgente

[Security] fixed redirection URLs when using {_locale} in the pattern

Fabien Potencier 14 anni fa
parent
commit
ea7a0eb19c
1 ha cambiato i file con 13 aggiunte e 0 eliminazioni
  1. 13 0
      src/Symfony/Component/Security/Http/HttpUtils.php

+ 13 - 0
src/Symfony/Component/Security/Http/HttpUtils.php

@@ -48,6 +48,19 @@ class HttpUtils
         if (0 === strpos($path, '/')) {
             $path = $request->getUriForPath($path);
         } elseif (0 !== strpos($path, 'http')) {
+            // hack (don't have a better solution for now)
+            $context = $this->router->getContext();
+            try {
+                $parameters = $this->router->match($request->getPathInfo());
+            } catch (\Exception $e) {
+            }
+
+            if (isset($parameters['_locale'])) {
+                $context->setParameter('_locale', $parameters['_locale']);
+            } elseif ($session = $request->getSession()) {
+                $context->setParameter('_locale', $session->getLocale());
+            }
+
             $path = $this->generateUrl($path, true);
         }