adding missing file

This commit is contained in:
Dario 2020-03-18 09:46:39 +01:00
parent 47bcff4ff6
commit 750f73aa6b

152
src/cpsp/resetPassword.cpsp Normal file
View File

@ -0,0 +1,152 @@
<%@ 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"
enum PageState {
PAGE_ASK,
PAGE_WAIT_EMAIL,
PAGE_WAIT_ADMIN,
PAGE_EMAIL_ALREADY_SEND
};
%><%%
PageState state = PAGE_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();
if(email != "") {
if(!user->getModel()->loadFromDB("email", email) || !user->getModel()->isEmailChecked()) {
//printf("user: %s\n", user->getModel()->toString().data());
addError(new Error(langCatalog->gettext("E-Mail"), langCatalog->gettext("E-Mail Adresse konnte nicht gefunden werden oder ist nicht aktiviert.")), false);
emailInputClass += " is-invalid";
}
} else {
addError(new Error(langCatalog->gettext("E-Mail"), langCatalog->gettext("E-Mail Adresse nicht angegeben.")), false);
emailInputClass += " is-invalid";
}
if(errorCount() < 1 && passphraseMemorized == "") {
addError(new Error(langCatalog->gettext("Passphrase"), langCatalog->gettext("Bitte w&auml;hle eine Option aus.")), false);
passphraseRadioClass += " group-is-invalid";
}
if(errorCount() == 0) {
if(passphraseMemorized == "true") {
auto result = session->resetPassword(user, true);
if(result == 1) {
state = PAGE_EMAIL_ALREADY_SEND;
} else if(result == 0) {
state = PAGE_WAIT_EMAIL;
}
} else if(passphraseMemorized == "false") {
session->resetPassword(user, false);
state = PAGE_WAIT_ADMIN;
} else {
addError(new Error(langCatalog->gettext("Passphrase"), langCatalog->gettext("Ung&uuml;ltige Option")));
}
}
//printf("\npassphrase memorized result: %s\n", passphraseMemorized.data());
}
%><%@ include file="login_header.cpsp" %>
<style type="text/css">
.group {
padding-left:10px;
padding-top:10px;
padding-bottom:10px;
}
.group-is-invalid {
background-color: rgba(240,130,95,.2);
border-color:#dc3545;
padding-right:calc(1.5em + .75rem);
background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
background-repeat:no-repeat;
background-position:center right calc(.375em + .1875rem);
background-size:calc(.75em + .375rem) calc(.75em + .375rem)
}
.group-is-invalid .radio label .input-frame::before {
border-color:red;
}
</style>
<% if(state == PAGE_ASK) { %>
<%@ include file="flags.cpsp" %>
<form action="<%= ServerConfig::g_serverPath %>/resetPassword">
<div class="item-wrapper">
<div class="form-group">
<label for="email"><%= langCatalog->gettext("Gebe bitte hier deine E-Mail Adresse an:") %>&nbsp;&nbsp;&nbsp;&nbsp;</label>
<input 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>
<div class="<%= passphraseRadioClass %>">
<div class="radio">
<label class="radio-label mr-4">
<input name="passphrase_memorized" onclick="removeGroupInvalidClass()" type="radio" value="true"><%= langCatalog->gettext("Ja") %> <i class="input-frame"></i>
</label>
</div>
<div class="radio">
<label class="radio-label">
<input name="passphrase_memorized" onclick="removeGroupInvalidClass()" type="radio" value="false"><%= langCatalog->gettext("Nein") %> <i class="input-frame"></i>
</label>
</div>
</div>
</div>
<button type="submit" class="btn btn-sm btn-primary" ><%= langCatalog->gettext("Absenden") %></button>
</div>
</form>
<% } else if(state == PAGE_WAIT_EMAIL) { %>
<%= langCatalog->gettext("Dir wird eine E-Mail zugeschickt um dein Passwort zur&uuml;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&amp;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 class="auth_footer">
<p class="text-muted text-center">© Gradido 2019</p>
</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" %>