mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
adding missing files, reset Password check if already an email was send and show link for support email
This commit is contained in:
parent
abef0b1ef1
commit
5842f21e89
@ -1,4 +1,5 @@
|
||||
HTTPInterface/LoginPage.cpp
|
||||
HTTPInterface/CheckEmailPage.cpp
|
||||
HTTPInterface/ResetPassword.cpp
|
||||
model/Session.cpp
|
||||
model/Email.cpp
|
||||
Binary file not shown.
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-12-02 10:53+0100\n"
|
||||
"PO-Revision-Date: 2019-12-02 10:54+0100\n"
|
||||
"POT-Creation-Date: 2020-01-06 15:18+0100\n"
|
||||
"PO-Revision-Date: 2020-01-06 15:22+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en_GB\n"
|
||||
@ -18,111 +18,163 @@ msgstr ""
|
||||
"X-Generator: Poedit 2.2.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:71
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:87
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:77
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:93
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:71
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:77
|
||||
msgid "E-Mail or password isn't right, please try again!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:74
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:80
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:74
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:80
|
||||
msgid "E-Mail Address not checked, do you already get one?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:87
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:93
|
||||
msgid "Username and password are needed!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:139
|
||||
#: model/Session.cpp:138 model/Session.cpp:162
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:160
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:43
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:47
|
||||
#: model/Session.cpp:158 model/Session.cpp:183
|
||||
msgid "E-Mail"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:142
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:163
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:144
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:165
|
||||
msgid " Login "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:146
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:167
|
||||
msgid "You haven't any account yet? Please follow the link to create one."
|
||||
msgstr "Don't have an account yet?"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:147
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:168
|
||||
msgid "Create New Account"
|
||||
msgstr "Sign Up"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:92
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:97
|
||||
msgid "Bitte gebe deinen E-Mail Verification Code ein:"
|
||||
msgstr "Please enter your E-Mail Verification Code:"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:93
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:98
|
||||
msgid "Email Verification Code"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:95
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:100
|
||||
msgid "Überprüfe Code"
|
||||
msgstr "Check Code"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:99
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:104
|
||||
msgid "Du hast bisher keinen Code erhalten?"
|
||||
msgstr "You didn't get a code yet?"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:100
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:105
|
||||
msgid "E-Mail erneut zuschicken (in Arbeit)"
|
||||
msgstr "Re-Send E-Mail (work in progress)"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:103
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:108
|
||||
msgid "Funktioniert dein E-Mail Verification Code nicht?"
|
||||
msgstr "Your E-Mail Verfication Code doesn't work?"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:104
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:109
|
||||
msgid "Schicke uns eine E-Mail und wir kümmern uns darum: "
|
||||
msgstr "Send us a E-Mail and we take care of it:"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:105
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:110
|
||||
msgid "E-Mail an Support schicken"
|
||||
msgstr "Send E-Mail to support"
|
||||
|
||||
#: model/Session.cpp:130
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:43
|
||||
msgid "E-Mail Adresse nicht gefunden werden oder ist nicht aktiviert."
|
||||
msgstr "E-Mail not found or not activated."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:47
|
||||
msgid "E-Mail Adresse nicht angegeben."
|
||||
msgstr "Please give your E-Mail Address."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:52
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:63
|
||||
msgid "Passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:52
|
||||
msgid "Bitte wähle eine Option aus."
|
||||
msgstr "Please choose one Option."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:63
|
||||
msgid "Ungültige Option"
|
||||
msgstr "Invalid option"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:111
|
||||
msgid "Gebe bitte hier deine E-Mail Adresse an:"
|
||||
msgstr "Please enter a valid email."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:113
|
||||
msgid "Hast du dir deine Passphrase notiert oder gemerkt?"
|
||||
msgstr "Do you memorized your passphrase?"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:117
|
||||
msgid "Ja"
|
||||
msgstr "Yes"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:122
|
||||
msgid "Nein"
|
||||
msgstr "No"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:127
|
||||
msgid "Absenden"
|
||||
msgstr "Send"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:131
|
||||
msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen."
|
||||
msgstr "You get an E-Mail to reset your password."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:133
|
||||
msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden."
|
||||
msgstr "The Admin get an E-Mail, wait on his replay."
|
||||
|
||||
#: model/Session.cpp:150
|
||||
msgid "Vorname"
|
||||
msgstr "Firstname"
|
||||
|
||||
#: model/Session.cpp:130 model/Session.cpp:134
|
||||
#: model/Session.cpp:150 model/Session.cpp:154
|
||||
msgid ""
|
||||
"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen "
|
||||
"<>&;"
|
||||
msgstr "Please enter your Name. At least 3 Character, without <>& and ;"
|
||||
|
||||
#: model/Session.cpp:134
|
||||
#: model/Session.cpp:154
|
||||
msgid "Nachname"
|
||||
msgstr "Lastname"
|
||||
|
||||
#: model/Session.cpp:138
|
||||
#: model/Session.cpp:158
|
||||
msgid "Bitte gebe eine gültige E-Mail Adresse an."
|
||||
msgstr "Please enter a valid email."
|
||||
|
||||
#: model/Session.cpp:162
|
||||
#: model/Session.cpp:183
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits einen Account"
|
||||
msgstr "This email has an account already."
|
||||
|
||||
#: model/Session.cpp:210
|
||||
msgid "Gradido: E-Mail Verification"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:281 model/Session.cpp:288 model/Session.cpp:560
|
||||
#: model/Session.cpp:318 model/Session.cpp:323 model/Session.cpp:375
|
||||
#: model/Session.cpp:718
|
||||
msgid "E-Mail Verification"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:281
|
||||
#: model/Session.cpp:318
|
||||
msgid "Du hast dein Konto bereits aktiviert!"
|
||||
msgstr "You already activated your account!"
|
||||
|
||||
#: model/Session.cpp:323
|
||||
msgid ""
|
||||
"Der Code stimmt nicht, bitte überprüfe ihn nochmal oder "
|
||||
"registriere dich erneut oder wende dich an den Server-Admin"
|
||||
@ -130,24 +182,28 @@ msgstr ""
|
||||
"The email verification code isn't correct. Please check at spell errors and "
|
||||
"try again or ask the server admin."
|
||||
|
||||
#: model/Session.cpp:288
|
||||
#: model/Session.cpp:375
|
||||
msgid "Falscher Code für aktiven Login"
|
||||
msgstr "Wrong Code for active Login."
|
||||
|
||||
#: model/Session.cpp:421 model/Session.cpp:675
|
||||
#: model/Session.cpp:572 model/Session.cpp:578 model/Session.cpp:834
|
||||
msgid "Benutzer"
|
||||
msgstr "User"
|
||||
|
||||
#: model/Session.cpp:421
|
||||
#: model/Session.cpp:572
|
||||
msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus."
|
||||
msgstr "Couldn't connect to the community server, send E-Mail to admin."
|
||||
|
||||
#: model/Session.cpp:578
|
||||
msgid ""
|
||||
"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und "
|
||||
"versuche es nochmal."
|
||||
msgstr "Error by deleting the account. Please re-login and try again."
|
||||
|
||||
#: model/Session.cpp:560
|
||||
#: model/Session.cpp:718
|
||||
msgid "Konnte keinen passenden Account finden."
|
||||
msgstr "This Account didn't seem to exist."
|
||||
|
||||
#: model/Session.cpp:675
|
||||
#: model/Session.cpp:834
|
||||
msgid "Kein gültiger Benutzer, bitte logge dich erneut ein."
|
||||
msgstr "Invalid User, please re-login."
|
||||
|
||||
@ -4,7 +4,9 @@
|
||||
|
||||
#include "../ServerConfig.h"
|
||||
|
||||
const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?/(en|de)");
|
||||
//const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?/(en|de)");
|
||||
// detect also lang field from form get
|
||||
const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?(?:/(en|de)|\\?.*lang=(en|de))");
|
||||
|
||||
Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn /*= ""*/)
|
||||
{
|
||||
|
||||
345
src/cpp/HTTPInterface/ResetPassword.cpp
Normal file
345
src/cpp/HTTPInterface/ResetPassword.cpp
Normal file
@ -0,0 +1,345 @@
|
||||
#include "ResetPassword.h"
|
||||
#include "Poco/Net/HTTPServerRequest.h"
|
||||
#include "Poco/Net/HTTPServerResponse.h"
|
||||
#include "Poco/Net/HTMLForm.h"
|
||||
#include "Poco/DeflatingStream.h"
|
||||
|
||||
|
||||
#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
|
||||
#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
|
||||
|
||||
};
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
|
||||
#include "../ServerConfig.h"
|
||||
|
||||
|
||||
void ResetPassword::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
|
||||
{
|
||||
response.setChunkedTransferEncoding(true);
|
||||
response.setContentType("text/html");
|
||||
bool _compressResponse(request.hasToken("Accept-Encoding", "gzip"));
|
||||
if (_compressResponse) response.set("Content-Encoding", "gzip");
|
||||
|
||||
Poco::Net::HTMLForm form(request, request.stream());
|
||||
#line 19 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
|
||||
|
||||
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()) {
|
||||
//if(!session->ifUserExist(email)) {
|
||||
//printf("user: %s\n", user->getModel()->toString().data());
|
||||
addError(new Error(langCatalog->gettext("E-Mail"), langCatalog->gettext("E-Mail Adresse nicht gefunden werden oder ist nicht aktiviert.")));
|
||||
emailInputClass += " is-invalid";
|
||||
}
|
||||
} else {
|
||||
addError(new Error(langCatalog->gettext("E-Mail"), langCatalog->gettext("E-Mail Adresse nicht angegeben.")));
|
||||
emailInputClass += " is-invalid";
|
||||
}
|
||||
|
||||
if(errorCount() < 1 && passphraseMemorized == "") {
|
||||
addError(new Error(langCatalog->gettext("Passphrase"), langCatalog->gettext("Bitte wähle eine Option aus.")));
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
std::ostream& _responseStream = response.send();
|
||||
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
|
||||
std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
|
||||
responseStream << "\n";
|
||||
// begin include login_header.cpsp
|
||||
// begin include header.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<!DOCTYPE html>\n";
|
||||
responseStream << "<html>\n";
|
||||
responseStream << "<head>\n";
|
||||
responseStream << "<meta charset=\"UTF-8\">\n";
|
||||
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n";
|
||||
responseStream << "<title>Gradido Login Server: ";
|
||||
#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</title>\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/loginServer/style.css\">\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body class=\"header-fixed\">\n";
|
||||
responseStream << "<div class=\"versionstring dev-info\">\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha ";
|
||||
#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_versionString );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n";
|
||||
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
|
||||
responseStream << "\t\t<ul class=\"grd-no-style\">\n";
|
||||
responseStream << "\t\t <li><a href=\"";
|
||||
#line 20 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\" class=\"grd-nav-bn\">Startseite</a>\n";
|
||||
responseStream << "\t\t <li><a href=\"./account/logout\" class=\"grd-nav-bn\">Logout</a></li>\n";
|
||||
responseStream << "\t\t</ul>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</nav>-->";
|
||||
// end include header.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"authentication-theme auth-style_1\">\n";
|
||||
responseStream << " <div class=\"row\">\n";
|
||||
responseStream << " <div class=\"col-12 logo-section\">\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 5 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\" class=\"logo\">\n";
|
||||
responseStream << " <picture>\n";
|
||||
responseStream << "\t\t\t\t<source srcset=\"";
|
||||
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.webp\" type=\"image/webp\">\n";
|
||||
responseStream << "\t\t\t\t<source srcset=\"";
|
||||
#line 8 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.png\" type=\"image/png\"> \n";
|
||||
responseStream << "\t\t\t\t<img src=\"";
|
||||
#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.png\" alt=\"logo\" />\n";
|
||||
responseStream << "\t\t\t</picture>\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"row\">\n";
|
||||
responseStream << " <div class=\"col-lg-5 col-md-7 col-sm-9 col-11 mx-auto\">\n";
|
||||
responseStream << " <div class=\"grid\">\n";
|
||||
responseStream << " <div class=\"center-ul-container\">\n";
|
||||
responseStream << " ";
|
||||
#line 18 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"grid-body\">";
|
||||
// end include login_header.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<style type=\"text/css\">\n";
|
||||
responseStream << ".group {\n";
|
||||
responseStream << "\tpadding-left:10px;\n";
|
||||
responseStream << "\tpadding-top:10px;\n";
|
||||
responseStream << "\tpadding-bottom:10px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".group-is-invalid {\n";
|
||||
responseStream << "\tbackground-color: rgba(240,130,95,.2);\n";
|
||||
responseStream << "\t border-color:#dc3545;\n";
|
||||
responseStream << "\t padding-right:calc(1.5em + .75rem);\n";
|
||||
responseStream << "\t 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\");\n";
|
||||
responseStream << "\t background-repeat:no-repeat;\n";
|
||||
responseStream << "\t background-position:center right calc(.375em + .1875rem);\n";
|
||||
responseStream << "\t background-size:calc(.75em + .375rem) calc(.75em + .375rem)\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".group-is-invalid .radio label .input-frame::before {\n";
|
||||
responseStream << "\tborder-color:red;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "\n";
|
||||
responseStream << "</style>\n";
|
||||
responseStream << "\t";
|
||||
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
if(state == PAGE_ASK) { responseStream << "\n";
|
||||
responseStream << "\t\t<form action=\"";
|
||||
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/resetPassword\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
// begin include flags.cpsp
|
||||
responseStream << "<div class=\"row pull-right-row\">\n";
|
||||
responseStream << " <div class=\"equel-grid pull-right\">\n";
|
||||
responseStream << "\t<div class=\"grid-body-small text-center\">\n";
|
||||
responseStream << "\t\t<button id=\"flag-england\" name=\"lang\" value=\"en\" title=\"English\" type=\"submit\" ";
|
||||
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
if(lang != LANG_EN) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
|
||||
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
}
|
||||
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
|
||||
#line 5 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << "\t\t <span class=\"flag-england\"></span>\n";
|
||||
responseStream << "\t\t</button>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"equel-grid pull-right\">\n";
|
||||
responseStream << "\t<div class=\"grid-body-small text-center\">\n";
|
||||
responseStream << "\t\t<button id=\"flag-germany\" name=\"lang\" value=\"de\" title=\"Deutsch\" type=\"submit\" ";
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
if(lang != LANG_DE) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
}
|
||||
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
|
||||
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\flags.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << "\t\t <span class=\"flag-germany\"></span>\n";
|
||||
responseStream << "\t\t</button>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << "</div>";
|
||||
// end include flags.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t<div class=\"item-wrapper\">\n";
|
||||
responseStream << "\t\t\t <div class=\"form-group\">\n";
|
||||
responseStream << "\t\t\t\t<label for=\"email\">";
|
||||
#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Gebe bitte hier deine E-Mail Adresse an:") );
|
||||
responseStream << " </label>\n";
|
||||
responseStream << "\t\t\t\t<input type=\"text\" class=\"";
|
||||
#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( emailInputClass );
|
||||
responseStream << "\" name=\"email\" id=\"email\" placeholder=\"E-Mail\" value=\"";
|
||||
#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( email );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t\t\t<label>";
|
||||
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Hast du dir deine Passphrase notiert oder gemerkt?") );
|
||||
responseStream << "</label> \n";
|
||||
responseStream << "\t\t\t\t<div class=\"";
|
||||
#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( passphraseRadioClass );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"radio\">\n";
|
||||
responseStream << "\t\t\t\t\t <label class=\"radio-label mr-4\">\n";
|
||||
responseStream << "\t\t\t\t\t\t<input name=\"passphrase_memorized\" onclick=\"removeGroupInvalidClass()\" type=\"radio\" value=\"true\">";
|
||||
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Ja") );
|
||||
responseStream << " <i class=\"input-frame\"></i>\n";
|
||||
responseStream << "\t\t\t\t\t </label>\n";
|
||||
responseStream << "\t\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"radio\">\n";
|
||||
responseStream << "\t\t\t\t\t <label class=\"radio-label\">\n";
|
||||
responseStream << "\t\t\t\t\t\t<input name=\"passphrase_memorized\" onclick=\"removeGroupInvalidClass()\" type=\"radio\" value=\"false\">";
|
||||
#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Nein") );
|
||||
responseStream << " <i class=\"input-frame\"></i>\n";
|
||||
responseStream << "\t\t\t\t\t </label>\n";
|
||||
responseStream << "\t\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t </div>\n";
|
||||
responseStream << "\t\t\t <button type=\"submit\" class=\"btn btn-sm btn-primary\">";
|
||||
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Absenden") );
|
||||
responseStream << "</button>\n";
|
||||
responseStream << "\t\t\t</div>\n";
|
||||
responseStream << "\t\t</form>\n";
|
||||
responseStream << "\t ";
|
||||
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
} else if(state == PAGE_WAIT_EMAIL) { responseStream << "\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen.") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t ";
|
||||
#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
} else if(state == PAGE_WAIT_ADMIN) { responseStream << "\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Der Admin hat eine E-Mail bekommen und wird sich bei dir melden.") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t ";
|
||||
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
} else if(state == PAGE_EMAIL_ALREADY_SEND) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>";
|
||||
#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-Verzeichnis nach. ") );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t<p>";
|
||||
#line 134 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten gewartet?") );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t<p><b><a href=\"mailto:";
|
||||
#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( adminReceiver );
|
||||
responseStream << "?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\">";
|
||||
#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
responseStream << ( langCatalog->gettext("E-Mail an Support schicken"));
|
||||
responseStream << "</a></b></p>\n";
|
||||
responseStream << "\t ";
|
||||
#line 136 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << " </div> \n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"auth_footer\">\n";
|
||||
responseStream << " <p class=\"text-muted text-center\">© Gradido 2019</p>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << "\t<script type=\"text/javascript\">\n";
|
||||
responseStream << "\t\tfunction removeGroupInvalidClass() {\n";
|
||||
responseStream << "\t\t\tvar elements = document.getElementsByClassName(\"group-is-invalid\");\n";
|
||||
responseStream << "\t\t\telements[0].classList.remove(\"group-is-invalid\");\n";
|
||||
responseStream << "\t\t}\n";
|
||||
responseStream << "\t</script>\n";
|
||||
// begin include footer.cpsp
|
||||
responseStream << "\t<div class=\"grd-time-used dev-info\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 2 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
|
||||
responseStream << ( mTimeProfiler.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</body>\n";
|
||||
responseStream << "</html>";
|
||||
// end include footer.cpsp
|
||||
responseStream << "\n";
|
||||
if (_compressResponse) _gzipStream.close();
|
||||
}
|
||||
18
src/cpp/HTTPInterface/ResetPassword.h
Normal file
18
src/cpp/HTTPInterface/ResetPassword.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef ResetPassword_INCLUDED
|
||||
#define ResetPassword_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/HTTPRequestHandler.h"
|
||||
|
||||
|
||||
#include "PageRequestMessagedHandler.h"
|
||||
|
||||
|
||||
class ResetPassword: public PageRequestMessagedHandler
|
||||
{
|
||||
public:
|
||||
void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
|
||||
};
|
||||
|
||||
|
||||
#endif // ResetPassword_INCLUDED
|
||||
7
src/cpp/HTTPInterface/SessionHTTPRequestHandler.cpp
Normal file
7
src/cpp/HTTPInterface/SessionHTTPRequestHandler.cpp
Normal file
@ -0,0 +1,7 @@
|
||||
#include "SessionHTTPRequestHandler.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -14,6 +14,11 @@ namespace controller {
|
||||
|
||||
static Poco::AutoPtr<EmailVerificationCode> create(int user_id, model::table::EmailOptInType type = model::table::EMAIL_OPT_IN_REGISTER);
|
||||
static Poco::AutoPtr<EmailVerificationCode> create(model::table::EmailOptInType type = model::table::EMAIL_OPT_IN_REGISTER);
|
||||
inline size_t load(Poco::UInt64 code) { return getModel()->loadFromDB("verification_code", code); }
|
||||
inline size_t load(int user_id, model::table::EmailOptInType type) {
|
||||
std::vector<std::string> fields = { "user_id", "email_opt_in_type_id"};
|
||||
return getModel()->loadFromDB(fields, user_id, (int)type);
|
||||
}
|
||||
inline Poco::AutoPtr<model::table::EmailOptIn> getModel() { return _getModel<model::table::EmailOptIn>(); }
|
||||
|
||||
std::string getLink();
|
||||
|
||||
@ -383,11 +383,17 @@ int Session::updateEmailVerification(Poco::UInt64 emailVerificationCode)
|
||||
}
|
||||
|
||||
|
||||
bool Session::resetPassword(Poco::AutoPtr<controller::User> user, bool passphraseMemorized)
|
||||
int Session::resetPassword(Poco::AutoPtr<controller::User> user, bool passphraseMemorized)
|
||||
{
|
||||
mNewUser = user;
|
||||
if (passphraseMemorized) {
|
||||
// first check if already exist
|
||||
|
||||
mEmailVerificationCodeObject = controller::EmailVerificationCode::create(mNewUser->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD);
|
||||
auto foundCount = mEmailVerificationCodeObject->load(user->getModel()->getID(), model::table::EMAIL_OPT_IN_RESET_PASSWORD);
|
||||
if (foundCount) {
|
||||
return 1;
|
||||
}
|
||||
auto emailVerificationModel = mEmailVerificationCodeObject->getModel();
|
||||
UniLib::controller::TaskPtr insertEmailVerificationCode(
|
||||
new model::table::ModelInsertTask(emailVerificationModel, true)
|
||||
@ -404,7 +410,7 @@ bool Session::resetPassword(Poco::AutoPtr<controller::User> user, bool passphras
|
||||
EmailManager::getInstance()->addEmail(new model::Email(user, model::EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE));
|
||||
}
|
||||
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool Session::startProcessingTransaction(const std::string& proto_message_base64)
|
||||
|
||||
@ -91,7 +91,9 @@ public:
|
||||
int updateEmailVerification(Poco::UInt64 emailVerificationCode);
|
||||
|
||||
// called from page with same name
|
||||
bool resetPassword(Poco::AutoPtr<controller::User> user, bool passphraseMemorized);
|
||||
//! \return 1 = reset password email already send
|
||||
//! \return 0 = ok
|
||||
int resetPassword(Poco::AutoPtr<controller::User> user, bool passphraseMemorized);
|
||||
|
||||
Poco::Net::HTTPCookie getLoginCookie();
|
||||
|
||||
|
||||
@ -36,8 +36,8 @@ namespace model {
|
||||
|
||||
lock();
|
||||
insert << "INSERT INTO " << getTableName()
|
||||
<< " (user_id, verification_code, email_opt_in_type_id) VALUES(?,?,?))"
|
||||
, bind(mUserId), bind(mEmailVerificationCode), bind(mType);
|
||||
<< " (user_id, verification_code, email_opt_in_type_id) VALUES(?,?,?)"
|
||||
, use(mUserId), use(mEmailVerificationCode), bind(mType);
|
||||
unlock();
|
||||
return insert;
|
||||
}
|
||||
@ -47,12 +47,40 @@ namespace model {
|
||||
{
|
||||
Poco::Data::Statement select(session);
|
||||
|
||||
int iType = 0;
|
||||
|
||||
select << "SELECT user_id, verification_code, email_opt_in_type_id FROM " << getTableName()
|
||||
<< " where " << fieldName << " = ?"
|
||||
, into(mUserId), into(mEmailVerificationCode), into(iType);
|
||||
, into(mUserId), into(mEmailVerificationCode), into(mType);
|
||||
|
||||
|
||||
return select;
|
||||
}
|
||||
|
||||
Poco::Data::Statement EmailOptIn::_loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
|
||||
{
|
||||
Poco::Data::Statement select(session);
|
||||
if (fieldNames.size() <= 1) {
|
||||
throw Poco::NullValueException("EmailOptIn::_loadFromDB fieldNames empty or contain only one field");
|
||||
}
|
||||
|
||||
select << "SELECT user_id, verification_code, email_opt_in_type_id FROM " << getTableName()
|
||||
<< " where " << fieldNames[0] << " = ? ";
|
||||
if (conditionType == MYSQL_CONDITION_AND) {
|
||||
for (int i = 1; i < fieldNames.size(); i++) {
|
||||
select << " AND " << fieldNames[i] << " = ? ";
|
||||
}
|
||||
}
|
||||
else if (conditionType == MYSQL_CONDITION_OR) {
|
||||
for (int i = 1; i < fieldNames.size(); i++) {
|
||||
select << " OR " << fieldNames[i] << " = ? ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
addError(new ParamError("EmailOptIn::_loadFromDB", "condition type not implemented", conditionType));
|
||||
}
|
||||
//<< " where " << fieldName << " = ?"
|
||||
select , into(mUserId), into(mEmailVerificationCode), into(mType);
|
||||
|
||||
mType = static_cast<EmailOptInType>(iType);
|
||||
|
||||
return select;
|
||||
}
|
||||
@ -62,7 +90,7 @@ namespace model {
|
||||
std::stringstream ss;
|
||||
ss << "code: " << mEmailVerificationCode << std::endl;
|
||||
ss << "user_id: " << mUserId << std::endl;
|
||||
ss << "type: " << typeToString(mType) << std::endl;
|
||||
ss << "type: " << typeToString(static_cast<EmailOptInType>(mType)) << std::endl;
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
|
||||
@ -32,12 +32,13 @@ namespace model {
|
||||
static const char* typeToString(EmailOptInType type);
|
||||
protected:
|
||||
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName);
|
||||
Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND);
|
||||
Poco::Data::Statement _insertIntoDB(Poco::Data::Session session);
|
||||
|
||||
// data type must be a multiple of 4
|
||||
Poco::UInt64 mEmailVerificationCode;
|
||||
int mUserId;
|
||||
EmailOptInType mType;
|
||||
int mType;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -80,6 +80,13 @@ namespace model {
|
||||
|
||||
}
|
||||
|
||||
Poco::Data::Statement ModelBase::_loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
|
||||
{
|
||||
std::string message = getTableName();
|
||||
message += "::_loadFromDB with multiple fields not implemented";
|
||||
throw Poco::Exception(message);
|
||||
}
|
||||
|
||||
Poco::DateTime ModelBase::parseElopageDate(std::string dateString)
|
||||
{
|
||||
std::string decodedDateString = "";
|
||||
|
||||
@ -14,6 +14,11 @@
|
||||
namespace model {
|
||||
namespace table {
|
||||
|
||||
enum MysqlConditionType {
|
||||
MYSQL_CONDITION_AND,
|
||||
MYSQL_CONDITION_OR
|
||||
};
|
||||
|
||||
class ModelBase : public UniLib::lib::MultithreadContainer, public ErrorList
|
||||
{
|
||||
public:
|
||||
@ -26,6 +31,7 @@ namespace model {
|
||||
|
||||
template<class T> size_t updateIntoDB(const std::string& fieldName, const T& fieldValue );
|
||||
template<class T> size_t loadFromDB(const std::string& fieldName, const T& fieldValue);
|
||||
template<class T1, class T2> size_t loadFromDB(const std::vector<std::string>& fieldNames, const T1& field1Value, const T2& field2Value, MysqlConditionType conditionType = MYSQL_CONDITION_AND);
|
||||
bool insertIntoDB();
|
||||
|
||||
inline void setID(int id) { lock(); mID = id; unlock(); }
|
||||
@ -39,6 +45,7 @@ namespace model {
|
||||
protected:
|
||||
|
||||
virtual Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::string& fieldName) = 0;
|
||||
virtual Poco::Data::Statement _loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType = MYSQL_CONDITION_AND);
|
||||
virtual Poco::Data::Statement _insertIntoDB(Poco::Data::Session session) = 0;
|
||||
|
||||
int mID;
|
||||
@ -68,6 +75,31 @@ namespace model {
|
||||
return resultCount;
|
||||
}
|
||||
|
||||
|
||||
template<class T1, class T2>
|
||||
size_t ModelBase::loadFromDB(const std::vector<std::string>& fieldNames, const T1& field1Value, const T2& field2Value, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
|
||||
{
|
||||
auto cm = ConnectionManager::getInstance();
|
||||
Poco::Data::Statement select = _loadFromDB(cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER), fieldNames, conditionType);
|
||||
select, Poco::Data::Keywords::useRef(field1Value), Poco::Data::Keywords::useRef(field2Value);
|
||||
|
||||
size_t resultCount = 0;
|
||||
try {
|
||||
resultCount = select.execute();
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
lock();
|
||||
addError(new ParamError(getTableName(), "mysql error by selecting", ex.displayText().data()));
|
||||
for (auto it = fieldNames.begin(); it != fieldNames.end(); it++) {
|
||||
addError(new ParamError(getTableName(), "field name for select: ", it->data()));
|
||||
}
|
||||
//addError(new ParamError(getTableName(), "field name for select: ", fieldName.data()));
|
||||
unlock();
|
||||
}
|
||||
return resultCount;
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
size_t ModelBase::updateIntoDB(const std::string& fieldName, const T& fieldValue)
|
||||
{
|
||||
|
||||
38
src/cpp/test/TestRegExp.cpp
Normal file
38
src/cpp/test/TestRegExp.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
#include "TestRegExp.h"
|
||||
|
||||
#include "Poco/RegularExpression.h"
|
||||
#include "Poco/Exception.h"
|
||||
|
||||
// Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^(?:/[a-zA-Z0-9_-]*)?(?:/(en|de)|\?.*lang=(en|de))");
|
||||
|
||||
TestRegExp::TestRegExp()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
TestRegExp::~TestRegExp()
|
||||
{
|
||||
|
||||
}
|
||||
//! \return 0 if init okay, else return != 0
|
||||
int TestRegExp::init()
|
||||
{
|
||||
try {
|
||||
Poco::RegularExpression detectLanguageGet("^(?:/[a-zA-Z0-9_-]*)?(?:/(en|de)|\\?.*lang=(en|de))");
|
||||
std::vector<std::string> matches;
|
||||
detectLanguageGet.split("/resetPassword?lang=en&email=", matches);
|
||||
int zahl = 0;
|
||||
}
|
||||
catch (Poco::RegularExpressionException& ex) {
|
||||
printf("regular expression exception: %s\n", ex.displayText().data());
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//! \return 0 if okay, else return != 0
|
||||
int TestRegExp::test()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
19
src/cpp/test/TestRegExp.h
Normal file
19
src/cpp/test/TestRegExp.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef __GRADIDO_LOGIN_SERVER_TEST_REG_EXP_
|
||||
#define __GRADIDO_LOGIN_SERVER_TEST_REG_EXP_
|
||||
|
||||
#include "Test.h"
|
||||
|
||||
class TestRegExp : public Test
|
||||
{
|
||||
public:
|
||||
TestRegExp();
|
||||
~TestRegExp();
|
||||
//! \return 0 if init okay, else return != 0
|
||||
int init();
|
||||
|
||||
//! \return 0 if okay, else return != 0
|
||||
int test();
|
||||
const char* getName() { return "TestRegExp"; };
|
||||
};
|
||||
|
||||
#endif //__GRADIDO_LOGIN_SERVER_TEST_REG_EXP_
|
||||
@ -8,6 +8,7 @@ void fillTests()
|
||||
{
|
||||
gTests.push_back(new TestTasks());
|
||||
gTests.push_back(new TestHash());
|
||||
gTests.push_back(new TestRegExp());
|
||||
// gTests.push_back(new LoginTest());
|
||||
}
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
#include "TestTasks.h"
|
||||
#include "TestHash.h"
|
||||
#include "TestRegExp.h"
|
||||
|
||||
18
src/cpsp/flags.cpsp
Normal file
18
src/cpsp/flags.cpsp
Normal file
@ -0,0 +1,18 @@
|
||||
<div class="row pull-right-row">
|
||||
<div class="equel-grid pull-right">
|
||||
<div class="grid-body-small text-center">
|
||||
<button id="flag-england" name="lang" value="en" title="English" type="submit" <% if(lang != LANG_EN) { %>class="btn btn-outline-secondary flag-btn"<% }
|
||||
else { %>class="btn btn-secondary disabled flag-btn" disabled<% } %>>
|
||||
<span class="flag-england"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="equel-grid pull-right">
|
||||
<div class="grid-body-small text-center">
|
||||
<button id="flag-germany" name="lang" value="de" title="Deutsch" type="submit" <% if(lang != LANG_DE) { %>class="btn btn-outline-secondary flag-btn"<% }
|
||||
else { %>class="btn btn-secondary disabled flag-btn" disabled<% } %>>
|
||||
<span class="flag-germany"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
x
Reference in New Issue
Block a user