Skip to content

Instantly share code, notes, and snippets.

@wizhippo
Created July 23, 2014 14:38
Show Gist options
  • Save wizhippo/9d8da6ffeb3dbeb79581 to your computer and use it in GitHub Desktop.
Save wizhippo/9d8da6ffeb3dbeb79581 to your computer and use it in GitHub Desktop.
ezPublish require login
use eZ\Publish\Core\MVC\ConfigResolverInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
use Symfony\Component\Security\Core\SecurityContextInterface;
class RequireUserLoginListener
{
/**
* @var \Symfony\Component\Security\Core\SecurityContextInterface
*/
protected $securityContext;
/**
* @var \eZ\Publish\Core\MVC\ConfigResolverInterface
*/
protected $configResolver;
/**
* @var \Symfony\Component\Routing\RouterInterface
*/
protected $router;
public function __construct(
SecurityContextInterface $securityContext,
ConfigResolverInterface $configResolver,
RouterInterface $router
)
{
$this->securityContext = $securityContext;
$this->configResolver = $configResolver;
$this->router = $router;
}
public function onKernelRequireLoginRedirect( GetResponseEvent $event )
{
$loginRequire = $this->configResolver->getParameter(
'SiteAccessSettings.RequireUserLogin'
);
$routeName = $event->getRequest()->get( '_route' );
$token = $this->securityContext->getToken();
if ( $token instanceof AnonymousToken )
{
if ( !in_array( $routeName, [ 'login', 'login_check', 'logout', 'ez_legacy', null ] ) )
{
$event->setResponse(
new RedirectResponse(
$this->router->generate( 'login' ),
301
)
);
$event->stopPropagation();
return;
}
}
}
static public function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array( array( 'onKernelRequest', 17 ) ),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment