Skip to content

Instantly share code, notes, and snippets.

@RedDevilHat
Created November 24, 2016 10:16
Show Gist options
  • Save RedDevilHat/72d5e657f9224d29dde2424c494a67bf to your computer and use it in GitHub Desktop.
Save RedDevilHat/72d5e657f9224d29dde2424c494a67bf to your computer and use it in GitHub Desktop.
<?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