Пример #1
0
 public function onBootstrap(EventInterface $e)
 {
     /** @var \Zend\Mvc\Application $app */
     $app = $e->getTarget();
     $config = $app->getConfig();
     $sessionConfig = new SessionConfig();
     if (isset($config['session']['options'])) {
         $options = $config['session']['options'];
         if (isset($options['cookie_domain']) && strpos($_SERVER['SERVER_NAME'], $options['cookie_domain']) === false) {
             $options['cookie_domain'] = $_SERVER['SERVER_NAME'];
         }
         $sessionConfig->setOptions($options);
     }
     $serviceManager = $app->getServiceManager();
     $storage = null;
     $saveHandler = null;
     if ($serviceManager->has('Session\\Service\\Storage', false)) {
         /** @var \Zend\Session\Storage\StorageInterface $storage */
         $storage = $serviceManager->get('Session\\Service\\Storage');
     }
     if ($serviceManager->has('Session\\Service\\SaveHandler', false)) {
         /** @var \Zend\Session\SaveHandler\SaveHandlerInterface $saveHandler */
         $saveHandler = $serviceManager->get('Session\\Service\\SaveHandler');
     }
     Container::setDefaultManager(new SessionManager($sessionConfig, $storage, $saveHandler));
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 public function __invoke()
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions(['use_cookies' => true, 'cookie_path' => '/', 'cookie_httponly' => true, 'name' => 'zpc', 'cookie_secure' => $this->isSsl(), 'hash_bits_per_character' => 6, 'hash_function' => 1]);
     $sessionManager = new SessionManager($sessionConfig);
     return $sessionManager;
 }
Пример #3
0
 public function __invoke(ContainerInterface $container)
 {
     $options = $container->get('config')['session']['options'];
     $config = new SessionConfig();
     $config->setOptions($options);
     return $config;
 }
Пример #4
0
 public function onBootstrap(MvcEvent $e)
 {
     $events = $e->getApplication()->getEventManager()->getSharedManager();
     $config = $e->getApplication()->getServiceManager()->get('config');
     // configure session
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $events->attach('ZfcUser\\Service\\User', 'register.post', function ($e) {
         $user = $e->getParam('user');
         // User account object
         $form = $e->getParam('form');
         // Form object
         // Perform your custom action here
         /* @var $sm ServiceLocatorInterface */
         $sm = $e->getTarget()->getServiceManager();
         /* @var $em \Doctrine\ORM\EntityManager */
         $em = $sm->get('doctrine.entitymanager.orm_default');
         $userRole = $em->find(__NAMESPACE__ . '\\Entity\\UserRole', DEFAULT_ROLE);
         if (NULL !== $userRole) {
             $user->addRole($userRole);
             $em->persist($user);
             $em->flush();
         }
     });
 }
Пример #5
0
 /**
  *  @return void
  */
 private function init()
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($this->config);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
 }
Пример #6
0
 public function initSession($config)
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
 }
Пример #7
0
 public function sessionStart(MvcEvent $event)
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions(array());
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
 }
 public function setDbHandler()
 {
     $tableGateway = new TableGateway('session', $this->getServiceLocator()->get('Zend\\Db\\Adapter\\Adapter'));
     $saveHandler = new DbTableGateway($tableGateway, new DbTableGatewayOptions());
     //open session
     $sessionConfig = new SessionConfig();
     $saveHandler->open($sessionConfig->getOption('save_path'), $this->namespace);
     $this->session->getManager()->setSaveHandler($saveHandler);
 }
Пример #9
0
 public function onBootstrap(\Zend\EventManager\EventInterface $e)
 {
     $config = $e->getApplication()->getServiceManager()->get('Configuration');
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig, null, null);
     Container::setDefaultManager($sessionManager);
     $sessionManager->start();
 }
Пример #10
0
 public function getServiceConfig()
 {
     return array('factories' => array('sessionconfig' => function ($sm) {
         $config = $sm->get('Config');
         $sessionConfig = new SessionConfig();
         if (isset($config['session'])) {
             $sessionConfig->setOptions($config['session']);
         }
         return $sessionConfig;
     }));
 }
Пример #11
0
 public function onBootstrap(MvcEvent $e)
 {
     /* @var $sm \Zend\ServiceManager\ServiceManager */
     $sm = $e->getApplication()->getServiceManager();
     $config = $sm->get('Config');
     // bootstrap session
     $tableGateway = new TableGateway($config['app']['session.tableName'], $sm->get('dbAdapter'));
     $saveHandler = new DbTableGateway($tableGateway, new DbTableGatewayOptions());
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->setSaveHandler($saveHandler);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
     // translate
     $sm->get('translator');
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     // bootstrap locale
     //     	$headers = $app->getRequest()->getHeaders();
     //     	Locale::setDefault($config['locale']['default']);
     //     	if($headers->has('Accept-Language')) {
     //     		$locales = $headers->get('Accept-Language')->getPrioritized();
     //     		// Loop through all locales, highest priority first
     //     		foreach($locales as $locale) {
     //     			if(!!($match = Locale::lookup($config['locale']['supported'], $locale->typeString))) {
     //     				// The locale is one of our supported list
     //     				Locale::setDefault($match);
     //     				break;
     //     			}
     //     		}
     //     		if(!$match) {
     //     			// Nothing from the supported list is a match
     //     			Locale::setDefault($config['locale']['default']);
     //     		}
     //     	}
     // switch layout
     $e->getApplication()->getEventManager()->getSharedManager()->attach('Zend\\Mvc\\Controller\\AbstractActionController', 'dispatch', function ($e) {
         $controller = $e->getTarget();
         $controllerClass = get_class($controller);
         $moduleNamespace = substr($controllerClass, 0, strpos($controllerClass, '\\'));
         $config = $e->getApplication()->getServiceManager()->get('config');
         $routeMatch = $e->getRouteMatch();
         $actionName = strtolower($routeMatch->getParam('action', 'not-found'));
         // get the action name
         if (isset($config['module_layouts'][$moduleNamespace][$actionName])) {
             $controller->layout($config['module_layouts'][$moduleNamespace][$actionName]);
         } elseif (isset($config['module_layouts'][$moduleNamespace]['default'])) {
             $controller->layout($config['module_layouts'][$moduleNamespace]['default']);
         }
     }, 100);
 }
 public function authenticate(Adapter\AdapterInterface $adapter = null)
 {
     $result = parent::authenticate($adapter);
     if ($result->isValid()) {
         // Set authentication indicator cookie
         $lifetime = (int) $this->sessionConfig->getCookieLifetime();
         $expires = $lifetime !== 0 ? time() + $lifetime : null;
         $lifetime = $lifetime !== 0 ? $lifetime : null;
         $this->setCookie(true, $expires, $lifetime);
     }
     return $result;
 }
Пример #13
0
 public function onBootstrap(MvcEvent $e)
 {
     $app = $e->getApplication();
     $sm = $app->getServiceManager();
     $request = $app->getRequest();
     $response = $app->getResponse();
     $appConfig = $sm->get('Configuration');
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($appConfig['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     $responseHeaders = $response->getHeaders();
     $requestHeaders = $request->getHeaders();
     $this->checkCloudFlareHttpHeader();
     $requestUriPath = $request->getUri()->getPath();
     $requestExtension = pathinfo($requestUriPath, PATHINFO_EXTENSION);
     if (!in_array($requestExtension, ['js', 'css'])) {
         $eventManager = $app->getEventManager();
         $moduleRouteListener = new ModuleRouteListener();
         $moduleRouteListener->attach($eventManager);
         $sharedManager = $eventManager->getSharedManager();
         $sharedManager->attach('Zend\\Mvc\\Controller\\AbstractActionController', 'dispatch', function ($e) use($sm) {
             $controller = $e->getTarget();
             $controller->getEventManager()->attachAggregate($sm->get('Visitor'));
         }, 2);
         $client = new RemoteAddress();
         $queryParams = $request->getQuery();
         $setPartnerId = (isset($queryParams['gid']) and is_numeric($queryParams['gid'])) ? ['gid' => (int) $queryParams['gid'], 'url' => $request->getUri()] : FALSE;
         $setLang = (isset($queryParams['lang']) and is_string($queryParams['lang'])) ? ['lang' => $queryParams['lang'], 'url' => $request->getUri()] : FALSE;
         $setCurrency = (isset($queryParams['cur']) and is_string($queryParams['cur'])) ? ['cur' => $queryParams['cur'], 'url' => $request->getUri()] : FALSE;
         if ($requestHeaders->has('Accept-Language')) {
             $browserLang = $requestHeaders->get('Accept-Language')->getPrioritized();
         } else {
             $browserLang = FALSE;
         }
         if ($requestHeaders->has('User-Agent')) {
             $userAgent = $requestHeaders->get('User-Agent')->getFieldValue();
         } else {
             $userAgent = FALSE;
         }
         if ($requestHeaders->has('Referer')) {
             $referer = $requestHeaders->get('Referer');
         } else {
             $referer = FALSE;
         }
         $eventManager->trigger('detectVisitor', $this, array('setLang' => $setLang, 'setCurrency' => $setCurrency, 'browserLang' => $browserLang, 'userAgent' => $userAgent, 'referer' => $referer, 'request' => $request, 'clientIp' => $client->getIpAddress(), 'clientProxy' => $client->getUseProxy(), 'setPartnerId' => $setPartnerId, 'sessionManager' => $sessionManager, 'response' => $response, 'responseHeaders' => $responseHeaders, 'requestHeaders' => $requestHeaders, 'serviceLocator' => $sm));
         $eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_ROUTE, array($this, 'onPreDispatch'));
     }
     $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter');
     GlobalAdapterFeature::setStaticAdapter($dbAdapter);
 }
 public function __invoke()
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($this->config['options']);
     $sessionManager = new SessionManager($sessionConfig);
     if (class_exists(\Redis::class)) {
         $saveHandler = new Redis($this->config['redis']['host'], $this->config['redis']['port'], $this->config['redis']['password']);
         $sessionManager->setSaveHandler($saveHandler);
         $sessionManager->start();
     } else {
         trigger_error('Redis extension is not found. ' . \Staticus\Auth\AuthSessionMiddleware::class . ' will not work.', E_USER_NOTICE);
     }
     return $sessionManager;
 }
Пример #15
0
 public function initSession($config, \Zend\ServiceManager\ServiceManager $sm)
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->getValidatorChain()->attach('session.validate', array(new HttpUserAgent(), 'isValid'));
     $sessionManager->getValidatorChain()->attach('session.validate', array(new RemoteAddr(), 'isValid'));
     $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter');
     $tableGateway = new TableGateway(new TableIdentifier('sessions', 'users'), $dbAdapter);
     $saveHandler = new DbTableGateway($tableGateway, new DbTableGatewayOptions());
     $sessionManager->setSaveHandler($saveHandler);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
 }
 /**
  * Registers services on the given app.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Application $app
  */
 public function register(Application $app)
 {
     $app['zend.session.handler._factory'] = $app->protect(function ($type, $options) use($app) {
         switch ($type) {
             case 'SilexCMF\\ZendSession\\SaveHandler\\Db':
                 return new Db($app[$options['connection']], new DbOptions());
             case 'Zend\\Session\\SaveHandler\\MongoDB':
                 return new MongoDB($app['mongo'], new MongoDBOptions($options));
         }
         return null;
     });
     $app['zend.session.manager'] = $app->share(function () use($app) {
         $options = isset($app['zend.session.options']) ? $app['zend.session.options'] : [];
         $config = null;
         if (isset($options['config'])) {
             $config = new SessionConfig();
             $config->setOptions($options['config']);
         }
         $storage = null;
         if (isset($options['storage'])) {
             $storage = Factory::factory($options['storage']['type'], isset($options['storage']['options']) ? $options['storage']['options'] : []);
         }
         $handler = null;
         if (isset($options['handler'])) {
             $handler = $app['zend.session.handler._factory']($options['handler']['type'], isset($options['handler']['options']) ? $options['handler']['options'] : []);
         }
         $manager = new SessionManager($config, $storage, $handler);
         if (isset($options['validators'])) {
             /* @var $request \Symfony\Component\HttpFoundation\Request */
             $request = $app['request_stack']->getCurrentRequest();
             foreach ($options['validators'] as $validator) {
                 switch ($validator) {
                     case 'Zend\\Session\\Validator\\HttpUserAgent':
                         $validator = new $validator($request->server->get('HTTP_USER_AGENT'));
                         break;
                     case 'Zend\\Session\\Validator\\RemoteAddr':
                         $validator = new $validator($request->server->get('REMOTE_ADDR'));
                         break;
                     default:
                         $validator = new $validator();
                 }
                 $manager->getValidatorChain()->attach('session.validate', array($validator, 'isValid'));
             }
         }
         Container::setDefaultManager($manager);
         return $manager;
     });
 }
Пример #17
0
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $request = $e->getApplication()->getServiceManager()->get('Request');
     $moduleRouteListener->attach($eventManager);
     $adapter = $e->getApplication()->getServiceManager()->get('Zend\\Db\\Adapter\\Adapter');
     $config = $e->getApplication()->getServiceManager()->get('Configuration');
     $locale = null;
     $eventManager->attach(new UserRegisterListener($adapter));
     $eventManager->attach(new LogListener());
     // Add ACL information to the Navigation view helper
     $authorize = $e->getApplication()->getServiceManager()->get('BjyAuthorize\\Service\\Authorize');
     $acl = $authorize->getAcl();
     $role = $authorize->getIdentity();
     \Zend\View\Helper\Navigation::setDefaultAcl($acl);
     \Zend\View\Helper\Navigation::setDefaultRole($role);
     // translating system
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     $session = new Container('base');
     // Get the visitor language selection
     $translator = $e->getApplication()->getServiceManager()->get('translator');
     // get the locale from the cookie
     $headCookie = $request->getHeaders()->get('Cookie');
     if (!empty($headCookie) && array_key_exists('locale', get_object_vars($headCookie))) {
         $locale = $headCookie->locale;
     }
     if (empty($locale)) {
         // if there is not set any cookie
         $locale = $session->offsetGet('locale');
         // Get the locale from the session
         if (empty($locale)) {
             // if there is not any session set yet
             $headers = $request->getHeaders();
             if ($headers->has('Accept-Language')) {
                 $locales = $headers->get('Accept-Language')->getPrioritized();
                 $first = array_shift($locales);
                 $locale = $first->getLanguage();
                 if (!empty($locale) && 2 == strlen($locale)) {
                     $locale .= "_" . strtoupper($locale);
                 }
             }
             if (empty($locale)) {
                 // if the browser has no locale set, we have to get the default INTL global locale setting
                 $locale = \Locale::getPrimaryLanguage(\Locale::getDefault());
                 // Gets the default locale value from the INTL global 'default_locale'
             }
         }
     } else {
         #\Zend\Debug\debug::dump("Cookie set with locale: $locale");
     }
     $translator->setLocale(\Locale::acceptFromHttp($locale));
     $translator->setLocale($locale)->setFallbackLocale('en_US');
     \Zend\Validator\AbstractValidator::setDefaultTranslator($translator);
     \Zend\Validator\AbstractValidator::setDefaultTranslatorTextDomain();
 }
Пример #18
0
 public function onBootstrap(MvcEvent $e)
 {
     $evm = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($evm);
     /** @var ServiceManager $sm */
     $sm = $e->getApplication()->getServiceManager();
     $evm->attachAggregate($sm->get('App\\ExceptionLoggerListener'));
     $config = $e->getApplication()->getServiceManager()->get('config');
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     SessionContainer::setDefaultManager($sessionManager);
     $evm->attach(MvcEvent::EVENT_DISPATCH, function (MvcEvent $e) {
         $this->initEnv($e);
     }, 100);
 }
Пример #19
0
 /**
  * @dataProvider optionsProvider
  */
 public function testSetOptionsTranslatesUnderscoreSeparatedKeys($option, $getter, $value)
 {
     $options = array($option => $value);
     $this->config->setOptions($options);
     if ('getOption' == $getter) {
         $this->assertSame($value, $this->config->getOption($option));
     } else {
         $this->assertSame($value, $this->config->{$getter}());
     }
 }
Пример #20
0
 public function initSession($config)
 {
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->getValidatorChain()->attach('session.validate', array(new HttpUserAgent(), 'isValid'));
     /*
               $sessionManager->getValidatorChain()
               ->attach(
                 'session.validate',
                   array(new RemoteAddr(), 'isValid')
               );*/
     $sessionManager->start();
     /**
      * Optional: If you later want to use namespaces, you can already store the 
      * Manager in the shared (static) Container (=namespace) field
      */
     Container::setDefaultManager($sessionManager);
 }
Пример #21
0
 /**
  * Run for every request to the system.
  *
  * This function does a lot. It register all kinds of event.
  * Logs critical error. Select correct layouts, just to
  * name a few points....
  *
  * @param MvcEvent $e
  */
 public function onBootstrap(MvcEvent $e)
 {
     $logger = $e->getApplication()->getServiceManager()->get('Logger');
     //CONFIG
     //	get config values from the application
     //	config files.
     $config = $e->getApplication()->getServiceManager()->get('Configuration');
     //SESSION
     //	config and start session
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     //SHUT DOWN
     //	register shutdown function that will log a critical message
     //
     register_shutdown_function(function () use($logger) {
         if ($e = error_get_last()) {
             $logger->critical("register_shutdown_function: " . $e['message'] . " in " . $e['file'] . ' line ' . $e['line']);
             echo "Smá vandræði";
         }
     });
     //EVENT MANAGER
     //	get event manager and attache event handlers to it. These
     //	event are something required for the MVC to work. And
     //	error events in the MVC application; ie. if something
     //	goes wrong in Dispatch or Rendering, these events will be called,
     //	they will  log a critical message
     $eventManager = $e->getApplication()->getEventManager();
     /** @var  $eventManager \Zend\EventManager\Event */
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     $eventManager->attach($e->getApplication()->getServiceManager()->get('Stjornvisi\\Event\\SystemExceptionListener'));
     $eventManager->attach($e->getApplication()->getServiceManager()->get('Stjornvisi\\Event\\PersistenceLoginListener'));
     $eventManager->attach($e->getApplication()->getServiceManager()->get('Stjornvisi\\Event\\LayoutSelectListener'));
     $eventManager->getSharedManager()->attach(__NAMESPACE__, 'notify', $e->getApplication()->getServiceManager()->get('Stjornvisi\\Event\\NotifyListener'));
 }
Пример #22
0
 public function onBootstrap(EventInterface $e)
 {
     // get managers
     $eventManager = $e->getApplication()->getEventManager();
     /*
     $eventManager->attach(
     		'render', array($this, 'registerJsonStrategy'), 100
     );
     */
     $serviceManager = $e->getApplication()->getServiceManager();
     // attach module listener
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     // add application listener
     /*
     if ($e->getRequest())
     {
     	$uri = $e->getRequest()->getUri();
     	if (false === strpos($uri, 'json')) {
     		$eventManager->attachAggregate(new ApplicationListener());
     	}				
     }
     */
     $eventManager->attachAggregate(new ApplicationListener());
     // get config
     $config = $serviceManager->get('config');
     // configure session
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     // get filter and validator manager
     $filterManager = $serviceManager->get('FilterManager');
     $validatorManager = $serviceManager->get('ValidatorManager');
     // add custom filters and validators
     StaticFilter::setPluginManager($filterManager);
     StaticValidator::setPluginManager($validatorManager);
 }
Пример #23
0
 /**
  * {@inheritDoc}
  */
 public function setCookieDomain($cookieDomain)
 {
     $cookieDomain = (string) $cookieDomain;
     if (empty($cookieDomain)) {
         $this->cookieDomain = '';
         $this->setStorageOption('cookie_domain', '');
     } else {
         $subdomains = false;
         if ('.' === $cookieDomain[0]) {
             $subdomains = true;
             $cookieDomain = ltrim($cookieDomain, '.');
         }
         parent::setCookieDomain($cookieDomain);
         if ($subdomains) {
             $this->setStorageOption('cookie_domain', $this->cookieDomain = '.' . $this->cookieDomain);
         }
     }
     return $this;
 }
Пример #24
0
 public function onBootstrap(MvcEvent $e)
 {
     $eventManager = $e->getApplication()->getEventManager();
     $moduleRouteListener = new ModuleRouteListener();
     $moduleRouteListener->attach($eventManager);
     $adapter = $e->getApplication()->getServiceManager()->get('Zend\\Db\\Adapter\\Adapter');
     $sm = $e->getApplication()->getServiceManager();
     $config = $e->getApplication()->getServiceManager()->get('Configuration');
     $settings = $e->getApplication()->getServiceManager()->get('SettingsService');
     $eventManager->attach(new UserRegisterListener($adapter));
     $eventManager->attach(new LogListener());
     // Add ACL information to the Navigation view helper
     $authorize = $e->getApplication()->getServiceManager()->get('BjyAuthorize\\Service\\Authorize');
     $acl = $authorize->getAcl();
     $role = $authorize->getIdentity();
     \Zend\View\Helper\Navigation::setDefaultAcl($acl);
     \Zend\View\Helper\Navigation::setDefaultRole($role);
     // translating system
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     $session = new Container('base');
     // Get the visitor language selection
     $translator = $e->getApplication()->getServiceManager()->get('translator');
     $locale = $session->offsetGet('locale');
     // Get the locale
     if (empty($locale)) {
         $locale = \Locale::getPrimaryLanguage(\Locale::getDefault());
         // Get the locale
     }
     if (!empty($locale) && 2 == strlen($locale)) {
         $locale .= "_" . strtoupper($locale);
     }
     $translator->setLocale($locale)->setFallbackLocale('en_US');
     $isCompress = $settings->getValueByParameter('Base', 'iscompressed');
     if ($isCompress) {
         $eventManager->getSharedManager()->attach('Zend\\Mvc\\Application', 'finish', array($this, 'compressHtml'), 1002);
     }
 }
Пример #25
0
 /**
  * Initialize Session data
  *
  * @param ServiceManager $serviceManager Service manager
  * @param DbAdapter      $dbAdapter      Database adapter
  *
  * @return void
  */
 public function initSession(ServiceManager $serviceManager, DbAdapter $dbAdapter)
 {
     $coreConfig = $serviceManager->get('CoreConfig');
     $sessionConfig = new SessionConfig();
     $sessionConfig->setStorageOption('gc_probability', 1);
     $sessionConfig->setStorageOption('gc_divisor', 100);
     $sessionConfig->setStorageOption('save_path', $coreConfig->getValue('session_path'));
     $sessionConfig->setStorageOption('gc_maxlifetime', $coreConfig->getValue('session_lifetime'));
     $sessionConfig->setStorageOption('cookie_path', $coreConfig->getValue('cookie_path'));
     $sessionConfig->setStorageOption('cookie_domain', $coreConfig->getValue('cookie_domain'));
     $sessionManager = new SessionManager($sessionConfig);
     SessionContainer::setDefaultManager($sessionManager);
     if ($coreConfig->getValue('session_handler') == CoreConfig::SESSION_DATABASE) {
         $tablegatewayConfig = new DbTableGatewayOptions(array('idColumn' => 'id', 'nameColumn' => 'name', 'modifiedColumn' => 'updated_at', 'lifetimeColumn' => 'lifetime', 'dataColumn' => 'data'));
         $sessionTable = new SessionTableGateway(new TableGateway('core_session', $dbAdapter), $tablegatewayConfig);
         $sessionManager->setSaveHandler($sessionTable);
     }
     $sessionManager->start();
 }
Пример #26
0
 public function onBootstrap(EventInterface $e)
 {
     $serviceManager = $e->getApplication()->getServiceManager();
     $config = $e->getApplication()->getServiceManager()->get('config');
     $translator = $serviceManager->get('translator');
     // Gestion de la locale
     if (PHP_SAPI !== 'cli') {
         //translator
         // Gestion locale pour le back
         if ($serviceManager->get('router')->match($serviceManager->get('request')) && strpos($serviceManager->get('router')->match($serviceManager->get('request'))->getMatchedRouteName(), 'admin') !== false) {
             if ($e->getRequest()->getCookie() && $e->getRequest()->getCookie()->offsetExists('pg_locale_back')) {
                 $locale = $e->getRequest()->getCookie()->offsetGet('pg_locale_back');
             }
         }
         if (empty($locale)) {
             if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
                 $locale = \Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
             } else {
                 $locale = 'fr_FR';
             }
         }
         $translator->setLocale($locale);
         // plugins
         $translate = $serviceManager->get('viewhelpermanager')->get('translate');
         $translate->getTranslator()->setLocale($locale);
         $options = $serviceManager->get('playgroundcore_module_options');
         $options->setLocale($locale);
     }
     // positionnement de la langue pour les traductions de date avec strftime
     setlocale(LC_TIME, "fr_FR", 'fr_FR.utf8', 'fra');
     AbstractValidator::setDefaultTranslator($translator, 'playgroundcore');
     /*
      * Entity translation based on Doctrine Gedmo library
      */
     $doctrine = $serviceManager->get('doctrine.entitymanager.orm_default');
     $evm = $doctrine->getEventManager();
     $translatableListener = new \Gedmo\Translatable\TranslatableListener();
     // TODO : Set the Default locale to be taken from config
     $translatableListener->setDefaultLocale('fr_FR');
     // If no translation is found, fallback to entity data
     $translatableListener->setTranslationFallback(true);
     // set Locale
     if (!empty($locale)) {
         $translatableListener->setTranslatableLocale($locale);
     }
     $evm->addEventSubscriber($translatableListener);
     /**
      * Adding a Filter to slugify a string (make it URL compliiant)
      */
     $filterChain = new \Zend\Filter\FilterChain();
     $filterChain->getPluginManager()->setInvokableClass('slugify', 'PlaygroundCore\\Filter\\Slugify');
     $filterChain->attach(new Filter\Slugify());
     // Start the session container
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     /**
      * Optional: If you later want to use namespaces, you can already store the
      * Manager in the shared (static) Container (=namespace) field
      */
     \Zend\Session\Container::setDefaultManager($sessionManager);
     // Google Analytics : When the render event is triggered, we invoke the view helper to
     // render the javascript code.
     $e->getApplication()->getEventManager()->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function (\Zend\Mvc\MvcEvent $e) use($serviceManager) {
         $view = $serviceManager->get('ViewHelperManager');
         $plugin = $view->get('googleAnalytics');
         $plugin();
         $pluginOG = $view->get('facebookOpengraph');
         $pluginOG();
     });
     if (PHP_SAPI !== 'cli') {
         $session = new Container('facebook');
         $fb = $e->getRequest()->getPost()->get('signed_request');
         if ($fb) {
             list($encoded_sig, $payload) = explode('.', $fb, 2);
             $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
             $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
             $session->offsetSet('signed_request', $data);
             // This fix exists only for safari on Windows : we need to redirect the user to the page outside of iframe
             // for the cookie to be accepted. Core just adds a 'redir_fb_page_id' var to alert controllers
             // that they need to send the user back to FB...
             if (!count($_COOKIE) > 0 && strpos($_SERVER['HTTP_USER_AGENT'], 'Safari')) {
                 echo '<script type="text/javascript">' . 'window.top.location.href = window.location.href+"?redir_fb_page_id=' . $data["page"]["id"] . '";' . '</script>';
             }
             // This fix exists only for IE6+, when this app is embedded into an iFrame : The P3P policy has to be set.
             $response = $e->getResponse();
             if ($response instanceof \Zend\Http\Response && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') || strpos($_SERVER['HTTP_USER_AGENT'], 'rv:11.'))) {
                 $response->getHeaders()->addHeaderLine('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
             }
         }
     }
 }
Пример #27
0
 public function getServiceConfig()
 {
     return array('factories' => array('albumTransformerService' => 'RestServerDemo\\Service\\AlbumTransformerFactory', 'songTransformerService' => 'RestServerDemo\\Service\\SongsTransformerFactory', 'sessionconfig' => function ($sm) {
         $config = $sm->get('Config');
         $sessionConfig = new SessionConfig();
         if (isset($config['session'])) {
             $sessionConfig->setOptions($config['session']);
         }
         return $sessionConfig;
     }));
 }
Пример #28
0
 public function bootstrapSession(MvcEvent $e)
 {
     $serviceManager = $e->getApplication()->getServiceManager();
     $sessionConfig = new SessionConfig();
     $config = $serviceManager->get('Config');
     $sessionConfig->setOptions($config['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     Container::setDefaultManager($sessionManager);
     //prevent session fixation by generating new session id every 5 min
     $session = new Container();
     //uses the "Default" namespace
     if (!isset($session->generated) || $session->generated < time() - 300) {
         $sessionManager->regenerateId();
         $session->generated = time();
     }
 }
Пример #29
0
 /**
  * Create a session manager using the cache manager as storage
  * @return Zend\Session\Manager
  */
 public function _initSessionManager()
 {
     $container = $this;
     $this['sessionManager'] = $this->share(function () use($container) {
         $sessionConfigs = $container['configs']['session'];
         $saveHandler = new Cache($container['cacheManager']);
         $config = new SessionConfig();
         $config->setOptions($sessionConfigs);
         $manager = new SessionManager($config);
         $manager->setSaveHandler($saveHandler);
         Container::setDefaultManager($manager);
         return $manager;
     });
 }
Пример #30
0
use JeremyKendall\Password\PasswordValidator;
use JeremyKendall\Slim\Auth\Adapter\Db\PdoAdapter;
use JeremyKendall\Slim\Auth\Bootstrap;
use JeremyKendall\Slim\Auth\Exception\HttpForbiddenException;
use JeremyKendall\Slim\Auth\Exception\HttpUnauthorizedException;
use Zend\Authentication\Storage\Session as SessionStorage;
use Zend\Session\Config\SessionConfig;
use Zend\Session\SessionManager;
require '../lib/Acl.php';
require '../settings.php';
$app = new \Slim\slim(array('mode' => 'developement', 'debug' => true));
// Configure Slim Auth components
$validator = new PasswordValidator();
$adapter = new PdoAdapter(getDb(), 'users', 'username', 'password', $validator);
$acl = new lib\Acl();
$sessionConfig = new SessionConfig();
$sessionConfig->setOptions(array('remember_me_seconds' => 60 * 60 * 24 * 7, 'name' => $applicationFolderName));
$sessionManager = new SessionManager($sessionConfig);
$sessionManager->rememberMe();
$storage = new SessionStorage(null, null, $sessionManager);
$authBootstrap = new Bootstrap($app, $adapter, $acl);
$authBootstrap->setStorage($storage);
$authBootstrap->bootstrap();
require '../lib/notorm/NotORM.php';
$pdo = new PDO('mysql:dbhost=' . $hostname . ';dbname=' . $database . ';charset=utf8', $dbuser, $dbpassword);
$db = new NotORM($pdo);
/* Get users */
$app->get('/users', function () use($app, $db) {
    try {
        $users = array();
        foreach ($db->users() as $user) {