You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
PHP
95 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace brain\data;
|
|
|
|
use ReallySimpleJWT\Token;
|
|
|
|
use function _\find;
|
|
|
|
class Session
|
|
{
|
|
private static $file = "../content/.session";
|
|
private static $data = [
|
|
"member" => "",
|
|
"token" => "",
|
|
"form_token" => "",
|
|
];
|
|
public static function start()
|
|
{
|
|
if (!is_file(self::$file)) {
|
|
file_put_contents(self::$file, json_encode(self::$data));
|
|
} else {
|
|
($new = fopen(self::$file, "w")) or die("Unable to open file!");
|
|
fwrite($new, json_encode(self::$data));
|
|
fclose($new);
|
|
}
|
|
}
|
|
|
|
public static function active()
|
|
{
|
|
if (!is_file(self::$file)) {
|
|
return false;
|
|
} else {
|
|
$data = json_decode(file_get_contents(self::$file), true);
|
|
if ($data["member"] != null) {
|
|
$secret = (new Settings())->getFolks("secret");
|
|
if ($secret == null) {
|
|
return false;
|
|
} else {
|
|
if (
|
|
Token::validate($data["token"], $secret) &&
|
|
Token::validateExpiration($data["token"], $secret)
|
|
) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function verifyToken($token)
|
|
{
|
|
$data = json_decode(file_get_contents(self::$file), true);
|
|
if ($data["member"] != null) {
|
|
$secret = (new Settings())->getFolks("secret");
|
|
if (
|
|
Token::validate($token, $secret) &&
|
|
Token::validateExpiration($token, $secret)
|
|
) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function set($key, $value)
|
|
{
|
|
$data = json_decode(file_get_contents(self::$file), true);
|
|
$data[$key] = $value;
|
|
($fresh = fopen(self::$file, "w")) or die("Unable to open file!");
|
|
fwrite($fresh, json_encode($data));
|
|
fclose($fresh);
|
|
}
|
|
|
|
public static function get($key)
|
|
{
|
|
$data = json_decode(file_get_contents(self::$file), true);
|
|
|
|
return $data[$key];
|
|
}
|
|
|
|
public static function kill()
|
|
{
|
|
($fresh = fopen(self::$file, "w")) or die("Unable to open file!");
|
|
fwrite($fresh, json_encode(self::$data));
|
|
fclose($fresh);
|
|
}
|
|
}
|