matrix-register/lib/base.php

112 lines
3 KiB
PHP
Raw Normal View History

2021-03-01 16:56:53 +01:00
<?php
/**
* file: lib/base.php
* date: 28.02.2021
* user: bernd@nr18.space
2021-03-01 17:03:01 +01:00
* desc: Basisklasse für die Klassen Request und Registrator.
2021-03-01 16:56:53 +01:00
*/
if (!defined('INCLUDES_ALLOWED'))
die('Access denied.');
2021-03-01 16:56:53 +01:00
require("db.php");
require("config.php");
require("logger.php");
class BaseClass {
/**
2021-03-01 17:03:01 +01:00
* 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).
2021-03-01 16:56:53 +01:00
*/
private $config_path = "/etc/matrix-register/register.ini";
2021-03-04 23:24:04 +01:00
/**
* @var Config
*/
2021-03-01 16:56:53 +01:00
public $config; // Instanz der die Klasse Config
2021-03-04 23:24:04 +01:00
/**
* @var Logger
*/
2021-03-01 16:56:53 +01:00
public $log; // Instanz der Klasse Logger
2021-03-04 23:24:04 +01:00
/**
* @var Database
*/
2021-03-01 16:56:53 +01:00
public $db; // Instanz der Klasse Database
2021-03-04 23:24:04 +01:00
/**
* @var string
*/
2021-03-01 16:56:53 +01:00
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");
}
2021-03-02 23:52:10 +01:00
$this->log->d("Base class instance successfull created");
2021-03-01 16:56:53 +01:00
/**
* Instanz der Klasse Config erstellen und Konfigurationsdatei
* einlesen lassen.
*/
try {
$this->config = new Config();
2021-03-02 23:52:10 +01:00
$this->log->d("Configuration object successfull created");
2021-03-01 16:56:53 +01:00
$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
2021-03-04 19:53:38 +01:00
* Instanzen der Klassen Config und Logger übergeben.
2021-03-01 16:56:53 +01:00
*/
2021-03-04 19:53:38 +01:00
try {
$this->db = getDatabase($this->config, $this->log);
} catch (Exception $e) {
$this->log->e("Error: {$e->getMessage()}");
}
2021-03-01 16:56:53 +01:00
}
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.
2021-03-04 19:53:38 +01:00
* TODO: Die Funktion nach common.php auslagern?
2021-03-01 16:56:53 +01:00
*/
try {
$this->token = bin2hex(random_bytes($length));
} catch (Exception $e) {
$this->log->e("Token creation failed");
return false;
}
return true;
}
}