mirror of
https://github.com/IT4Change/gradido.git
synced 2026-01-18 10:51:23 +00:00
168 lines
6.2 KiB
Plaintext
168 lines
6.2 KiB
Plaintext
<%@ page class="ResetPassword" %>
|
|
<%@ page form="true" %>
|
|
<%@ page baseClass="PageRequestMessagedHandler" %>
|
|
<%@ header include="PageRequestMessagedHandler.h" %>
|
|
<%@ page compressed="true" %>
|
|
<%!
|
|
#include "../SingletonManager/LanguageManager.h"
|
|
#include "../SingletonManager/SessionManager.h"
|
|
#include "../SingletonManager/EmailManager.h"
|
|
#include "../controller/User.h"
|
|
#include "../controller/UserBackups.h"
|
|
|
|
enum PageState {
|
|
PAGE_EMAIL_ASK,
|
|
PAGE_ASK,
|
|
PAGE_WAIT_EMAIL,
|
|
PAGE_WAIT_ADMIN,
|
|
PAGE_EMAIL_ALREADY_SEND
|
|
};
|
|
%><%%
|
|
PageState state = PAGE_EMAIL_ASK;
|
|
auto lm = LanguageManager::getInstance();
|
|
auto sm = SessionManager::getInstance();
|
|
auto adminReceiver = EmailManager::getInstance()->getAdminReceiver();
|
|
|
|
const char* pageName = "Passwort vergessen";
|
|
auto lang = chooseLanguage(request);
|
|
|
|
// class="btn btn-outline-secondary flag-btn"
|
|
// class="btn btn-secondary disabled flag-btn" disabled
|
|
std::string eng_btn_classes = "";
|
|
std::string de_btn_classes = "";
|
|
|
|
auto langCatalog = lm->getFreeCatalog(lang);
|
|
|
|
std::string emailInputClass = "form-control";
|
|
std::string passphraseRadioClass = "group";
|
|
|
|
std::string email = "";
|
|
|
|
if(!form.empty()) {
|
|
auto session = sm->getNewSession();
|
|
email = form.get("email", "");
|
|
auto passphraseMemorized = form.get("passphrase_memorized", "");
|
|
auto user = controller::User::create();
|
|
auto ask = form.get("ask_passphrase", "");
|
|
|
|
if(email != "")
|
|
{
|
|
bool user_exist = false;
|
|
bool sendUserEmail = false;
|
|
|
|
if(!sm->isValid(email, VALIDATE_EMAIL)) {
|
|
addError(new Error(gettext(session, "E-Mail"), gettext(session, "Das ist keine gültige E-Mail Adresse")), false);
|
|
emailInputClass += " is-invalid";
|
|
}
|
|
user_exist = user->load(email) == 1;
|
|
|
|
if(ask == "true")
|
|
{
|
|
if(passphraseMemorized == "") {
|
|
addError(new Error(gettext(session, "Passphrase"), gettext(session, "Bitte wähle eine Option aus.")), false);
|
|
passphraseRadioClass += " group-is-invalid";
|
|
} else if(passphraseMemorized == "true") {
|
|
sendUserEmail = true;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
if(user_exist && (!user->tryLoadPassphraseUserBackup() || !user->hasPublicKey())) {
|
|
sendUserEmail = true;
|
|
}
|
|
}
|
|
|
|
if(!errorCount())
|
|
{
|
|
// send reset password email
|
|
int result = 0;
|
|
if(user_exist) {
|
|
result = session->sendResetPasswordEmail(user, sendUserEmail);
|
|
}
|
|
|
|
if(2 == result) {
|
|
state = PAGE_EMAIL_ALREADY_SEND;
|
|
} else if(sendUserEmail) {
|
|
state = PAGE_WAIT_EMAIL;
|
|
} else {
|
|
state = PAGE_WAIT_ADMIN;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
addError(new Error(gettext(session, "E-Mail"), gettext(session, "E-Mail Adresse nicht angegeben.")), false);
|
|
emailInputClass += " is-invalid";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
%><%@ include file="header.cpsp" %>
|
|
<%= getErrorsHtml() %>
|
|
<div class="center-form-container">
|
|
<div class="center-form-title">
|
|
<h1>Passwort zurücksetzen</h1>
|
|
</div>
|
|
<% if(state == PAGE_EMAIL_ASK) { %>
|
|
<div class="center-form-form">
|
|
<form action="<%= ServerConfig::g_serverPath %>/resetPassword">
|
|
<div class="item-wrapper">
|
|
<div class="form-group">
|
|
<label class="form-label" for="email"><%= langCatalog->gettext("Gib bitte hier deine E-Mail Adresse an:") %></label>
|
|
<input class="form-control" type="text" class="<%= emailInputClass %>" name="email" id="email" placeholder="E-Mail" value="<%= email %>">
|
|
</div>
|
|
<button type="submit" class="center-form-submit form-button" ><%= langCatalog->gettext("Bestätigen") %></button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<% } else if(state == PAGE_ASK) { %>
|
|
<div class="center-form-form">
|
|
<%@ include file="flags.cpsp" %>
|
|
<form action="<%= ServerConfig::g_serverPath %>/resetPassword">
|
|
<label class="form-label" for="email"><%= langCatalog->gettext("Gib bitte hier deine E-Mail Adresse an:") %></label>
|
|
<input class="form-control" type="text" class="<%= emailInputClass %>" name="email" id="email" placeholder="E-Mail" value="<%= email %>">
|
|
<label><%= langCatalog->gettext("Hast du dir deine Passphrase notiert oder gemerkt?") %></label>
|
|
<input class="form-control" type="hidden" name="ask_passphrase" value="true">
|
|
<div class="<%= passphraseRadioClass %>">
|
|
<div class="radio">
|
|
<label class="form-label" class="radio-label mr-4">
|
|
<input class="form-control" name="passphrase_memorized" onclick="removeGroupInvalidClass()" type="radio" value="true"><%= langCatalog->gettext("Ja") %> <i class="input-frame"></i>
|
|
</label>
|
|
</div>
|
|
<div class="radio">
|
|
<label class="form-label" class="radio-label">
|
|
<input class="form-control" name="passphrase_memorized" onclick="removeGroupInvalidClass()" type="radio" value="false"><%= langCatalog->gettext("Nein") %> <i class="input-frame"></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<button type="submit" class="center-form-submit form-button" name="ask" ><%= langCatalog->gettext("Absenden") %></button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<% } else if(state == PAGE_WAIT_EMAIL) { %>
|
|
<%= langCatalog->gettext("Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen.") %>
|
|
<% } else if(state == PAGE_WAIT_ADMIN) { %>
|
|
<%= langCatalog->gettext("Der Admin hat eine E-Mail bekommen und wird sich bei dir melden.") %>
|
|
<% } else if(state == PAGE_EMAIL_ALREADY_SEND) { %>
|
|
<p><%= langCatalog->gettext("Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-Verzeichnis nach. ") %></p>
|
|
<p><%= langCatalog->gettext("Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten gewartet?") %></p>
|
|
<p><b><a href="mailto:<%= adminReceiver %>?subject=Error Reset Password email&body=Hallo Dario,%0D%0A%0D%0Aich habe keine Passwort zurücksetzen E-Mail erhalten,%0D%0Akannst du das prüfen?%0D%0A%0D%0AMit freundlichen Grüßen%0D%0A"><%= langCatalog->gettext("E-Mail an Support schicken")%></a></b></p>
|
|
<% } %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
function removeGroupInvalidClass() {
|
|
var elements = document.getElementsByClassName("group-is-invalid");
|
|
if(elements.length > 0) {
|
|
elements[0].classList.remove("group-is-invalid");
|
|
}
|
|
}
|
|
</script>
|
|
<%@ include file="footer.cpsp" %>
|
|
|