matrix-register/lib/base.php
Sebastian Wagner 0db4b5c61d types & cleanups for DB initialization
docker:
dockerfile for php7.3 with pgsql
compose file for db, adminer & php
mocked user table
2021-04-06 21:28:32 +02:00

112 lines
3 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";
/**
* @var Config
*/
public $config; // Instanz der die Klasse Config
/**
* @var Logger
*/
public $log; // Instanz der Klasse Logger
/**
* @var Database
*/
public $db; // Instanz der Klasse Database
/**
* @var string
*/
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
* Instanzen der Klassen Config und Logger übergeben.
*/
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.
* TODO: Die Funktion nach common.php auslagern?
*/
try {
$this->token = bin2hex(random_bytes($length));
} catch (Exception $e) {
$this->log->e("Token creation failed");
return false;
}
return true;
}
}