diff --git a/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908.xml b/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908.xml deleted file mode 100644 index 4fccad1..0000000 --- a/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908.xml +++ /dev/null @@ -1,1833 +0,0 @@ - - - - - 3.51.1 - - - - - - - - - - - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - window - - - 1 - - - 1 - - - 1 - - - - 1 - 1 - - - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - - - window - - - window - - - window - - - - - - 1 - 1 - - - 1 - 1 - - - 1 - - - window - - - - 1 - - - window - - - 1 - - - 1 - 1 - - - - - - 1 - - - - - 1 - - - 1 - - - window - - - window - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - window - - - 1 - window - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - window - - - 1 - window - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - window - - - window - - - window - - - - window - - - window - - - window - - - window - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - aggregate - - - 1 - - - 1 - - - - - - 1 - 1 - - - window - - - aggregate - - - 1 - 1 - - - window - - - 1 - - - aggregate - - - window - - - window - - - 1 - - - 1 - - - - - - - - window - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - - 1 - - - 1 - - - - - window - - - 1 - - - 1 - - - - - - 1 - - - 1 - - - window - - - 1 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - - 1 - - - - - 1 - - - - aggregate - - - - 1 - 1 - - - window - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - window - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - window - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - aggregate - - - aggregate - - - 1 - - - 1 - 2026-06-05.07:13:27 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - R - - - R - - - R - - - R - - - R - - - R - - - 1 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 1 -
- - 1 - TEXT|0s - - - 2 - TEXT|0s - - - 3 - TEXT|0s - - - 4 - INT|0s - - - 5 - TEXT|0s - -
-
\ No newline at end of file diff --git a/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908/storage_v2/_src_/schema/main.uQUzAA.meta b/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908/storage_v2/_src_/schema/main.uQUzAA.meta deleted file mode 100644 index 8dab49c..0000000 --- a/.idea/dataSources/315cb5c9-2b0f-435b-b602-59823b160908/storage_v2/_src_/schema/main.uQUzAA.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:main -! [0, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba.xml b/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba.xml deleted file mode 100644 index 9fc8217..0000000 --- a/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba.xml +++ /dev/null @@ -1,1833 +0,0 @@ - - - - - 3.51.1 - - - - - - - - - - - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - window - - - 1 - - - 1 - - - 1 - - - - 1 - 1 - - - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - - - window - - - window - - - window - - - - - - 1 - 1 - - - 1 - 1 - - - 1 - - - window - - - - 1 - - - window - - - 1 - - - 1 - 1 - - - - - - 1 - - - - - 1 - - - 1 - - - window - - - window - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - window - - - 1 - window - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - window - - - 1 - window - - - 1 - 1 - - - 1 - 1 - - - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - 1 - 1 - - - window - - - window - - - window - - - - window - - - window - - - window - - - window - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - aggregate - - - 1 - - - 1 - - - - - - 1 - 1 - - - window - - - aggregate - - - 1 - 1 - - - window - - - 1 - - - aggregate - - - window - - - window - - - 1 - - - 1 - - - - - - - - window - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - - 1 - - - 1 - - - - - window - - - 1 - - - 1 - - - - - - 1 - - - 1 - - - window - - - 1 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - - - 1 - - - - - 1 - - - - aggregate - - - - 1 - 1 - - - window - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - window - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - window - - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - - - 1 - 1 - - - 1 - - - 1 - - - aggregate - - - aggregate - - - 1 - - - 1 - 2026-06-05.07:12:20 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - R - - - R - - - R - - - R - - - R - - - R - - - 1 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - R - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - 2 - - - 3 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 2 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - R - - - 1 - - - 1 -
- - 1 - TEXT|0s - - - 2 - TEXT|0s - - - 3 - TEXT|0s - - - 4 - INT|0s - - - 5 - TEXT|0s - -
-
\ No newline at end of file diff --git a/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba/storage_v2/_src_/schema/main.uQUzAA.meta b/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba/storage_v2/_src_/schema/main.uQUzAA.meta deleted file mode 100644 index 8dab49c..0000000 --- a/.idea/dataSources/a0abcd0a-1d6f-40e4-88be-f442bcb431ba/storage_v2/_src_/schema/main.uQUzAA.meta +++ /dev/null @@ -1,2 +0,0 @@ -#n:main -! [0, 0, null, null, -2147483648, -2147483648] diff --git a/content/deleteAccount.php b/content/deleteAccount.php index 6f02a18..8d42198 100644 --- a/content/deleteAccount.php +++ b/content/deleteAccount.php @@ -2,19 +2,29 @@ require_once "php/model/UserManager.php"; -$dao = UserManager::getInstance(); - /* Deregistrierung Funktion: Entfernt User aus der Datenbank und beendet die Session */ -if (isset($_SESSION["user_email"])) { - $dao->deleteUser($_SESSION["user_email"]); -} +try { -$_SESSION = []; -session_destroy(); + $dao = UserManager::getInstance(); -header("Location: index.php"); -exit(); \ No newline at end of file + if (isset($_SESSION["user_email"])) { + $dao->deleteUser($_SESSION["user_email"]); + } + + $_SESSION = []; + session_destroy(); + + header("Location: index.php"); + exit(); + +} catch (Exception $e) { + + $_SESSION["message"] = "internal_error"; + + header("Location: index.php?pfad=profile"); + exit(); +} \ No newline at end of file diff --git a/php/model/DatabaseUserManager.php b/php/model/DatabaseUserManager.php index a985160..4e04ae5 100644 --- a/php/model/DatabaseUserManager.php +++ b/php/model/DatabaseUserManager.php @@ -2,10 +2,24 @@ require_once "UserManagerDAO.php"; +/** + * Klasse für den Zugriff auf Benutzerdaten über eine SQLite-Datenbank. + * + * Diese Klasse verwendet PDO, Prepared Statements und speichert + * Benutzerdaten in der Datei db/users.db. + */ class DatabaseUserManager implements UserManagerDAO { private static $instance = null; + /** + * Konstruktor. + * + * Erstellt die Benutzerdatenbank und die Tabelle users, + * falls diese noch nicht existieren. + * + * @throws RuntimeException wenn die Datenbank nicht erstellt werden kann + */ public function __construct() { try { @@ -27,6 +41,13 @@ class DatabaseUserManager implements UserManagerDAO { } } + /** + * Baut eine Verbindung zur SQLite-Datenbank auf. + * + * @return PDO Datenbankverbindung + * + * @throws RuntimeException wenn keine Verbindung hergestellt werden kann + */ private function getConnection() { try { @@ -42,6 +63,11 @@ class DatabaseUserManager implements UserManagerDAO { } } + /** + * Gibt die Singleton-Instanz des DatabaseUserManagers zurück. + * + * @return DatabaseUserManager Instanz des DatabaseUserManagers + */ public static function getInstance() { if (self::$instance == null) { @@ -51,6 +77,16 @@ class DatabaseUserManager implements UserManagerDAO { return self::$instance; } + /** + * Sucht einen Benutzer anhand seiner E-Mail-Adresse. + * + * @param string $email E-Mail-Adresse des Benutzers + * + * @return array|null Benutzerdaten als Array oder null, + * wenn kein Benutzer gefunden wurde + * + * @throws RuntimeException wenn der Benutzer nicht geladen werden kann + */ public function findUser($email) { try { @@ -72,6 +108,22 @@ class DatabaseUserManager implements UserManagerDAO { } } + /** + * Fügt einen neuen Benutzer in die Datenbank ein. + * + * Die Speicherung erfolgt innerhalb einer Transaktion. + * Doppelte E-Mail-Adressen werden durch den Primary Key verhindert. + * + * @param string $email E-Mail-Adresse des Benutzers + * @param string $vorname Vorname des Benutzers + * @param string $nachname Nachname des Benutzers + * @param string $password Passwort-Hash des Benutzers + * + * @return void + * + * @throws InvalidArgumentException wenn die E-Mail-Adresse bereits verwendet wird + * @throws RuntimeException wenn der Benutzer nicht gespeichert werden kann + */ public function addUser($email, $vorname, $nachname, $password) { try { @@ -107,6 +159,24 @@ class DatabaseUserManager implements UserManagerDAO { } } + /** + * Aktualisiert die Daten eines bestehenden Benutzers. + * + * Optional kann zusätzlich das Passwort geändert werden. + * Wenn kein neues Passwort übergeben wird, bleibt das alte Passwort erhalten. + * + * @param string $oldEmail Aktuelle E-Mail-Adresse des Benutzers + * @param string $newEmail Neue E-Mail-Adresse des Benutzers + * @param string $vorname Neuer Vorname des Benutzers + * @param string $nachname Neuer Nachname des Benutzers + * @param string|null $password Neues Passwort oder null + * + * @return bool true, wenn der Benutzer aktualisiert wurde, + * sonst false + * + * @throws InvalidArgumentException wenn die neue E-Mail-Adresse bereits verwendet wird + * @throws RuntimeException wenn der Benutzer nicht aktualisiert werden kann + */ public function updateUser($oldEmail, $newEmail, $vorname, $nachname, $password = null) { try { @@ -160,6 +230,16 @@ class DatabaseUserManager implements UserManagerDAO { } } + /** + * Löscht einen Benutzer anhand seiner E-Mail-Adresse. + * + * @param string $email E-Mail-Adresse des zu löschenden Benutzers + * + * @return bool true, wenn der Benutzer gelöscht wurde, + * sonst false + * + * @throws RuntimeException wenn der Benutzer nicht gelöscht werden kann + */ public function deleteUser($email) { try { diff --git a/php/validator/user-validator.php b/php/validator/user-validator.php index 0f3bc40..0f789cf 100644 --- a/php/validator/user-validator.php +++ b/php/validator/user-validator.php @@ -1,5 +1,15 @@ = 5 && $zeichenAnzahl <= 12; } +/** + * Prüft ein optionales Passwort. + * + * Ein leeres Passwort ist erlaubt und bedeutet, + * dass das bestehende Passwort unverändert bleibt. + * Falls ein Passwort angegeben wurde, wird es + * mit den normalen Passwortregeln geprüft. + * + * @param string|null $password Zu prüfendes Passwort + * + * @return bool true wenn das Passwort gültig oder leer ist, + * sonst false + */ function userOptionalPasswordValidator($password) { if (!isset($password) || $password === '') {