Session.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Grav\Common;
  3. /**
  4. * Wrapper for Session
  5. */
  6. class Session extends \RocketTheme\Toolbox\Session\Session
  7. {
  8. protected $grav;
  9. protected $session;
  10. public function __construct(Grav $grav)
  11. {
  12. $this->grav = $grav;
  13. }
  14. public function init()
  15. {
  16. /** @var Uri $uri */
  17. $uri = $this->grav['uri'];
  18. $config = $this->grav['config'];
  19. $is_admin = false;
  20. $session_timeout = $config->get('system.session.timeout', 1800);
  21. $session_path = $config->get('system.session.path', '/' . ltrim($uri->rootUrl(false), '/'));
  22. // Activate admin if we're inside the admin path.
  23. if ($config->get('plugins.admin.enabled')) {
  24. $route = $config->get('plugins.admin.route');
  25. $base = '/' . trim($route, '/');
  26. if (substr($uri->route(), 0, strlen($base)) == $base) {
  27. $session_timeout = $config->get('plugins.admin.session.timeout', 1800);
  28. $is_admin = true;
  29. }
  30. }
  31. if ($config->get('system.session.enabled') || $is_admin) {
  32. // Define session service.
  33. parent::__construct(
  34. $session_timeout,
  35. $session_path
  36. );
  37. $unique_identifier = GRAV_ROOT;
  38. $this->setName($config->get('system.session.name', 'grav_site') . '-' . substr(md5($unique_identifier), 0, 7) . ($is_admin ? '-admin' : ''));
  39. $this->start();
  40. setcookie(session_name(), session_id(), time() + $session_timeout, $session_path);
  41. }
  42. }
  43. }