<?php
use
\application\models\Sessions;
abstract
class
base
extends
\system\engine\HF_Controller {
protected
$session
= null;
protected
$sessionData
= null;
public
function
isLoggedIn() {
if
(!
$this
->sessionData && !isset(
$this
->sessionData->userId)) {
header(
"Location: /login"
);
return
false;
}
else
{
return
true;
}
}
public
function
__construct(
$config
,
$core
,
$tpl
)
{
parent::__construct(
$config
,
$core
,
$tpl
);
if
(
$this
->config[
"DATABASE_TYPE"
] ==
"SQLITE"
) {
$this
->pdo =
new
PDO(
"sqlite:kritbot.sqlite3"
);
\vendor\DB\DB::
$c
=
$this
->pdo;
}
else
{
$this
->pdo =
new
PDO(
"mysql:dbname={$this->config['MYSQL_DBNAME']};host={$this->config['MYSQL_HOST']}"
,
$this
->config[
'MYSQL_USER'
],
$this
->config[
'MYSQL_PASS'
],
array
(
PDO::MYSQL_ATTR_INIT_COMMAND =>
"SET NAMES utf8"
,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
\vendor\DB\DB::
$c
=
$this
->pdo;
}
if
(isset(
$_COOKIE
[
"session"
])) {
$validSession
= Sessions::getByField(
"sessionid"
,
$_COOKIE
[
"session"
]);
if
(
$validSession
) {
try
{
$this
->session =
$validSession
[0];
$this
->sessionData = json_decode(
$this
->session->data);
if
(
$this
->sessionData == null) {
return
;
}
$this
->user = \application\models\Users::getByField(
"id"
,
$this
->sessionData->userId)[0];
}
catch
(\Exception
$e
) {
setcookie(
"session"
,
""
, time() - 3600);
header(
"Location: /login"
);
}
}
else
{
setcookie(
"session"
,
""
, time() - 3600);
header(
"Location: /login"
);
}
}
else
{
$bool
= true;
$bytes
= openssl_random_pseudo_bytes (10,
$bool
);
$sessionId
= bin2hex(
$bytes
);
$this
->session =
new
Sessions();
$this
->session->ip =
$_SERVER
[
"REMOTE_ADDR"
];
$this
->session->userAgent =
$_SERVER
[
"HTTP_USER_AGENT"
];
$this
->session->sessionid =
$sessionId
;
$this
->session->save();
setcookie(
"session"
,
$sessionId
, 2147483647);
}
}
}