Skip to content

Commit

Permalink
Fix EZP-22609: Access to /user/login should redirect to new login res…
Browse files Browse the repository at this point in the history
…ource

https://jira.ez.no/browse/EZP-22609

This patch safely redirects a user requesting access to legacy login (`/user/login`) to the new login resource (`/login`).
Note that siteaccesses in legacy mode will not be concerned as the newly created route (`_ezpublishLegacyLogin`) is not declared as *legacy aware*.

`/user/logout` is also taken into account.
  • Loading branch information
lolautruche committed Jun 11, 2014
1 parent 9964d22 commit 8e009d8
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@
use eZ\Bundle\EzPublishLegacyBundle\LegacyResponse\LegacyResponseManager;
use eZ\Publish\Core\MVC\Legacy\Kernel\URIHelper;
use eZ\Publish\Core\MVC\Legacy\Templating\LegacyHelper;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use eZ\Publish\Core\MVC\ConfigResolverInterface;
use ezpKernelRedirect;
use Symfony\Component\Routing\RouterInterface;

/**
* Controller embedding legacy kernel.
*/
class LegacyKernelController
{
/**
* The legacy kernel instance (eZ Publish 4)
*
* @var \eZ\Publish\Core\MVC\Legacy\Kernel
* @var \Closure
*/
private $kernel;
private $kernelClosure;

/**
* Template declaration to wrap legacy responses in a Twig pagelayout (optional)
Expand Down Expand Up @@ -56,20 +56,27 @@ class LegacyKernelController
/** @var \eZ\Publish\Core\MVC\Legacy\Templating\LegacyHelper; */
private $legacyHelper;

/**
* @var \Symfony\Component\Routing\RouterInterface
*/
private $router;

public function __construct(
\Closure $kernelClosure,
ConfigResolverInterface $configResolver,
URIHelper $uriHelper,
LegacyResponseManager $legacyResponseManager,
LegacyHelper $legacyHelper
LegacyHelper $legacyHelper,
RouterInterface $router
)
{
$this->kernel = $kernelClosure();
$this->kernelClosure = $kernelClosure;
$this->legacyLayout = $configResolver->getParameter( 'module_default_layout', 'ezpublish_legacy' );
$this->configResolver = $configResolver;
$this->uriHelper = $uriHelper;
$this->legacyResponseManager = $legacyResponseManager;
$this->legacyHelper = $legacyHelper;
$this->router = $router;
}

public function setRequest( Request $request = null )
Expand All @@ -85,20 +92,24 @@ public function setRequest( Request $request = null )
*/
public function indexAction()
{
$kernelClosure = $this->kernelClosure;
/** @var \eZ\Publish\Core\MVC\Legacy\Kernel $kernel */
$kernel = $kernelClosure();

$legacyMode = $this->configResolver->getParameter( 'legacy_mode' );
$this->kernel->setUseExceptions( false );
$kernel->setUseExceptions( false );
// Fix up legacy URI with current request since we can be in a sub-request here.
$this->uriHelper->updateLegacyURI( $this->request );

// If we have a layout for legacy AND we're not in legacy mode, we ask the legacy kernel not to generate layout.
if ( isset( $this->legacyLayout ) && !$legacyMode )
{
$this->kernel->setUsePagelayout( false );
$kernel->setUsePagelayout( false );
}

$result = $this->kernel->run();
$result = $kernel->run();

$this->kernel->setUseExceptions( true );
$kernel->setUseExceptions( true );

if ( $result instanceof ezpKernelRedirect )
{
Expand All @@ -112,4 +123,24 @@ public function indexAction()

return $response;
}

/**
* Generates a RedirectResponse to the appropriate login route.
*
* @return RedirectResponse
*/
public function loginAction()
{
return new RedirectResponse( $this->router->generate( 'login' ) );
}

/**
* Generates a RedirectResponse to the appropriate logout route.
*
* @return RedirectResponse
*/
public function logoutAction()
{
return new RedirectResponse( $this->router->generate( 'logout' ) );
}
}
10 changes: 10 additions & 0 deletions eZ/Bundle/EzPublishLegacyBundle/Resources/config/routing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,13 @@ ezpublishSetup:
path: /ezsetup
defaults:
_controller: ezpublish_legacy.setup.controller:init

_ezpublishLegacyLogin:
path: /user/login
defaults:
_controller: ezpublish_legacy.controller:loginAction

_ezpublishLegacyLogout:
path: /user/logout
defaults:
_controller: ezpublish_legacy.controller:logoutAction
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ services:
- @ezpublish_legacy.uri_helper
- @ezpublish_legacy.response_manager
- @ezpublish_legacy.templating.legacy_helper
- @router
calls:
- [setRequest, [@?request=]]

Expand Down

0 comments on commit 8e009d8

Please sign in to comment.