Example #1
0
 /**
  * @param \Symfony\Component\HttpFoundation\Session\Session $session
  * @param string $key
  */
 public function __construct(Session $session, $key = 'profiler')
 {
     $this->session = $session;
     $bag = new NamespacedAttributeBag($key);
     // Profiler defines its own bag
     $bag->setName($key);
     $this->session->registerBag($bag);
     $this->key = $key;
 }
 /**
  * @param Session $session
  */
 public function __construct(Session $session)
 {
     $this->session = $session;
     try {
         $bag = $this->session->getBag('pheat');
     } catch (InvalidArgumentException $e) {
         $bag = new NamespacedAttributeBag('_pheat_feature');
         $bag->setName('pheat');
         $this->session->registerBag($bag);
     }
     $this->bag = $bag;
 }
 protected function registerBag(SymfonySession $session)
 {
     $bag = new AttributeBag('_' . self::BAG_NAME);
     $bag->setName(self::BAG_NAME);
     $session->registerBag($bag);
     $this->sessionBag = $session->getBag(self::BAG_NAME);
 }
Example #4
0
 /**
  * Constructor.
  *
  * @param Session              $session
  * @param string               $storageKey
  * @param SessionCacheBag|null $bag
  */
 public function __construct(Session $session, $storageKey = '_rollerworks_cache', SessionCacheBag $bag = null)
 {
     if (!$bag) {
         $bag = new SessionCacheBag($storageKey);
         $session->registerBag($bag);
     }
     $this->bagName = $bag->getName();
     $this->session = $session;
 }
 public function register(Application $app)
 {
     $this->app = $app;
     $app['session'] = function ($app) {
         $session = new Session($app['session.storage']);
         $session->registerBag($app['message']);
         return $session;
     };
     $app['message'] = function () {
         return new Message();
     };
     $app['session.storage'] = function ($app) {
         switch ($app['config']['session.storage']) {
             case 'database':
                 $handler = new Handler\DatabaseSessionHandler($app['db'], $app['config']['session.table']);
                 $storage = new NativeSessionStorage($app['session.options'], $handler);
                 break;
             case 'array':
                 $storage = new MockArraySessionStorage();
                 $app['session.test'] = true;
                 break;
             default:
                 $handler = new NativeFileSessionHandler($app['config']['session.files']);
                 $storage = new NativeSessionStorage($app['session.options'], $handler);
                 break;
         }
         return $storage;
     };
     $app['session.options'] = function ($app) {
         $options = $app['config']['session'];
         if (isset($options['cookie'])) {
             foreach ($options['cookie'] as $name => $value) {
                 $options[$name == 'name' ? 'name' : 'cookie_' . $name] = $value;
             }
             unset($options['cookie']);
         }
         if (isset($options['lifetime']) && !isset($options['gc_maxlifetime'])) {
             $options['gc_maxlifetime'] = $options['lifetime'];
         }
         return $options;
     };
     $app['session.test'] = false;
 }
 /**
  * Returns the container object.
  *
  * @param string $rootDir The root directoy
  *
  * @return ContainerBuilder The object instance
  */
 public static function create($rootDir)
 {
     $container = new ContainerBuilder();
     // Set up the kernel parameters
     $container->setParameter('kernel.root_dir', $rootDir);
     $container->setParameter('kernel.cache_dir', $rootDir . '/cache/install');
     $container->setParameter('kernel.debug', false);
     // Load the parameters.yml file
     if (file_exists($rootDir . '/config/parameters.yml')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml'));
     } else {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist'));
     }
     // Add the parameters to the container
     foreach ($parameters['parameters'] as $name => $value) {
         $container->setParameter($name, $value);
     }
     // Add the Contao upload path
     $container->setParameter('contao.upload_path', 'files');
     // Set up the request stack
     $request = Request::createFromGlobals();
     $requestStack = new RequestStack();
     $requestStack->push($request);
     $container->set('request_stack', $requestStack);
     // Create the session bag
     $bag = new ArrayAttributeBag('_contao_be_attributes');
     $bag->setName('contao_backend');
     // Start the session
     $session = new Session();
     $session->registerBag($bag);
     $session->start();
     $container->set('session', $session);
     // Set up the database connection
     $container->set('database_connection', ConnectionFactory::create($parameters));
     // Resolve the locale
     $translationsDir = __DIR__ . '/../Resources/translations';
     $resolver = new LanguageResolver($requestStack, $translationsDir);
     $locale = $resolver->getLocale();
     // Set up the translator
     $translator = new Translator($locale);
     $translator->setFallbackLocales(['en']);
     $translator->addLoader('xlf', new XliffFileLoader());
     $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en');
     if ('en' !== $locale) {
         $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en');
     }
     $container->setParameter('locale', $locale);
     $container->set('translator.default', $translator);
     // Set up Twig
     $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(__DIR__ . '/../Resources/views'));
     $twig->addGlobal('path', $request->getBasePath());
     $twig->addGlobal('language', str_replace('_', '-', $locale));
     $twig->addGlobal('ua', Environment::get('agent')->class);
     $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) {
         return '/' . ltrim($request->getBasePath() . '/' . $path, '/');
     }));
     $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) {
         return $translator->trans($message, $params);
     }));
     $container->set('twig', $twig);
     // Add the kernel bundles
     $kernel = new UnbootableKernel('prod', false);
     $kernel->setRootDir($rootDir);
     $kernel->setBundles($kernel->registerBundles());
     $bundles = [];
     foreach ($kernel->getBundles() as $bundle) {
         $bundles[$bundle->getName()] = get_class($bundle);
     }
     $container->set('kernel', $kernel);
     $container->setParameter('kernel.bundles', $bundles);
     // Add the file system
     $container->set('filesystem', new Filesystem());
     // Add the Contao resources paths
     $pass = new AddResourcesPathsPass();
     $pass->process($container);
     // Add the Contao resource finder
     $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths')));
     // Add the Contao resource locator
     $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths')));
     // Add the installer services
     $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator.default')));
     $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir));
     $container->set('contao.install_tool_user', new InstallToolUser($container->get('session')));
     return $container;
 }
Example #7
0
<?php

use Pagekit\Session\Csrf\Event\CsrfListener;
use Pagekit\Session\Csrf\Provider\SessionCsrfProvider;
use Pagekit\Session\Handler\DatabaseSessionHandler;
use Pagekit\Session\MessageBag;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
return ['name' => 'session', 'main' => function ($app) {
    $app['session'] = function ($app) {
        $session = new Session($app['session.storage']);
        $session->registerBag($app['message']);
        return $session;
    };
    $app['message'] = function () {
        return new MessageBag();
    };
    $app['session.storage'] = function ($app) {
        switch ($this->config['storage']) {
            case 'database':
                $handler = new DatabaseSessionHandler($app['db'], $this->config['table']);
                $storage = new NativeSessionStorage($app['session.options'], $handler);
                break;
            default:
                $handler = new NativeFileSessionHandler($this->config['files']);
                $storage = new NativeSessionStorage($app['session.options'], $handler);
                break;
        }
        return $storage;
    };
Example #8
0
 /**
  * Mocks a Symfony session containing the Contao attribute bags.
  *
  * @return SessionInterface The session object
  */
 protected function mockSession()
 {
     $session = new Session(new MockArraySessionStorage());
     $session->setId('session_test');
     $session->start();
     $beBag = new ArrayAttributeBag('_contao_be_attributes');
     $beBag->setName('contao_backend');
     $session->registerBag($beBag);
     $feBag = new ArrayAttributeBag('_contao_fe_attributes');
     $feBag->setName('contao_frontend');
     $session->registerBag($feBag);
     return $session;
 }
 /**
  * Returns the container object.
  *
  * @param KernelInterface $kernel
  * @param Request         $request
  *
  * @return ContainerBuilder
  */
 public static function create(KernelInterface $kernel, Request $request)
 {
     $rootDir = $kernel->getRootDir();
     $cacheDir = dirname($rootDir) . '/var/cache/' . $kernel->getEnvironment();
     $logsDir = dirname($rootDir) . '/var/logs';
     $container = new ContainerBuilder();
     $container->setParameter('kernel.root_dir', $rootDir);
     $container->setParameter('kernel.cache_dir', $cacheDir);
     $container->setParameter('kernel.logs_dir', $logsDir);
     $container->setParameter('kernel.debug', false);
     $parameters = [];
     // Load the parameters.yml file
     if (file_exists($rootDir . '/config/parameters.yml')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml'));
     } elseif (file_exists($rootDir . '/config/parameters.yml.dist')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist'));
     }
     // Add the parameters to the container
     if (!empty($parameters['parameters'])) {
         foreach ($parameters['parameters'] as $name => $value) {
             $container->setParameter($name, $value);
         }
     }
     // Add the Contao parameters
     $container->setParameter('contao.upload_path', 'files');
     $container->setParameter('contao.image.target_path', 'assets/images');
     // Set up the request stack
     $requestStack = new RequestStack();
     $requestStack->push($request);
     $container->set('request_stack', $requestStack);
     // Create the session bag
     $bag = new ArrayAttributeBag('_contao_be_attributes');
     $bag->setName('contao_backend');
     // Start the session
     $session = new Session();
     $session->registerBag($bag);
     $session->start();
     $container->set('session', $session);
     // Set up the database connection
     $container->set('database_connection', ConnectionFactory::create($parameters));
     // Resolve the locale
     $translationsDir = __DIR__ . '/../Resources/translations';
     $resolver = new LanguageResolver($requestStack, $translationsDir);
     $locale = $resolver->getLocale();
     // Update the request locale
     $request->setLocale($locale);
     // Set up the translator
     $translator = new Translator($locale);
     $translator->setFallbackLocales(['en']);
     $translator->addLoader('xlf', new XliffFileLoader());
     $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en');
     if ('en' !== $locale) {
         $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en');
     }
     $container->set('translator', $translator);
     // Set up Twig
     $twigLoader = new \Twig_Loader_Filesystem();
     $twigLoader->addPath(__DIR__ . '/../Resources/views', 'ContaoInstallation');
     $twig = new \Twig_Environment($twigLoader);
     $twig->addExtension(new AnsiExtension());
     $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) {
         return '/' . ltrim($request->getBasePath() . '/' . $path, '/');
     }));
     $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) {
         return $translator->trans($message, $params);
     }));
     $container->set('twig', $twig);
     $kernelBundles = [];
     foreach ($kernel->getBundles() as $bundle) {
         $kernelBundles[$bundle->getName()] = get_class($bundle);
     }
     $container->set('kernel', $kernel);
     $container->setParameter('kernel.bundles', $kernelBundles);
     // Add the file system
     $container->set('filesystem', new Filesystem());
     // Add the Contao resources paths
     $pass = new AddResourcesPathsPass();
     $pass->process($container);
     // Add the Contao resource finder
     $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths')));
     // Add the Contao resource locator
     $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths')));
     // Add the Contao cache
     $container->set('contao.cache', new FilesystemCache($cacheDir . '/contao/cache', '', 022));
     // Add the installer services
     $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator')));
     $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir));
     $container->set('contao.install_tool_user', new InstallToolUser($container->get('session')));
     return $container;
 }