| Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Security/ |
| Current File : /var/www/v3.cesa.co.za/src/UserBundle/Security/LogoutSuccessHandler.php |
<?php
namespace App\UserBundle\Security;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\Security\Http\Event\LogoutEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Router;
class LogoutSuccessHandler extends LogoutEvent {
/**
* Service Container
* @var object
*/
private $container = null;
protected $router;
protected $security;
public function __construct(ContainerInterface $container, Router $router, UsageTrackingTokenStorage $security) {
$this->router = $router;
$this->security = $security;
$this->setContainer($container);
}
/**
* Get Container
*
* @return ContainerInterface $container
*/
public function getContainer() {
return $this->container;
}
/**
* Set Container
*
* @param ContainerInterface $container
* @return void
*/
public function setContainer($container) {
$this->container = $container;
}
public function onSymfonyComponentSecurityHttpEventLogoutEvent(LogoutEvent $logOutEvent) {
$referer = $this->getContainer()->get('sessions.manager')->getRequest();
if (is_object($this->getContainer()->get('sessions.manager')->getSfSession())) {
$this->getContainer()->get('sessions.manager')->getSfSession()->set('logout', true);
}
$this->getContainer()->get('session_values.manager')->setValue(array('value_name' => 'logged_out', 'value' => 1));
// echo 'logout ' . $this->getContainer()->get('session_values.manager')->getValue(array('value_name' => 'logged_on_user_id'));
// exit;
if (strlen($referer) <= 0) {
$referer = $this->router->generate('iga_core_home');
} elseif (strpos(' ' . $referer, '/page/') > 0 && !$this->getContainer()->get('content.manager')->hasAccessURL($referer, null)) {
$referer = $this->router->generate('iga_core_home');
}
$this->getContainer()->get('session_values.manager')->setValue(array('value_name' => 'login_target_path', 'value' => $referer));
return new RedirectResponse($referer);
}
}