diff --git a/webseite/classes/User.php b/webseite/classes/User.php index 84278fe..0608b41 100644 --- a/webseite/classes/User.php +++ b/webseite/classes/User.php @@ -99,6 +99,51 @@ class User return false; } + /** + * Löscht einen Benutzer + * @param string $password Richtiges Passwort zu diesem Nutzer + * @return bool true, wenn erfolgreich gelöscht, sonst false + */ + public function delete(string $password): bool + { + if(!$this->isPasswordCorrect($password)) { + return false; + } + + if(!$this->logout()) { + return false; + } + + $file = fopen(self::$userdataDirectory . self::$userdataFile, "r"); + if(!$file) { + return false; + } + + $newCsv = array(); + + while (($data = fgetcsv($file, 300)) !== false) { + if (count($data) != 2) { + continue; + } + if ($data[0] !== $this->username) { + $newCsv[] = $data; + } + } + fclose($file); + + $file = fopen(self::$userdataDirectory . self::$userdataFile, "w"); + if(!$file) { + return false; + } + + foreach ($newCsv as $newCsvData) { + fputcsv($file, $newCsvData); + } + fclose($file); + + return true; + } + /** * Prüft, ob ein Passwort für diesen Benutzer korrekt ist * @param string $password Zu prüfendes Passwort