Merge pull request #237 from flaviocopes/feature/separate-sessions-for-site-and-admin

Feature/separate sessions for site and admin
This commit is contained in:
Andy Miller
2015-07-31 11:05:56 -06:00
2 changed files with 11 additions and 3 deletions

View File

@@ -174,8 +174,8 @@ class Grav extends Container
// Initialize configuration.
$debugger->startTimer('_config', 'Configuration');
$this['config']->init();
$this['session']->init();
$this['uri']->init();
$this['session']->init();
$this['errors']->resetHandlers();
$debugger->init();
$this['config']->debug();

View File

@@ -21,6 +21,14 @@ class Session extends \RocketTheme\Toolbox\Session\Session
$config = $this->grav['config'];
if ($config->get('system.session.enabled')) {
// Only activate admin if we're inside the admin path.
$is_admin = false;
$route = $config->get('plugins.admin.route');
$base = '/' . trim($route, '/');
if (substr($uri->route(), 0, strlen($base)) == $base) {
$is_admin = true;
}
$session_timeout = $config->get('system.session.timeout', 1800);
$session_path = $config->get('system.session.path', '/' . ltrim($uri->rootUrl(false), '/'));
@@ -30,8 +38,8 @@ class Session extends \RocketTheme\Toolbox\Session\Session
$session_path
);
$site_identifier = $config->get('site.title', 'unkown');
$this->setName($config->get('system.session.name', 'grav_site') . '_' . substr(md5($site_identifier), 0, 7));
$site_identifier = $config->get('site.title', 'unknown');
$this->setName($config->get('system.session.name', 'grav_site') . '_' . substr(md5($site_identifier), 0, 7) . ($is_admin ? '_admin' : ''));
$this->start();
setcookie(session_name(), session_id(), time() + $session_timeout, $session_path);
}