| | <?php |
| |
|
| | namespace Kanboard\Core\Session; |
| |
|
| | use Kanboard\Core\Base; |
| | use Symfony\Contracts\EventDispatcher\Event; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class SessionManager extends Base |
| | { |
| | |
| | |
| | |
| | |
| | |
| | const EVENT_DESTROY = 'session.destroy'; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public static function isOpen() |
| | { |
| | return session_id() !== ''; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function open() |
| | { |
| | if (SESSION_HANDLER === 'db') { |
| | session_set_save_handler(new SessionHandler($this->db), true); |
| | } |
| |
|
| | $this->configure(); |
| |
|
| | if (ini_get('session.auto_start') == 1) { |
| | session_destroy(); |
| | } |
| |
|
| | session_name('KB_SID'); |
| | session_start(); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function close() |
| | { |
| | $this->dispatcher->dispatch(new Event(), self::EVENT_DESTROY); |
| |
|
| | |
| | $params = session_get_cookie_params(); |
| |
|
| | setcookie( |
| | session_name(), |
| | '', |
| | time() - 42000, |
| | $params['path'], |
| | $params['domain'], |
| | $params['secure'], |
| | $params['httponly'] |
| | ); |
| |
|
| | session_unset(); |
| | session_destroy(); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | private function configure() |
| | { |
| | |
| | session_set_cookie_params( |
| | SESSION_DURATION, |
| | $this->helper->url->dir() ?: '/', |
| | null, |
| | $this->request->isHTTPS(), |
| | true |
| | ); |
| |
|
| | |
| | ini_set('session.use_only_cookies', '1'); |
| | ini_set('session.use_trans_sid', '0'); |
| |
|
| | |
| | ini_set('session.use_strict_mode', '1'); |
| |
|
| | |
| | ini_set('session.hash_function', '1'); |
| | ini_set('session.hash_bits_per_character', 6); |
| |
|
| | |
| | ini_set('session.entropy_file', '/dev/urandom'); |
| | ini_set('session.entropy_length', '256'); |
| | } |
| | } |
| |
|