diff --git a/src/cpsp/resetPassword.cpsp b/src/cpsp/resetPassword.cpsp new file mode 100644 index 000000000..2af5542f1 --- /dev/null +++ b/src/cpsp/resetPassword.cpsp @@ -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ä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ültige Option"))); + } + } + //printf("\npassphrase memorized result: %s\n", passphraseMemorized.data()); + } + + +%><%@ include file="login_header.cpsp" %> + + <% if(state == PAGE_ASK) { %> + <%@ include file="flags.cpsp" %> +
+
+
+ + + +
+
+ +
+
+ +
+
+
+ +
+
+ <% } 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) { %> +

<%= langCatalog->gettext("Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-Verzeichnis nach. ") %>

+

<%= langCatalog->gettext("Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten gewartet?") %>

+

<%= langCatalog->gettext("E-Mail an Support schicken")%>

+ <% } %> + + + + + + + +<%@ include file="footer.cpsp" %> +