mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
120 lines
3.8 KiB
Plaintext
120 lines
3.8 KiB
Plaintext
<%@ page class="AdminUserPasswordResetPage" %>
|
|
<%@ page form="true" %>
|
|
<%@ page baseClass="SessionHTTPRequestHandler" %>
|
|
<%@ page ctorArg="Session*" %>
|
|
<%@ header include="HTTPInterface/SessionHTTPRequestHandler.h" %>
|
|
<%!
|
|
// includes
|
|
#include "controller/User.h"
|
|
#include "controller/EmailVerificationCode.h"
|
|
#include "controller/UserBackup.h"
|
|
|
|
|
|
enum PageState
|
|
{
|
|
PAGE_ASK_EMAIL,
|
|
PAGE_SHOW_EMAIL
|
|
};
|
|
%><%%
|
|
// code
|
|
PageState state = PAGE_ASK_EMAIL;
|
|
Poco::AutoPtr<controller::User> user = controller::User::create();
|
|
Poco::AutoPtr<controller::EmailVerificationCode> code;
|
|
Poco::AutoPtr<controller::UserBackup> userBackup;
|
|
bool validUser = false;
|
|
std::string pageName = "Admin User Passwort Reset";
|
|
|
|
if(!form.empty()) {
|
|
auto email = form.get("user-email", "");
|
|
|
|
if("" != email) {
|
|
if(1 != user->load(email)) {
|
|
addError(new Error("Benutzer Email", "Konnte keinen passenden Benutzer finden!"));
|
|
} else {
|
|
validUser = true;
|
|
}
|
|
}
|
|
}
|
|
if(validUser) {
|
|
auto userId = user->getModel()->getID();
|
|
code = controller::EmailVerificationCode::load(userId, model::table::EMAIL_OPT_IN_RESET_PASSWORD);
|
|
if(code.isNull()) {
|
|
code = controller::EmailVerificationCode::create(userId, model::table::EMAIL_OPT_IN_RESET_PASSWORD);
|
|
if(!code->getModel()->insertIntoDB(false)) {
|
|
addError(new Error("E-Mail Verification Code", "Fehler beim speichern!"));
|
|
getErrors(code->getModel());
|
|
}
|
|
}
|
|
|
|
auto backups = controller::UserBackup::load(userId);
|
|
auto userPubkey = user->getModel()->getPublicKey();
|
|
for(auto it = backups.begin(); it != backups.end(); it++) {
|
|
auto keys = (*it)->getKeyPair();
|
|
if(keys->isTheSame(userPubkey)) {
|
|
userBackup = *it;
|
|
break;
|
|
}
|
|
}
|
|
if(userBackup.isNull()) {
|
|
addError(new Error("User Backup", "Kein passendes User Backup gefunden!"));
|
|
}
|
|
|
|
if(!userBackup.isNull() && !code.isNull()) {
|
|
state = PAGE_SHOW_EMAIL;
|
|
}
|
|
}
|
|
|
|
%><%@ include file="include/header_old.cpsp" %>
|
|
<div class="grd_container">
|
|
<%= getErrorsHtml() %>
|
|
<h1>Admin User Passwort Reset</h1>
|
|
<p>Ein Benutzer hat ein Passwort Reset angefordert, hat aber seine Passphrase nicht.</p>
|
|
<% if(PAGE_ASK_EMAIL == state) { %>
|
|
<fieldset class="grd_container_small">
|
|
<form method="POST">
|
|
<p class="grd_small">
|
|
<label for="user-email">Benutzer E-Mail</label>
|
|
<input id="user-email" type="text" name="user-email" value="<%= !form.empty() ? form.get("user-email") : "" %>"/>
|
|
</p>
|
|
<p><input type="submit" style="width:auto" value="Anzeigen"></p>
|
|
</form>
|
|
</fieldset>
|
|
<% } %>
|
|
<% if(validUser) {
|
|
auto userModel = user->getModel(); %>
|
|
<h3>Benutzer gefunden</h3>
|
|
<ul>
|
|
<li><%= userModel->getFirstName() %> <%= userModel->getLastName() %></li>
|
|
<li><%= userModel->getEmail() %></li>
|
|
<li>Public Key: <%= userModel->getPublicKeyHex() %></li>
|
|
<li>E-Mail überprüft: <%= std::to_string(userModel->isEmailChecked()) %></li>
|
|
<li>Private Key verschlüsselt: <%= std::to_string(userModel->hasPrivateKeyEncrypted()) %></li>
|
|
<li>Passwort gesetzt: <%= std::to_string(userModel->getPasswordHashed() != 0) %></li>
|
|
</ul>
|
|
<% } %>
|
|
<% if(PAGE_SHOW_EMAIL == state) { %>
|
|
<fieldset><legend>E-Mail</legend>
|
|
<p>An: <%= user->getEmailWithNames() %>
|
|
<p><label style="width:auto" for="memo-text">E-Mail Text:</label></p>
|
|
<pre>Liebe(r) <%= user->getModel()->getFirstName() %>,
|
|
|
|
hier findest du deine Passphrase mit dessen Hilfe du dir ein neues Passwort einstellen kannst.
|
|
Bitte schreibe sie dir auf und packe sie gut weg.
|
|
|
|
<%= controller::UserBackup::formatPassphrase(userBackup->getPassphrase(ServerConfig::Mnemonic_Types::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER)) %>
|
|
|
|
|
|
|
|
Unter diesem Link kannst du dir mit Hilfe der Passphrase ein neues Passwort setzen:
|
|
<%= code->getLink() %>
|
|
|
|
|
|
Liebe Grüße
|
|
Dario, Softwareentwickler bei Gradido
|
|
</pre>
|
|
</fieldset>
|
|
<% } %>
|
|
</div>
|
|
<%@ include file="include/footer.cpsp" %>
|
|
|