<?php

require_once "php/model/UserManager.php";

/*
    Verarbeitung der Passwortbestätigung
    Funktion: Liest die zwischengespeicherten Passwortdaten aus,
    aktualisiert das Passwort des Benutzers und gibt das Ergebnis
    für die View zurück.
*/

$title = "Passwort zurücksetzen";
$message = "";
$link = "";
$isSuccess = false;

$token = basename($_GET["token"] ?? "");
$file = "data/pending-password/" . $token . ".json";

if (empty($token) || !file_exists($file)) {

    $message = "Der Bestätigungslink ist ungültig oder bereits abgelaufen.";

} else {

    $data = json_decode(file_get_contents($file), true);

    if ($data === null || empty($data["email"]) || empty($data["password"])) {

        $message = "Die Daten zur Passwortänderung konnten nicht gelesen werden.";

    } else {

        try {

            $dao = UserManager::getInstance();
            $user = $dao->findUser($data["email"]);

            if ($user !== null) {

                $dao->updateUser(
                    $user["email"],
                    $user["email"],
                    $user["vorname"],
                    $user["nachname"],
                    $data["password"]
                );

                $_SESSION["message"] = "password_changed";
                header("Location: index.php?pfad=login");
                exit();

            } else {

                $message = "Der Benutzer konnte nicht gefunden werden.";
            }

            unlink($file);

        } catch (Exception $e) {

            $message = "Das Passwort konnte nicht geändert werden.";
        }
    }
}
