| ␊ |
| abstract class base extends \system\engine\HF_Controller {␊ |
| ␊ |
| /** @var \application\models\Users $user */␊ |
| protected $user = null;␊ |
| protected $session = null;␊ |
| protected $sessionData = null;␊ |
| public function isLoggedIn() {␊ |
| protected $loginRequired = true;␊ |
| protected function isLoggedIn() {␊ |
| if (!$this->sessionData && !isset($this->sessionData->userId)) {␊ |
| header("Location: /login");␊ |
| return false;␊ |
|
| 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;␊ |
| }␊ |
| protected function loadRender($template, $parameters=array()) {␊ |
| $newParameters = array_merge($parameters, ["user" => $this->user]);␊ |
| return parent::loadRender($template, $newParameters);␊ |
| }␊ |
| ␊ |
| protected function isUserLoggedIn() {␊ |
| if (isset($_COOKIE["session"])) {␊ |
| $validSession = Sessions::getByField("sessionid", $_COOKIE["session"]);␊ |
| if ($validSession) {␊ |
|
| $this->session = $validSession[0];␊ |
| $this->sessionData = json_decode($this->session->data);␊ |
| if ($this->sessionData == null) {␊ |
| return;␊ |
| return false;␊ |
| }␊ |
| $this->user = \application\models\Users::getByField("id", $this->sessionData->userId)[0];␊ |
| return true;␊ |
| } catch (\Exception $e) {␊ |
| setcookie("session", "", time() - 3600);␊ |
| header("Location: /login");␊ |
| return false;␊ |
| }␊ |
| } else {␊ |
| setcookie("session", "", time() - 3600);␊ |
| header("Location: /login");␊ |
| return false;␊ |
| }␊ |
| }␊ |
| return false;␊ |
| }␊ |
| ␊ |
| protected function login() {␊ |
| if (isset($_COOKIE["session"])) {␊ |
| if (!$this->user) {␊ |
| header("Location: /login");␊ |
| }␊ |
| } else {␊ |
| $bool = true;␊ |
| $bytes = openssl_random_pseudo_bytes (10, $bool);␊ |
| $bytes = openssl_random_pseudo_bytes(10, $bool);␊ |
| $sessionId = bin2hex($bytes);␊ |
| $this->session = new Sessions();␊ |
| $this->session->ip = $_SERVER["REMOTE_ADDR"];␊ |
|
| $this->session->save();␊ |
| setcookie("session", $sessionId, 2147483647);␊ |
| }␊ |
| }␊ |
| ␊ |
| 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;␊ |
| }␊ |
| ␊ |
| $this->isUserLoggedIn();␊ |
| if ($this->loginRequired) {␊ |
| $this->login();␊ |
| }␊ |
| }␊ |
| } |