mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
update checkEmail with new style, language and support e-mail link, adding language field to user
This commit is contained in:
parent
f7f8d48c92
commit
af2ae60f85
@ -8,6 +8,7 @@
|
||||
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../SingletonManager/LanguageManager.h"
|
||||
|
||||
enum PageState
|
||||
{
|
||||
@ -33,9 +34,29 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
if (_compressResponse) response.set("Content-Encoding", "gzip");
|
||||
|
||||
Poco::Net::HTMLForm form(request, request.stream());
|
||||
#line 16 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
#line 17 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
|
||||
const char* pageName = "Email Verification";
|
||||
auto lm = LanguageManager::getInstance();
|
||||
|
||||
auto lang = chooseLanguage(request);
|
||||
auto langCatalog = lm->getFreeCatalog(lang);
|
||||
unsigned long long verificationCode = 0;
|
||||
|
||||
if(!form.empty()) {
|
||||
auto langBtn = form.get("lang-btn", "");
|
||||
auto verficationCodeStr = form.get("email-verification-code", "0");
|
||||
try {
|
||||
verificationCode = stoull(verficationCodeStr);
|
||||
} catch(...) {
|
||||
verificationCode = 0;
|
||||
}
|
||||
auto updatedLang = LANG_NULL;
|
||||
if(langBtn != "") {
|
||||
lang = chooseLanguage(request, langBtn);
|
||||
langCatalog = lm->getFreeCatalog(lang);
|
||||
}
|
||||
}
|
||||
|
||||
// remove old cookies if exist
|
||||
auto sm = SessionManager::getInstance();
|
||||
@ -47,7 +68,10 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
//state = MAIL_NOT_SEND;
|
||||
}
|
||||
}
|
||||
|
||||
auto hasErrors = errorCount() > 0;
|
||||
if(!verificationCode) {
|
||||
verificationCode = getLastGetAsU64(request.getURI());
|
||||
}
|
||||
|
||||
std::ostream& _responseStream = response.send();
|
||||
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
|
||||
@ -64,59 +88,21 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</title>\n";
|
||||
responseStream << "<!--<link rel=\"stylesheet\" type=\"text/css\" href=\"css/styles.min.css\">-->\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/css/styles.css\">\n";
|
||||
responseStream << "<style type=\"text/css\" >\n";
|
||||
responseStream << ".grd_container\n";
|
||||
responseStream << "{\n";
|
||||
responseStream << " max-width:820px;\n";
|
||||
responseStream << " margin-left:auto;\n";
|
||||
responseStream << " margin-right:auto;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "\n";
|
||||
responseStream << "input:not([type='radio']) {\n";
|
||||
responseStream << "\twidth:200px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "label:not(.grd_radio_label) {\n";
|
||||
responseStream << "\twidth:80px;\n";
|
||||
responseStream << "\tdisplay:inline-block;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd_container_small\n";
|
||||
responseStream << "{\n";
|
||||
responseStream << " max-width:500px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd_text {\n";
|
||||
responseStream << " max-width:550px;\n";
|
||||
responseStream << " margin-bottom: 5px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".dev-info {\n";
|
||||
responseStream << "\tposition: fixed;\n";
|
||||
responseStream << "\tcolor:grey;\n";
|
||||
responseStream << "\tfont-size: smaller;\n";
|
||||
responseStream << "\tleft:8px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd-time-used { \n";
|
||||
responseStream << " bottom:0;\n";
|
||||
responseStream << "} \n";
|
||||
responseStream << "\n";
|
||||
responseStream << ".versionstring {\n";
|
||||
responseStream << "\ttop:0;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "</style>\n";
|
||||
responseStream << "css/loginServer/style.css\">\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body>\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 0.6.0</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha 0.8.0</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 58 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#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";
|
||||
@ -125,50 +111,114 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
responseStream << "</nav>-->";
|
||||
// end include header.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"grd_container\">\n";
|
||||
responseStream << "\t\n";
|
||||
responseStream << "\t<h1>Einen neuen Account anlegen</h1>\n";
|
||||
responseStream << "\t";
|
||||
#line 35 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
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=\"../../index.html\" class=\"logo\">\n";
|
||||
responseStream << " <img src=\"";
|
||||
#line 60 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_schrift.webp\" alt=\"logo\" />\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 68 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t";
|
||||
#line 36 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
if(state == MAIL_NOT_SEND) { responseStream << "\n";
|
||||
responseStream << "\t\t<div class=\"grd_text\">\n";
|
||||
responseStream << "\t\t\t<p>Die E-Mail wurde noch nicht verschickt, bitte habe noch etwas Geduld.</p>\n";
|
||||
responseStream << "\t\t\t<p>Versuche es einfach in 1-2 Minuten erneut.</p>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t";
|
||||
#line 41 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} else if(state == ASK_VERIFICATION_CODE) { responseStream << "\n";
|
||||
responseStream << "\t<form method=\"GET\">\n";
|
||||
responseStream << "\t\t<p>Bitte gebe deinen E-Mail Verification Code ein. </p>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 44 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
if(mSession && !mSession->getUser().isNull()) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Er wurde an deine E-Mail Adresse: ";
|
||||
#line 45 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( mSession->getUser()->getEmail() );
|
||||
responseStream << " gesendet.</p>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 46 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t<input type=\"number\" name=\"email-verification-code\">\n";
|
||||
responseStream << "\t\t<input class=\"grd-form-bn grd-form-bn-succeed grd_clickable\" type=\"submit\" value=\"Überprüfe Code\">\n";
|
||||
responseStream << "\t\t<p>Du hast bisher keinen Code erhalten? </p>\n";
|
||||
responseStream << "\t\t<p>E-Mail erneut zuschicken (in Arbeit)</p>\n";
|
||||
responseStream << "\t</form>\n";
|
||||
responseStream << "\t";
|
||||
#line 52 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} else { responseStream << "\n";
|
||||
responseStream << "\t<div class=\"grd_text\">\n";
|
||||
responseStream << "\t\t\tUngültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin. \n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t";
|
||||
#line 56 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"grid-body\">\n";
|
||||
responseStream << " <form action=\"";
|
||||
#line 71 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "account/checkEmail\" method=\"GET\">\n";
|
||||
responseStream << " <div class=\"row pull-right-row\">\n";
|
||||
responseStream << " <div class=\"equel-grid pull-right\">\n";
|
||||
responseStream << " <div class=\"grid-body-small text-center\">\n";
|
||||
responseStream << " <button id=\"flag-england\" name=\"lang-btn\" value=\"en\" title=\"English\" type=\"submit\" ";
|
||||
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
if(lang != LANG_EN) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
|
||||
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
}
|
||||
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
|
||||
#line 76 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << " <span class=\"flag-england\"></span>\n";
|
||||
responseStream << " </button>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"equel-grid pull-right\">\n";
|
||||
responseStream << " <div class=\"grid-body-small text-center\">\n";
|
||||
responseStream << " <button id=\"flag-germany\" name=\"lang-btn\" value=\"de\" title=\"Deutsch\" type=\"submit\" ";
|
||||
#line 83 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
if(lang != LANG_DE) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
|
||||
#line 83 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
}
|
||||
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
|
||||
#line 84 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << " <span class=\"flag-germany\"></span>\n";
|
||||
responseStream << " </button>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"item-wrapper\">\n";
|
||||
responseStream << " <div class=\"form-group\">\n";
|
||||
responseStream << " <label for=\"email-verification-code\">";
|
||||
#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Bitte gebe deinen E-Mail Verification Code ein:"));
|
||||
responseStream << "</label>\n";
|
||||
responseStream << " <input type=\"text\" class=\"form-control\" name=\"email-verification-code\" id=\"email-verification-code\" placeholder=\"";
|
||||
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Email Verification Code"));
|
||||
responseStream << "\" ";
|
||||
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
if(verificationCode) { responseStream << "value=\"";
|
||||
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( verificationCode );
|
||||
responseStream << "\" ";
|
||||
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
} responseStream << ">\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <button type=\"submit\" class=\"btn btn-sm btn-primary\">";
|
||||
#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Überprüfe Code"));
|
||||
responseStream << "</button>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </form>\n";
|
||||
responseStream << " <!--<p class=\"margin-top-10\">\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Du hast bisher keinen Code erhalten?"));
|
||||
responseStream << "<br> \n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("E-Mail erneut zuschicken (in Arbeit)"));
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t </p>-->\n";
|
||||
responseStream << " <p class=\"margin-top-10\">\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Funktioniert dein E-Mail Verification Code nicht?"));
|
||||
responseStream << "<br>\n";
|
||||
responseStream << "\t\t\t\t";
|
||||
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp"
|
||||
responseStream << ( langCatalog->gettext("Schicke mir eine E-Mail und ich kümmere mich darum: "));
|
||||
responseStream << "<br>\n";
|
||||
responseStream << " <a href=\"mailto:coin@gradido.net?subject=Invalid E-Mail Verification Code&body=Hallo Dario,%0D%0A%0D%0Amein E-Mail Verification-Code: 121121354 funktioniert nicht,%0D%0Akannst du das prüfen?%0D%0A%0D%0AMit freundlichen Grüßen%0D%0A\">E-Mail</a>\n";
|
||||
responseStream << "\t\t\t </p>\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";
|
||||
// begin include footer.cpsp
|
||||
responseStream << "\t<div class=\"grd-time-used dev-info\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#include "Poco/Net/HTTPServerRequest.h"
|
||||
#include "Poco/Net/HTTPServerResponse.h"
|
||||
#include "Poco/URI.h"
|
||||
#include "Poco/Logger.h"
|
||||
#include "Poco/Data/Binding.h"
|
||||
|
||||
using namespace Poco::Data::Keywords;
|
||||
@ -103,7 +104,6 @@ void ElopageWebhook::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
}
|
||||
|
||||
|
||||
|
||||
// write stream result also to file
|
||||
static Poco::Mutex mutex;
|
||||
|
||||
@ -112,7 +112,9 @@ void ElopageWebhook::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
Poco::FileOutputStream file("elopage_webhook_requests.txt", std::ios::out | std::ios::app);
|
||||
|
||||
if (!file.good()) {
|
||||
printf("[ElopageWebhook::handleRequest] error creating file with name: elopage_webhook_requests.txt\n");
|
||||
Poco::Logger& logging(Poco::Logger::get("errorLog"));
|
||||
logging.error("[ElopageWebhook::handleRequest] error creating file with name: elopage_webhook_requests.txt");
|
||||
//printf("[ElopageWebhook::handleRequest] error creating file with name: elopage_webhook_requests.txt\n");
|
||||
mutex.unlock();
|
||||
return;
|
||||
}
|
||||
@ -172,6 +174,7 @@ void HandleElopageRequestTask::writeUserIntoDB()
|
||||
use(mEmail), use(mFirstName), use(mLastName);
|
||||
try {
|
||||
insert.execute();
|
||||
//printf("user written into db\n");
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
addError(new ParamError(__FUNCTION__, "mysql error", ex.displayText().data()));
|
||||
@ -233,7 +236,7 @@ int HandleElopageRequestTask::run()
|
||||
std::cerr << __FUNCTION__ << "Unknown error" << '\n';
|
||||
}
|
||||
std::string order_id = mRequestData.get("order_id", "");
|
||||
addError(new ParamError("HandleElopageRequestTask", "order_id", order_id.data()));
|
||||
auto param_error_order_id = new ParamError("HandleElopageRequestTask", "order_id", order_id.data());
|
||||
|
||||
// only for product 36001 and 43741 create user accounts and send emails
|
||||
if (product_id == 36001 || product_id == 43741) {
|
||||
@ -241,22 +244,25 @@ int HandleElopageRequestTask::run()
|
||||
mFirstName = mRequestData.get("payer[first_name]", "");
|
||||
mLastName = mRequestData.get("payer[last_name]", "");
|
||||
|
||||
printf("LastName: %s\n", mLastName.data());
|
||||
/* printf("LastName: %s\n", mLastName.data());
|
||||
for (int i = 0; i < mLastName.size(); i++) {
|
||||
char c = mLastName.data()[i];
|
||||
printf("%d ", c);
|
||||
}
|
||||
printf("\n\n");
|
||||
*/
|
||||
|
||||
// validate input
|
||||
if (!validateInput()) {
|
||||
// if input is invalid we can stop now
|
||||
addError(param_error_order_id);
|
||||
sendErrorsAsEmail();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// if user exist we can stop now
|
||||
if (getUserIdFromDB()) {
|
||||
addError(param_error_order_id);
|
||||
sendErrorsAsEmail();
|
||||
return -2;
|
||||
}
|
||||
@ -277,6 +283,7 @@ int HandleElopageRequestTask::run()
|
||||
// we didn't get a user_id, something went wrong
|
||||
if (!user_id) {
|
||||
addError(new Error("User loadEntryDBId", "user_id is zero"));
|
||||
addError(param_error_order_id);
|
||||
sendErrorsAsEmail();
|
||||
return -3;
|
||||
}
|
||||
@ -288,6 +295,7 @@ int HandleElopageRequestTask::run()
|
||||
if (!emailVerification->getCode()) {
|
||||
// exit if email verification code is empty
|
||||
addError(new Error("Email verification", "code is empty, error in random?"));
|
||||
addError(param_error_order_id);
|
||||
sendErrorsAsEmail();
|
||||
return -4;
|
||||
}
|
||||
@ -322,8 +330,10 @@ int HandleElopageRequestTask::run()
|
||||
|
||||
// if errors occured, send via email
|
||||
if (errorCount() > 1) {
|
||||
addError(param_error_order_id);
|
||||
sendErrorsAsEmail();
|
||||
}
|
||||
delete param_error_order_id;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -9,6 +9,9 @@ class HandleFileRequest : public Poco::Net::HTTPRequestHandler
|
||||
{
|
||||
public:
|
||||
void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -136,7 +136,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
|
||||
responseStream << "<body>\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 0.7.0</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha 0.8.0</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";
|
||||
@ -256,10 +256,6 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
|
||||
responseStream << ( mTimeProfiler.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<script src=\"";
|
||||
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "js/core.js\"></script>\n";
|
||||
responseStream << "</body>\n";
|
||||
responseStream << "</html>";
|
||||
// end include footer.cpsp
|
||||
|
||||
@ -163,6 +163,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::handleCheckEmail(Sessi
|
||||
{
|
||||
Poco::Net::HTMLForm form(request);
|
||||
unsigned long long verificationCode = 0;
|
||||
Languages lang = LANG_DE;
|
||||
|
||||
// if verification code is valid, go to next page, passphrase
|
||||
// login via verification code, if no session is active
|
||||
@ -171,6 +172,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::handleCheckEmail(Sessi
|
||||
try {
|
||||
verificationCode = stoull(form.get("email-verification-code", "0"));
|
||||
} catch (...) {}
|
||||
lang = LanguageManager::languageFromString(form.get("lang-btn", "de"));
|
||||
}
|
||||
// try to get code from uri parameter
|
||||
if (!verificationCode) {
|
||||
@ -179,15 +181,15 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::handleCheckEmail(Sessi
|
||||
auto str = uri.substr(pos + 1);
|
||||
verificationCode = stoull(uri.substr(pos + 1));
|
||||
} catch (const std::invalid_argument& ia) {
|
||||
std::cerr << __FUNCTION__ << "Invalid argument: " << ia.what() << '\n';
|
||||
std::cerr << __FUNCTION__ << " Invalid argument: " << ia.what() << ", str: " << uri.substr(pos + 1) << '\n';
|
||||
} catch (const std::out_of_range& oor) {
|
||||
std::cerr << __FUNCTION__ << "Out of Range error: " << oor.what() << '\n';
|
||||
std::cerr << __FUNCTION__ << " Out of Range error: " << oor.what() << '\n';
|
||||
}
|
||||
catch (const std::logic_error & ler) {
|
||||
std::cerr << __FUNCTION__ << "Logical error: " << ler.what() << '\n';
|
||||
std::cerr << __FUNCTION__ << " Logical error: " << ler.what() << '\n';
|
||||
}
|
||||
catch (...) {
|
||||
std::cerr << __FUNCTION__ << "Unknown error" << '\n';
|
||||
std::cerr << __FUNCTION__ << " Unknown error" << '\n';
|
||||
}
|
||||
}
|
||||
|
||||
@ -211,6 +213,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::handleCheckEmail(Sessi
|
||||
// no suitable session in memory, try to create one from db data
|
||||
if (!session) {
|
||||
session = sm->getNewSession();
|
||||
session->setLanguage(lang);
|
||||
if (session->loadFromEmailVerificationCode(verificationCode)) {
|
||||
// login not possible in this function, forwarded to PassphrasePage
|
||||
/*auto cookie_id = session->getHandle();
|
||||
|
||||
@ -38,3 +38,30 @@ Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerReques
|
||||
|
||||
return lang;
|
||||
}
|
||||
|
||||
unsigned long long PageRequestMessagedHandler::getLastGetAsU64(const std::string& uri)
|
||||
{
|
||||
unsigned long long result = 0;
|
||||
size_t pos = uri.find_last_of("/");
|
||||
try {
|
||||
auto str = uri.substr(pos + 1);
|
||||
result = stoull(uri.substr(pos + 1));
|
||||
}
|
||||
catch (const std::invalid_argument& ia) {
|
||||
std::cerr << __FUNCTION__ << " Invalid argument: " << ia.what() << ", str: " << uri.substr(pos + 1) << '\n';
|
||||
return 0;
|
||||
}
|
||||
catch (const std::out_of_range& oor) {
|
||||
std::cerr << __FUNCTION__ << " Out of Range error: " << oor.what() << '\n';
|
||||
return 0;
|
||||
}
|
||||
catch (const std::logic_error & ler) {
|
||||
std::cerr << __FUNCTION__ << " Logical error: " << ler.what() << '\n';
|
||||
return 0;
|
||||
}
|
||||
catch (...) {
|
||||
std::cerr << __FUNCTION__ << " Unknown error" << '\n';
|
||||
return 0;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -25,7 +25,10 @@ protected:
|
||||
inline const char* gettext(Session* session, const char* text) { if (!session || !session->getLanguageCatalog()) return text; return session->getLanguageCatalog()->gettext(text); }
|
||||
Languages chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string lang_btn = "");
|
||||
|
||||
unsigned long long getLastGetAsU64(const std::string& uri);
|
||||
|
||||
Profiler mTimeProfiler;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ Poco::AutoPtr<LanguageCatalog> LanguageManager::getFreeCatalog(Languages lang)
|
||||
|
||||
if (lang >= LANG_COUNT) {
|
||||
//printf("[LanguageManager::getFreeCatalog] invalid language: %d\n", lang);
|
||||
mLogging.information("[LanguageManager::getFreeCatalog] invalid language: %d, set to default (%s)", (int)lang, filenameForLanguage(ServerConfig::g_default_locale));
|
||||
//mLogging.information("[LanguageManager::getFreeCatalog] invalid language: %d, set to default (%s)", (int)lang, filenameForLanguage(ServerConfig::g_default_locale));
|
||||
//return nullptr;
|
||||
lang = ServerConfig::g_default_locale;
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ std::string Error::getString()
|
||||
std::string Error::getHtmlString()
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << mFunctionName << ": " << mMessage << std::endl;
|
||||
ss << mFunctionName << ": " << mMessage;
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
@ -14,6 +14,8 @@ SendErrorMessage::~SendErrorMessage()
|
||||
|
||||
int SendErrorMessage::run()
|
||||
{
|
||||
//return 0;
|
||||
|
||||
auto mailClientSession = new Poco::Net::SecureSMTPClientSession(ServerConfig::g_EmailAccount.url, ServerConfig::g_EmailAccount.port);
|
||||
mailClientSession->login();
|
||||
mailClientSession->startTLS(ServerConfig::g_SSL_CLient_Context);
|
||||
|
||||
@ -266,6 +266,7 @@ bool Session::updateEmailVerification(Poco::UInt64 emailVerificationCode)
|
||||
}
|
||||
if (mSessionUser) {
|
||||
mSessionUser->setEmailChecked();
|
||||
mSessionUser->setLanguage(getLanguage());
|
||||
}
|
||||
updateState(SESSION_STATE_EMAIL_VERIFICATION_CODE_CHECKED);
|
||||
//printf("[%s] time: %s\n", funcName, usedTime.string().data());
|
||||
@ -552,6 +553,7 @@ bool Session::loadFromEmailVerificationCode(Poco::UInt64 emailVerificationCode)
|
||||
size_t rowCount = select.execute();
|
||||
if (rowCount != 1) {
|
||||
em->addError(new ParamError(funcName, "select user by email verification code work not like expected, selected row count", rowCount));
|
||||
em->addError(new ParamError(funcName, "emailVerficiation Code: ", std::to_string(emailVerificationCode)));
|
||||
em->sendErrorsAsEmail();
|
||||
}
|
||||
if (rowCount < 1) {
|
||||
@ -560,6 +562,7 @@ bool Session::loadFromEmailVerificationCode(Poco::UInt64 emailVerificationCode)
|
||||
}
|
||||
|
||||
mSessionUser = new User(user_id);
|
||||
mSessionUser->setLanguage(getLanguage());
|
||||
|
||||
mEmailVerificationCode = emailVerificationCode;
|
||||
updateState(SESSION_STATE_EMAIL_VERIFICATION_WRITTEN);
|
||||
@ -567,7 +570,8 @@ bool Session::loadFromEmailVerificationCode(Poco::UInt64 emailVerificationCode)
|
||||
return true;
|
||||
}
|
||||
catch (const Poco::Exception& ex) {
|
||||
em->addError(new ParamError(funcName, "error selecting user from verification code", ex.displayText().data()));
|
||||
em->addError(new ParamError(funcName, "exception selecting user from verification code", ex.displayText().data()));
|
||||
em->addError(new ParamError(funcName, "emailVerficiation Code: ", std::to_string(emailVerificationCode)));
|
||||
em->sendErrorsAsEmail();
|
||||
}
|
||||
|
||||
|
||||
@ -174,14 +174,14 @@ int UserWriteCryptoKeyHashIntoDB::run()
|
||||
// *******************************************************************************
|
||||
// new user
|
||||
User::User(const char* email, const char* first_name, const char* last_name)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mFirstName(first_name), mLastName(last_name), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mCryptoKey(nullptr),
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mFirstName(first_name), mLastName(last_name), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr),
|
||||
mReferenceCount(1)
|
||||
{
|
||||
memset(mPublicKey, 0, crypto_sign_PUBLICKEYBYTES);
|
||||
}
|
||||
// load from db
|
||||
User::User(const char* email)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
//crypto_shorthash(mPasswordHashed, (const unsigned char*)password, strlen(password), *ServerConfig::g_ServerCryptoKey);
|
||||
//memset(mPasswordHashed, 0, crypto_shorthash_BYTES);
|
||||
@ -195,12 +195,15 @@ User::User(const char* email)
|
||||
|
||||
Poco::Data::Statement select(session);
|
||||
int email_checked = 0;
|
||||
select << "SELECT id, first_name, last_name, password, pubkey, privkey, email_checked from users where email = ?",
|
||||
into(mDBId), into(mFirstName), into(mLastName), into(mPasswordHashed), into(pubkey), into(privkey), into(email_checked), use(mEmail);
|
||||
std::string language_key;
|
||||
select << "SELECT id, first_name, last_name, password, pubkey, privkey, email_checked, language from users where email = ?",
|
||||
into(mDBId), into(mFirstName), into(mLastName), into(mPasswordHashed), into(pubkey), into(privkey), into(email_checked), into(language_key),
|
||||
use(mEmail);
|
||||
try {
|
||||
auto result = select.execute();
|
||||
if (result == 1) {
|
||||
mState = USER_LOADED_FROM_DB;
|
||||
mLanguage = LanguageManager::languageFromString(language_key);
|
||||
if (email_checked == 0) { mState = USER_EMAIL_NOT_ACTIVATED;}
|
||||
else if (pubkey.isNull()) { mState = USER_NO_KEYS;}
|
||||
else if (privkey.isNull()) { mState = USER_NO_PRIVATE_KEY; }
|
||||
@ -238,7 +241,7 @@ User::User(const char* email)
|
||||
}
|
||||
|
||||
User::User(int user_id)
|
||||
: mState(USER_EMPTY), mDBId(user_id), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(user_id), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
auto cm = ConnectionManager::getInstance();
|
||||
auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER);
|
||||
@ -250,12 +253,15 @@ User::User(int user_id)
|
||||
|
||||
Poco::Data::Statement select(session);
|
||||
int email_checked = 0;
|
||||
select << "SELECT email, first_name, last_name, password, pubkey, privkey, email_checked from users where id = ?",
|
||||
into(mEmail), into(mFirstName), into(mLastName), into(mPasswordHashed), into(pubkey), into(privkey), into(email_checked), use(user_id);
|
||||
std::string language_key;
|
||||
select << "SELECT email, first_name, last_name, password, pubkey, privkey, email_checked, language from users where id = ?",
|
||||
into(mEmail), into(mFirstName), into(mLastName), into(mPasswordHashed), into(pubkey), into(privkey), into(email_checked), into(language_key),
|
||||
use(user_id);
|
||||
try {
|
||||
auto result = select.execute();
|
||||
if (result == 1) {
|
||||
mState = USER_LOADED_FROM_DB;
|
||||
mLanguage = LanguageManager::languageFromString(language_key);
|
||||
if (email_checked == 0) { mState = USER_EMAIL_NOT_ACTIVATED; }
|
||||
else if (pubkey.isNull()) { mState = USER_NO_KEYS; }
|
||||
else if (privkey.isNull()) { mState = USER_NO_PRIVATE_KEY; }
|
||||
@ -293,7 +299,7 @@ User::User(int user_id)
|
||||
}
|
||||
|
||||
User::User(const unsigned char* pubkey_array)
|
||||
: mState(USER_EMPTY), mDBId(0), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(0), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
//crypto_shorthash(mPasswordHashed, (const unsigned char*)password, strlen(password), *ServerConfig::g_ServerCryptoKey);
|
||||
//memset(mPasswordHashed, 0, crypto_shorthash_BYTES);
|
||||
@ -307,12 +313,15 @@ User::User(const unsigned char* pubkey_array)
|
||||
|
||||
Poco::Data::Statement select(session);
|
||||
int email_checked = 0;
|
||||
select << "SELECT id, email, first_name, last_name, password, privkey, email_checked from users where pubkey = ?",
|
||||
into(mDBId), into(mEmail), into(mFirstName), into(mLastName), into(mPasswordHashed), into(privkey), into(email_checked), use(pubkey);
|
||||
std::string language_key;
|
||||
select << "SELECT id, email, first_name, last_name, password, privkey, email_checked, language from users where pubkey = ?",
|
||||
into(mDBId), into(mEmail), into(mFirstName), into(mLastName), into(mPasswordHashed), into(privkey), into(email_checked), into(language_key),
|
||||
use(pubkey);
|
||||
try {
|
||||
auto result = select.execute();
|
||||
if (result == 1) {
|
||||
mState = USER_LOADED_FROM_DB;
|
||||
mLanguage = LanguageManager::languageFromString(language_key);
|
||||
if (email_checked == 0) { mState = USER_EMAIL_NOT_ACTIVATED; }
|
||||
else if (privkey.isNull()) { mState = USER_NO_PRIVATE_KEY; }
|
||||
else { mState = USER_COMPLETE; }
|
||||
@ -831,13 +840,14 @@ Poco::Data::Statement User::insertIntoDB(Poco::Data::Session session)
|
||||
//Poco::Data::BLOB pwd(&mPasswordHashed[0], crypto_shorthash_BYTES);
|
||||
|
||||
//printf("[User::insertIntoDB] password hashed: %llu\n", mPasswordHashed);
|
||||
std::string languageKey = LanguageManager::keyForLanguage(mLanguage);
|
||||
if (mPasswordHashed) {
|
||||
insert << "INSERT INTO users (email, first_name, last_name, password) VALUES(?, ?, ?, ?);",
|
||||
use(mEmail), use(mFirstName), use(mLastName), bind(mPasswordHashed);
|
||||
insert << "INSERT INTO users (email, first_name, last_name, password, language) VALUES(?, ?, ?, ?, ?);",
|
||||
use(mEmail), use(mFirstName), use(mLastName), bind(mPasswordHashed), bind(languageKey);
|
||||
}
|
||||
else {
|
||||
insert << "INSERT INTO users (email, first_name, last_name) VALUES(?, ?, ?);",
|
||||
use(mEmail), use(mFirstName), use(mLastName);
|
||||
insert << "INSERT INTO users (email, first_name, last_name, language) VALUES(?, ?, ?, ?);",
|
||||
use(mEmail), use(mFirstName), use(mLastName), bind(languageKey);
|
||||
}
|
||||
|
||||
|
||||
@ -862,6 +872,11 @@ bool User::updateIntoDB(UserFields fieldType)
|
||||
update << "UPDATE users SET email_checked = ? where id = ?",
|
||||
use(mEmailChecked), use(mDBId);
|
||||
}
|
||||
else if (USER_FIELDS_LANGUAGE == fieldType) {
|
||||
std::string languageKey = LanguageManager::keyForLanguage(mLanguage);
|
||||
update << "UPDATE users SET language = ? where id = ?",
|
||||
bind(languageKey), use(mDBId);
|
||||
}
|
||||
try {
|
||||
if (update.execute() == 1) return true;
|
||||
addError(new ParamError("User::updateIntoDB", "update not affected 1 rows", fieldType));
|
||||
|
||||
@ -13,12 +13,14 @@
|
||||
|
||||
#include "../SingletonManager/MemoryManager.h"
|
||||
|
||||
|
||||
class UserCreateCryptoKey;
|
||||
class UserWriteIntoDB;
|
||||
class Session;
|
||||
class UserWriteCryptoKeyHashIntoDB;
|
||||
class SigningTransaction;
|
||||
class UserGenerateKeys;
|
||||
enum Languages;
|
||||
|
||||
enum UserStates
|
||||
{
|
||||
@ -37,7 +39,8 @@ enum UserFields
|
||||
USER_FIELDS_FIRST_NAME,
|
||||
USER_FIELDS_LAST_NAME,
|
||||
USER_FIELDS_PASSWORD,
|
||||
USER_FIELDS_EMAIL_CHECKED
|
||||
USER_FIELDS_EMAIL_CHECKED,
|
||||
USER_FIELDS_LANGUAGE
|
||||
};
|
||||
|
||||
class User : public ErrorList
|
||||
@ -81,11 +84,14 @@ public:
|
||||
inline int getDBId() const { return mDBId; }
|
||||
inline std::string getPublicKeyHex() { lock(); std::string pubkeyHex = mPublicHex; unlock(); return pubkeyHex; }
|
||||
inline const unsigned char* getPublicKey() { return mPublicKey; }
|
||||
inline Languages getLanguage() { lock(); Languages lang = mLanguage; unlock(); return lang; }
|
||||
|
||||
inline void setPublicKeyHex(const std::string& publicKeyHex) { lock(); mPublicHex = publicKeyHex; unlock(); }
|
||||
inline void setPublicKey(const unsigned char* key) { lock(); memcpy(mPublicKey, key, crypto_sign_PUBLICKEYBYTES); unlock();}
|
||||
|
||||
UserStates getUserState();
|
||||
|
||||
void setLanguage(Languages lang) { lock(); mLanguage = lang; unlock(); }
|
||||
void setEmailChecked();
|
||||
bool isEmptyPassword();
|
||||
bool setNewPassword(const std::string& newPassword);
|
||||
@ -141,6 +147,7 @@ private:
|
||||
// TODO: insert created if necessary
|
||||
|
||||
bool mEmailChecked;
|
||||
Languages mLanguage;
|
||||
|
||||
// ************************ DB FIELDS END ******************************
|
||||
// crypto key as obfus array
|
||||
|
||||
@ -41,13 +41,14 @@ namespace UniLib {
|
||||
std::string name = mWaitingTask->getName();
|
||||
//l->addTaskLogEntry((HASH)mWaitingTask.getResourcePtrHolder(), mWaitingTask->getResourceType(), mName.data(), name);
|
||||
#endif
|
||||
if (!mWaitingTask->run()) {
|
||||
int returnValue = mWaitingTask->run();
|
||||
if (!returnValue) {
|
||||
mWaitingTask->setTaskFinished();
|
||||
}
|
||||
#ifdef _UNI_LIB_DEBUG
|
||||
//l->removeTaskLogEntry((HASH)mWaitingTask.getResourcePtrHolder());
|
||||
mSpeedLog.information("%s used on thread: %s by Task: %s of: %s",
|
||||
counter.string(), mName, std::string(mWaitingTask->getResourceType()), name);
|
||||
mSpeedLog.information("%s used on thread: %s by Task: %s of: %s (returned: %d)",
|
||||
counter.string(), mName, std::string(mWaitingTask->getResourceType()), name, returnValue);
|
||||
#endif
|
||||
mWaitingTask = mParent->getNextUndoneTask(this);
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ PrepareEmailTask::~PrepareEmailTask()
|
||||
|
||||
int PrepareEmailTask::run()
|
||||
{
|
||||
//return 0;
|
||||
Profiler timeUsed;
|
||||
mMailClientSession = new Poco::Net::SecureSMTPClientSession(ServerConfig::g_EmailAccount.url, ServerConfig::g_EmailAccount.port);
|
||||
mMailClientSession->login();
|
||||
|
||||
@ -21,6 +21,7 @@ SendEmailTask::~SendEmailTask()
|
||||
|
||||
int SendEmailTask::run()
|
||||
{
|
||||
//return 0;
|
||||
Profiler timeUsed;
|
||||
auto er = ErrorManager::getInstance();
|
||||
auto parent = getParent(0);
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
<%@ page compressed="true" %>
|
||||
<%!
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../SingletonManager/LanguageManager.h"
|
||||
|
||||
enum PageState
|
||||
{
|
||||
@ -15,6 +16,26 @@ enum PageState
|
||||
%>
|
||||
<%%
|
||||
const char* pageName = "Email Verification";
|
||||
auto lm = LanguageManager::getInstance();
|
||||
|
||||
auto lang = chooseLanguage(request);
|
||||
auto langCatalog = lm->getFreeCatalog(lang);
|
||||
unsigned long long verificationCode = 0;
|
||||
|
||||
if(!form.empty()) {
|
||||
auto langBtn = form.get("lang-btn", "");
|
||||
auto verficationCodeStr = form.get("email-verification-code", "0");
|
||||
try {
|
||||
verificationCode = stoull(verficationCodeStr);
|
||||
} catch(...) {
|
||||
verificationCode = 0;
|
||||
}
|
||||
auto updatedLang = LANG_NULL;
|
||||
if(langBtn != "") {
|
||||
lang = chooseLanguage(request, langBtn);
|
||||
langCatalog = lm->getFreeCatalog(lang);
|
||||
}
|
||||
}
|
||||
|
||||
// remove old cookies if exist
|
||||
auto sm = SessionManager::getInstance();
|
||||
@ -26,33 +47,69 @@ enum PageState
|
||||
//state = MAIL_NOT_SEND;
|
||||
}
|
||||
}
|
||||
|
||||
auto hasErrors = errorCount() > 0;
|
||||
if(!verificationCode) {
|
||||
verificationCode = getLastGetAsU64(request.getURI());
|
||||
}
|
||||
|
||||
%><%@ include file="header.cpsp" %>
|
||||
<div class="grd_container">
|
||||
|
||||
<h1>Einen neuen Account anlegen</h1>
|
||||
<div class="authentication-theme auth-style_1">
|
||||
<div class="row">
|
||||
<div class="col-12 logo-section">
|
||||
<a href="../../index.html" class="logo">
|
||||
<img src="<%= ServerConfig::g_php_serverPath %>img/logo_schrift.webp" alt="logo" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-7 col-sm-9 col-11 mx-auto">
|
||||
<div class="grid">
|
||||
<div class="center-ul-container">
|
||||
<%= getErrorsHtml() %>
|
||||
<% if(state == MAIL_NOT_SEND) { %>
|
||||
<div class="grd_text">
|
||||
<p>Die E-Mail wurde noch nicht verschickt, bitte habe noch etwas Geduld.</p>
|
||||
<p>Versuche es einfach in 1-2 Minuten erneut.</p>
|
||||
</div>
|
||||
<% } else if(state == ASK_VERIFICATION_CODE) { %>
|
||||
<form method="GET">
|
||||
<p>Bitte gebe deinen E-Mail Verification Code ein. </p>
|
||||
<% if(mSession && !mSession->getUser().isNull()) {%>
|
||||
<p>Er wurde an deine E-Mail Adresse: <%= mSession->getUser()->getEmail() %> gesendet.</p>
|
||||
<% } %>
|
||||
<input type="number" name="email-verification-code">
|
||||
<input class="grd-form-bn grd-form-bn-succeed grd_clickable" type="submit" value="Überprüfe Code">
|
||||
<p>Du hast bisher keinen Code erhalten? </p>
|
||||
<p>E-Mail erneut zuschicken (in Arbeit)</p>
|
||||
<div class="grid-body">
|
||||
<form action="<%= ServerConfig::g_php_serverPath %>account/checkEmail" method="GET">
|
||||
<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-btn" 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-btn" 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>
|
||||
<div class="item-wrapper">
|
||||
<div class="form-group">
|
||||
<label for="email-verification-code"><%= langCatalog->gettext("Bitte gebe deinen E-Mail Verification Code ein:")%></label>
|
||||
<input type="text" class="form-control" name="email-verification-code" id="email-verification-code" placeholder="<%= langCatalog->gettext("Email Verification Code")%>" <% if(verificationCode) { %>value="<%= verificationCode %>" <% } %>>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-sm btn-primary"><%= langCatalog->gettext("Überprüfe Code")%></button>
|
||||
</div>
|
||||
</form>
|
||||
<% } else { %>
|
||||
<div class="grd_text">
|
||||
Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende dich an den Server-Admin.
|
||||
<!--<p class="margin-top-10">
|
||||
<%= langCatalog->gettext("Du hast bisher keinen Code erhalten?")%><br>
|
||||
<%= langCatalog->gettext("E-Mail erneut zuschicken (in Arbeit)")%>
|
||||
</p>-->
|
||||
<p class="margin-top-10">
|
||||
<%= langCatalog->gettext("Funktioniert dein E-Mail Verification Code nicht?")%><br>
|
||||
<%= langCatalog->gettext("Schicke mir eine E-Mail und ich kümmere mich darum: ")%><br>
|
||||
<a href="mailto:coin@gradido.net?subject=Invalid E-Mail Verification Code&body=Hallo Dario,%0D%0A%0D%0Amein E-Mail Verification-Code: 121121354 funktioniert nicht,%0D%0Akannst du das prüfen?%0D%0A%0D%0AMit freundlichen Grüßen%0D%0A">E-Mail</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="auth_footer">
|
||||
<p class="text-muted text-center">© Gradido 2019</p>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
<%@ include file="footer.cpsp" %>
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
<div class="grd-time-used dev-info">
|
||||
<%= mTimeProfiler.string() %>
|
||||
</div>
|
||||
<script src="<%= ServerConfig::g_php_serverPath %>js/core.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@ -12,7 +12,7 @@
|
||||
<body>
|
||||
<div class="versionstring dev-info">
|
||||
<p class="grd_small">Login Server in Entwicklung</p>
|
||||
<p class="grd_small">Alpha 0.7.0</p>
|
||||
<p class="grd_small">Alpha 0.8.0</p>
|
||||
</div>
|
||||
<!--<nav class="grd-left-bar expanded" data-topbar role="navigation">
|
||||
<div class="grd-left-bar-section">
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
bool userReturned = false;
|
||||
|
||||
if(!form.empty()) {
|
||||
if(form.get("register-password2") != form.get("register-password")) {
|
||||
if(form.get("register-password2", "") != form.get("register-password", "")) {
|
||||
addError(new Error("Passwort", "Passwörter sind nicht identisch."));
|
||||
} else {
|
||||
auto session = sm->getSession(request);
|
||||
@ -26,10 +26,10 @@
|
||||
}
|
||||
|
||||
userReturned = session->createUser(
|
||||
form.get("register-first-name"),
|
||||
form.get("register-last-name"),
|
||||
form.get("register-email"),
|
||||
form.get("register-password")
|
||||
form.get("register-first-name", ""),
|
||||
form.get("register-last-name", ""),
|
||||
form.get("register-email", ""),
|
||||
form.get("register-password", "")
|
||||
);
|
||||
getErrors(session);
|
||||
}
|
||||
|
||||
@ -23,12 +23,12 @@ enum PageState
|
||||
PageState state = PAGE_ASK;
|
||||
auto uri_start = ServerConfig::g_php_serverPath;//request.serverParams().getServerName();
|
||||
|
||||
// skip asking user if he like to save keys and passphrase on server
|
||||
// skip asking user if he like to save keys and passphrase on server for now!
|
||||
state = PAGE_SHOW_PUBKEY;
|
||||
if(!mSession->generateKeys(true, true)) {
|
||||
getErrors(mSession);
|
||||
}
|
||||
|
||||
/*
|
||||
if(!form.empty()) {
|
||||
// privkey
|
||||
auto savePrivkeyChoice = form.get("save-privkey");
|
||||
@ -67,7 +67,7 @@ enum PageState
|
||||
}
|
||||
//printf("SaveKeysPage: hasErrors: %d, session state: %d, target state: %d\n",
|
||||
//hasErrors, mSession->getSessionState(), SESSION_STATE_KEY_PAIR_GENERATED);
|
||||
}
|
||||
}*/
|
||||
getErrors(mSession);
|
||||
%><%@ include file="header.cpsp" %>
|
||||
<div class="grd_container">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user