config, $this->db), die Funktion generateToken(), sowie die * Variable $this->token. */ private $dataSet = []; public function registerUser(&$message): bool { /** * Hauptfunktion der Klasse Registrator - steuert die Validierung und * das Registrieren der Anfrage. */ if (!isset($this->db)) { $this->log->e("There is no database"); return false; } $this->log->d("Validation started for token: {$_GET['token']}"); if ($this->checkToken() === true) { if ($this->generateToken($token, 32) === true) { if ($this->registerMXID() === true) { $message = "Your temporary password is {$tmp_passwd}. Please immediately change your password!"; if ($this->removeToken() === true) { return true; } } } } return false; } private function checkToken(): bool { /** * Läßt in der Tabelle requests schauen, ob es $_GET['token'] gibt. * Speichert das zurückgegebene Array in der Variable $dataSet. Gibt * die Datenbank eine Exception zurück oder ist das Array leer, gibt * sie False, andernfals True zurück. */ try { $this->dataSet = $this->db->getToken(); } catch (Exception $e) { $this->log->e("Error: {$e->getMessage()}"); return false; } $count = count($this->dataSet); if ($count === 0) { $this->log->d("Token {$_GET['token']} not found in database"); } else if ($count > 1) { $this->log->e("Error: More than one token found"); } else { $this->log->d("Token found for nick: {$this->dataSet[1]}"); return true; } return false; } private function registerMXID(string $tmp_passwd): bool { /** * Registriert den Nutzer am Matrixserver. Dazu wird ein zufälliger * String erzeugt und zusammen mit dem Nick ein CLI Tool aus dem Paket * Paket von matrix-synapse aufgerufen. */ // $cmd = "register_new_matrix_user -u {$this->dataSet[1]} -p {$tmp_pass}"; // $response = system($cmd); return true; } private function removeToken(): bool { /** * Läßt den Request aus der tabelle requests entfernen. */ $id = $this->dataSet[0]; $nick = $this->dataSet[1]; $token = $this->dataSet[2]; try { $response = $this->db->deleteToken($id); } catch (Exception $e) { $this->log->e("Error: {$e->getMessage()}"); return false; } return true; } } ?>