Created
November 24, 2016 10:16
-
-
Save RedDevilHat/72d5e657f9224d29dde2424c494a67bf to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace dredd; | |
use Symfony\Component\BrowserKit\Cookie; | |
use Symfony\Component\HttpFoundation\Session\Session; | |
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; | |
use AppBundle\Entity\User; | |
use FOS\UserBundle\Doctrine\UserManager; | |
/** | |
* Class DreddHooksHelper | |
* @package dredd | |
*/ | |
class DreddHooksHelper | |
{ | |
private $container; | |
public function __construct() | |
{ | |
$loader = require __DIR__.'/../app/autoload.php'; | |
$kernel = new \AppKernel('dev', true); | |
$kernel->loadClassCache(); | |
$kernel->boot(); | |
$this->container = $kernel->getContainer(); | |
} | |
public function getUserCookie() | |
{ | |
return $this->getCookie($this->getUser()); | |
} | |
/** | |
* @return User | |
*/ | |
private function getUser() | |
{ | |
/** @var UserManager $userManager */ | |
$userManager = $this->container->get('fos_user.user_manager'); | |
return $userManager->findUserByUsername('test'); | |
} | |
/** | |
* @param $user | |
* @return Cookie | |
*/ | |
private function getCookie(User $user) | |
{ | |
$firewallName = $this->container->getParameter('fos_user.firewall_name'); | |
$token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); | |
$this->container->get('security.token_storage')->setToken($token); | |
/** @var Session $session */ | |
$session = $this->container->get('session'); | |
$session->set( | |
'_security_'.$firewallName, | |
serialize($this->container->get('security.context')->getToken()) | |
); | |
$session->start(); | |
$session->save(); | |
$cookie = new Cookie($session->getName(), $session->getId()); | |
return $cookie; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment