<?php

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

    if(isset($_REQUEST['oldPassword']) || @$_REQUEST['oldPassword'] != "")
    {
        $OLDPassword = trim($_REQUEST['oldPassword']);

        if($OLDPassword != "")
        {
            if(password_verify($OLDPassword, $_SESSION['PASSWORD']))
            {
                if(isset($_REQUEST['newPassword']) && $_REQUEST['newPassword'] != "")
                {
                    $NewPassword = trim($_REQUEST['newPassword']);
            
                    if($NewPassword != "")
                    {
                        if(isset($_REQUEST['newPasswordRepeate']) || @$_REQUEST['newPasswordRepeate'] != "")
                        {
                            $NewPasswordRepeate = trim($_REQUEST['newPasswordRepeate']);
                    
                            if($NewPasswordRepeate != "")
                            {
                                if($NewPasswordRepeate == $NewPassword)
                                {
                                    $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['pwChanged'] = true;

                                    header('Location: index.php?page=password');
                                    die();
                                }else{
                                    $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Passwörter stimmen nicht überein!'); 
                                }
                            }else{
                                $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Bitte gib das Passwort zur bestätigung noch einmal ein!'); 
                            }
                        }else{
                            $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Bitte gib das Passwort zur bestätigung noch einmal ein!'); 
                        }
                    }else{
                        $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Bitte gebe ein neues Passwort ein!'); 
                    }
                }else{
                    $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Bitte gebe ein neues Passwort ein!'); 
                }
            }else{
                $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Das alte Passwort ist nicht richtig!'); 
            }
        }else{
            $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", 'Gebe bitte dein Passwort ein.');
        }
    }

    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%%", "");

    $pwChanged = false;
    if(isset($_SESSION['pwChanged'])) {
        $pwChanged = true;
        unset($_SESSION['pwChanged']);
    }
    $HTML->ReplaceSeitenInhalt("%%INFOMESSAGE%%", $pwChanged ? 'Neues Passwort gespeichert.' : ' ');
    
    $HTML->build();
    echo $HTML->ausgabe();
?>