Menu

[f1bb48]: / api / sessioncontroller.class.php  Maximize  Restore  History

Download this file

127 lines (111 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
if (!defined('PME_LOGIN_KEY')) {
DEFINE('PME_LOGIN_KEY', 'pme_login_key');
}
if (!defined('PME_LOGIN_TIME')) {
DEFINE('PME_LOGIN_TIME' , 900); // 15 minutes
}
if (!defined('PME_PATH')) {
DEFINE('PME_PATH' , '/'); // root of domain for cookie
}
if (!defined('PME_HOST')) {
$host = $_SERVER['HTTP_HOST'];
if ($pos = strpos($host, ':')) {
$host = substr($host, 0, $pos);
}
DEFINE('PME_HOST', $host);
}
class SessionController
{
public $session_hash = '';
private $db;
function __construct($db) {
$this->db = $db;
}
public function login($login_id, $pme_password)
{
$sql = "SELECT `user_code` AS 'User', NOW() AS 'LoginTime' FROM `pme_users` WHERE `login_id` = '" . $login_id . "' AND `password` = '" . MD5($pme_password) . "'";
$result = $this->db->Query($sql);
if ($result && $result['User'] != '') {
$pme_user = $result['User'];
$session_hash = $pme_user . ':' . MD5($login_id . $pme_password . $result['LoginTime']);
return $session_hash;
}
return null;
}
// logout
public function logout($login_id, $pme_hash)
{
return false;
}
}
// check if logged in, and redirect if not
function sessionCtl_requireLogin() {
if (!sessionCtl_isLoggedIn()) {
// redirect to login page
sessionCtl_returnerror(401, "Login required");
}
}
// check if logged in
function sessionCtl_isLoggedIn() {
return isset($_COOKIE[PME_LOGIN_KEY]);
}
function sessionCtl_storelogin($token) {
if (PHP_VERSION_ID < 70300) {
setcookie(PME_LOGIN_KEY,
$token,
time() + PME_LOGIN_TIME,
PME_PATH . "; SameSite=Strict",
PME_HOST);
} else {
setcookie(PME_LOGIN_KEY, $token, [
'expires' => time() + PME_LOGIN_TIME,
'path' => PME_PATH,
'domain' => PME_HOST,
'secure' => false,
'SameSite' => 'Strict']);
}
}
// cancel login related storage
function sessionCtl_clearlogin() {
// login cookie
if (PHP_VERSION_ID < 70300) {
setcookie(PME_LOGIN_KEY,
"",
time() + LOGIN_TIME,
PME_PATH . "; SameSite=Strict",
PME_HOST);
} else {
setcookie(PME_LOGIN_KEY, "", [
'expires' => time() - 3600,
'path' => PME_PATH,
'SameSite' => 'Strict']);
}
}
// force redirect to logout
function sessionCtl_logout() {
sessionCtl_clearlogin();
// redirect to login page
header('Location: ' . PME_PATH . '/');
exit;
}
function sessionCtl_returnerror($en, $msg) {
header("Content-Type: text/plain; charset=UTF-8");
echo json_encode(array("message" => $msg));
//header('Location: ' . PME_PATH . '/');
exit;
}
// helper function used during log-in
function retrieveMyEditVersion($file) {
$str = '>=5.7.6';
if (@file_exists($file) && @is_readable($file)) {
if (($f = fopen($file, 'r')) != false) {
$str = trim(fread($f, 4096));
fclose($f);
if (strpos($str, ' ') !== false || strlen($str) > 9) {
$str = '>5.7.5'; /* we capture error silently */
}
}
}
return $str;
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.