Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Security/
Upload File :
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);
    }
}