parent
3e12705ff6
commit
d7f3734d78
@ -1,116 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
declare(strict_types=1); |
|
||||||
|
|
||||||
/** |
|
||||||
* @author Robert Strutts <Robert@TryingToScale.com> |
|
||||||
* @copyright Copyright (c) 2022, Robert Strutts. |
|
||||||
* @license https://mit-license.org/ |
|
||||||
*/ |
|
||||||
|
|
||||||
namespace tts\services; |
|
||||||
|
|
||||||
class sessions { |
|
||||||
|
|
||||||
public function __construct(string $type) { |
|
||||||
if ($type !== "none") { |
|
||||||
switch ($type) { |
|
||||||
case 'db': |
|
||||||
$handler = new db_sessions(); |
|
||||||
break; |
|
||||||
case 'memory': |
|
||||||
$handler = new memory_sessions(); |
|
||||||
break; |
|
||||||
case 'file': |
|
||||||
default : |
|
||||||
$handler = new \tts\sessions\file_sessions(); |
|
||||||
} |
|
||||||
session_set_save_handler($handler, true); |
|
||||||
} |
|
||||||
\tts\session_management::make_session_started(); |
|
||||||
} |
|
||||||
|
|
||||||
private function get_enc_data(string $data): string { |
|
||||||
$security_level = \main_tts\configure::get('session', 'session_security_level'); |
|
||||||
if ($security_level === false || empty($data)) { |
|
||||||
return $data; |
|
||||||
} else { |
|
||||||
$enc_sess = \main_tts\registry::get('di')->get_service('encryption'); |
|
||||||
$enc_sess->change_security_level($security_level); |
|
||||||
$d = $enc_sess->decrypt($data, \main_tts\configure::get('session', 'key')); |
|
||||||
unset($enc_sess); |
|
||||||
return $d; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
private function save_enc_data(string $data): string { |
|
||||||
$security_level = \main_tts\configure::get('session', 'session_security_level'); |
|
||||||
if ($security_level !== false) { |
|
||||||
$enc_sess = \main_tts\registry::get('di')->get_service('encryption'); |
|
||||||
$enc_sess->change_security_level($security_level); |
|
||||||
$data = $enc_sess->encrypt($data, px_configure::get('session', 'key')); |
|
||||||
unset($enc_sess); |
|
||||||
} |
|
||||||
return $data; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Fetch Session Variable |
|
||||||
* @param type $var key for Session |
|
||||||
* @return data from Session |
|
||||||
*/ |
|
||||||
public function get_session_var(string $var, int $flags = FILTER_DEFAULT): string { |
|
||||||
$svar = \main_tts\configure::get('session', 'session_variable') ?? false; |
|
||||||
if ($svar === false) { |
|
||||||
$svar = 'SES_'; |
|
||||||
} |
|
||||||
if (! filter_has_var(INPUT_SESSION, $svar . $var)) { |
|
||||||
return ':null'; |
|
||||||
} |
|
||||||
$content = filter_input(INPUT_SESSION, $svar . $var, $flags); |
|
||||||
if ($content === false) { |
|
||||||
throw new \Exception('Session filter: Failed!'); |
|
||||||
} |
|
||||||
return ($content === ':null') ? ':null' : $this->get_enc_data($content); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set Session Variable |
|
||||||
* @param type $var key |
|
||||||
* @param type $content data |
|
||||||
*/ |
|
||||||
public function set_session_var(string $var, string $content): void { |
|
||||||
$svar = \main_tts\configure::get('session', 'session_variable') ?? false; |
|
||||||
if ($svar === false) { |
|
||||||
$svar = 'SES_'; |
|
||||||
} |
|
||||||
$_SESSION[$svar . $var] = (empty($content)) ? ':null' : $this->save_enc_data($content); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Fetch integer from Session Variable |
|
||||||
* @param type $var |
|
||||||
* @return type |
|
||||||
*/ |
|
||||||
public function get_int($var): int { |
|
||||||
$content = $this->get_session_var($var); |
|
||||||
return ($content == ':null') ? -1 : intval($content); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Fetch Session ID |
|
||||||
* @return Session ID |
|
||||||
*/ |
|
||||||
public function get_id(): string { |
|
||||||
return session_id(); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Session Destroy |
|
||||||
*/ |
|
||||||
public function destroy(): bool { |
|
||||||
session_unset(); |
|
||||||
return session_destroy(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
Loading…
Reference in new issue