forked from berhsi/matrix-register
97 lines
2.8 KiB
PHP
97 lines
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* file: lib/base.php
|
|
* date: 28.02.2021
|
|
* user: bernd@nr18.space
|
|
* desc: Basisklasse für die Klassen Request und Registrator.
|
|
*/
|
|
|
|
|
|
if (!defined('INCLUDES_ALLOWED'))
|
|
die('Access denied.');
|
|
|
|
require("db.php");
|
|
require("config.php");
|
|
require("logger.php");
|
|
|
|
|
|
class BaseClass {
|
|
|
|
/**
|
|
* Basisklasse ... erstellt die Instanzen für die Konfiguration und die
|
|
* Datenbank. Bildet die Grundlage für Request (Anfrage des Accounts)
|
|
* und Registrator (Registrierung des Accounts).
|
|
*/
|
|
|
|
private $config_path = "/etc/matrix-register/register.ini";
|
|
public $config; // Instanz der die Klasse Config
|
|
public $log; // Instanz der Klasse Logger
|
|
public $db; // Instanz der Klasse Database
|
|
public $token = ""; // Variable für Token oder temp. Password
|
|
|
|
public function __construct() {
|
|
|
|
/**
|
|
* Beim Erstellen der Instanz wird das Einlesen der Config
|
|
* angestoßen. Sollte das Fehlschlagen, stellt die Klasse Config
|
|
* auch Defaultwerte zur Verfügung. Danach wird versucht ein
|
|
* Datenbankobjekt zu bekommen.
|
|
*/
|
|
|
|
/**
|
|
* Instanz der Klasse Logger erstellen. Nach den Erstellen der
|
|
* Instanz von Config wird noch das Loglevel angepaßt.
|
|
*/
|
|
try {
|
|
$this->log = new Logger();
|
|
} catch (Exception $e) {
|
|
throw new Exception("Can't create logger instance");
|
|
}
|
|
$this->log->d("Base class instance successfull created");
|
|
/**
|
|
* Instanz der Klasse Config erstellen und Konfigurationsdatei
|
|
* einlesen lassen.
|
|
*/
|
|
try {
|
|
$this->config = new Config();
|
|
$this->log->d("Configuration object successfull created");
|
|
$this->config->loadConfig($this->config_path);
|
|
$this->log->d("Configuration file parsed");
|
|
} catch (Exception $e) {
|
|
$this->log->e("Error: {$e->getMessage()}");
|
|
}
|
|
$this->log->setLogLevel($this->config->getLogLevel());
|
|
/**
|
|
* Instanz der Klasse Datenbank erstellen. Die Datenbank bekommt die
|
|
* Instanz der Klasse Config übergeben. Wenn nicht vorhanden wird
|
|
* die Tabelle requests angelegt.
|
|
*/
|
|
try {
|
|
$this->db = getDatabase($this->config, $this->log);
|
|
} catch (Exception $e) {
|
|
$this->log->e("Error: {$e->getMessage()}");
|
|
}
|
|
}
|
|
|
|
public function generateToken(int $length): bool {
|
|
|
|
/**
|
|
* Generiert einen Token aus zufälligen Bits der Länge 'length'.
|
|
* Speichert diesen Token in der als Refeenz übergebenen Variable.
|
|
*/
|
|
|
|
try {
|
|
$this->token = bin2hex(random_bytes($length));
|
|
} catch (Exception $e) {
|
|
$this->log->e("Token creation failed");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|