<?php
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        if(!isset($_SESSION['LOGIN']) || !isset($_SESSION['UUID'])) {
            header('Location: index.php');
            die();
        }

        include 'app/FormValidator.php';
        $validator = new FormValidator(array(
            'oldPassword' => array('required' => true, 'regex' => '.{1,1000}'),
            'newPassword' => array('required' => true, 'regex' => '.{1,1000}'),
            'newPasswordRepeat' => array('required' => true, 'regex' => '.{1,1000}')
        ));

        if($validator->isValid($_POST)) {
            if($_POST['newPasswordRepeat'] == $_POST['newPassword']) {
                if(password_verify($_POST['oldPassword'], $_SESSION['PASSWORD'])) {
                    $hash = password_hash($NewPassword, PASSWORD_ARGON2ID);
                    $statement = $RUNTIME['PDO']->prepare('UPDATE auth SET passwordHash = :PasswordHash WHERE UUID = :PrincipalID'); 
                    $statement->execute(['PasswordHash' => $hash, 'PrincipalID' => $_SESSION['UUID']]);
                    $_SESSION['PASSWORD'] = $hash;
                    $_SESSION['pw_info'] = 'Neues Passwort gespeichert.';
                }
                else {
                    $_SESION['pw_info'] = 'Das alte Passwort ist nicht richtig!';
                }
            }
            else {
                $_SESSION['pw_info'] = 'Die neuen Passwörter stimmen nicht überein!';
            }
        }
        else {
            $_SESSION['pw_info'] = 'Bitte fülle das Formular vollständig aus.';
        }

        header('Location: index.php?page=password');
        die();
    }

    $HTML->setHTMLTitle("Passwort ändern");
    $HTML->importSeitenInhalt("profile.html");

    include 'app/OpenSim.php';
    $opensim = new OpenSim();

    $PartnerName = "";
    $PartnerUUID = $opensim->getPartner($_SESSION['UUID']);
    if($PartnerUUID != null)$PartnerName = $opensim->getUserName($PartnerUUID);

    $HTML->ReplaceSeitenInhalt("%%offlineIMSTATE%%", ' '); 
    $HTML->ReplaceSeitenInhalt("%%firstname%%", htmlspecialchars($_SESSION['FIRSTNAME'])); 
    $HTML->ReplaceSeitenInhalt("%%lastname%%", htmlspecialchars($_SESSION['LASTNAME'])); 
    $HTML->ReplaceSeitenInhalt("%%partner%%", htmlspecialchars($PartnerName)); 
    $HTML->ReplaceSeitenInhalt("%%email%%", htmlspecialchars($opensim->getUserMail($_SESSION['UUID']))); 
    $HTML->ReplaceSeitenInhalt("%%listAllResidentsAsJSArray%%", "");

    $pwInfo = '';
    if(isset($_SESSION['pw_info'])) {
        $pwInfo = $_SESSION['pw_info'];
        unset($_SESSION['pw_info']);
    }
    $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", $pwInfo);
    
    $HTML->build();
    echo $HTML->ausgabe();
?>