mirror of
https://github.com/filegator/filegator.git
synced 2025-08-05 09:57:43 +02:00
75 lines
1.7 KiB
PHP
75 lines
1.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the FileGator package.
|
|
*
|
|
* (c) Milos Stojanovic <alcalbg@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE file
|
|
*/
|
|
|
|
namespace Filegator\Services\Session\Adapters;
|
|
|
|
use Filegator\Kernel\Request;
|
|
use Filegator\Services\Service;
|
|
use Filegator\Services\Session\Session;
|
|
use Filegator\Services\Session\SessionStorageInterface;
|
|
|
|
class SessionStorage implements Service, SessionStorageInterface
|
|
{
|
|
protected $request;
|
|
|
|
protected $config;
|
|
|
|
public function __construct(Request $request)
|
|
{
|
|
$this->request = $request;
|
|
}
|
|
|
|
public function init(array $config = [])
|
|
{
|
|
// we don't have a previous session attached
|
|
if (! $this->getSession()) {
|
|
$handler = $config['handler'];
|
|
$session = new Session($handler());
|
|
$session->setName('filegator');
|
|
|
|
$this->setSession($session);
|
|
}
|
|
}
|
|
|
|
public function save()
|
|
{
|
|
$this->getSession()->save();
|
|
}
|
|
|
|
public function set(string $key, $data)
|
|
{
|
|
return $this->getSession()->set($key, $data);
|
|
}
|
|
|
|
public function get(string $key, $default = null)
|
|
{
|
|
return $this->getSession() ? $this->getSession()->get($key, $default) : $default;
|
|
}
|
|
|
|
public function invalidate()
|
|
{
|
|
if (! $this->getSession()->isStarted()) {
|
|
$this->getSession()->start();
|
|
}
|
|
|
|
$this->getSession()->invalidate();
|
|
}
|
|
|
|
private function setSession(Session $session)
|
|
{
|
|
return $this->request->setSession($session);
|
|
}
|
|
|
|
private function getSession(): ?Session
|
|
{
|
|
return $this->request->getSession();
|
|
}
|
|
}
|