#include "AdminUserPasswordReset.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" // includes #include "../controller/User.h" #include "../controller/EmailVerificationCode.h" #include "../controller/UserBackups.h" enum PageState { PAGE_ASK_EMAIL, PAGE_SHOW_EMAIL }; #line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" #include "../ServerConfig.h" AdminUserPasswordReset::AdminUserPasswordReset(Session* arg): SessionHTTPRequestHandler(arg) { } void AdminUserPasswordReset::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\\adminUserPasswordReset.cpsp" // code PageState state = PAGE_ASK_EMAIL; Poco::AutoPtr user = controller::User::create(); Poco::AutoPtr code; Poco::AutoPtr userBackup; bool validUser = false; std::string pageName = "Admin User Passwort Reset"; if(!form.empty()) { auto email = form.get("user-email", ""); if("" != email) { if(1 != user->load(email)) { addError(new Error("Benutzer Email", "Konnte keinen passenden Benutzer finden!")); } else { validUser = true; } } } if(validUser) { auto userId = user->getModel()->getID(); code = controller::EmailVerificationCode::load(userId, model::table::EMAIL_OPT_IN_RESET_PASSWORD); if(code.isNull()) { code = controller::EmailVerificationCode::create(userId, model::table::EMAIL_OPT_IN_RESET_PASSWORD); if(!code->getModel()->insertIntoDB(false)) { addError(new Error("E-Mail Verification Code", "Fehler beim speichern!")); getErrors(code->getModel()); } } auto backups = controller::UserBackups::load(userId); auto userPubkey = user->getModel()->getPublicKey(); for(auto it = backups.begin(); it != backups.end(); it++) { auto keys = (*it)->getKeyPair(); if(keys->isPubkeysTheSame(userPubkey)) { userBackup = *it; break; } } if(userBackup.isNull()) { addError(new Error("User Backup", "Kein passendes User Backup gefunden!")); } if(!userBackup.isNull() && !code.isNull()) { state = PAGE_SHOW_EMAIL; } } std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include header_old.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; responseStream << "\t

Alpha "; #line 53 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_old.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; // end include header_old.cpsp responseStream << "\n"; responseStream << "
\n"; responseStream << "\t"; #line 70 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "\t

Admin User Passwort Reset

\n"; responseStream << "\t

Ein Benutzer hat ein Passwort Reset angefordert, hat aber seine Passphrase nicht.

\n"; responseStream << "\t"; #line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" if(PAGE_ASK_EMAIL == state) { responseStream << "\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t

\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t

\n"; responseStream << "\t\t\t

\n"; responseStream << "\t\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t"; #line 83 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" } responseStream << "\n"; responseStream << "\t"; #line 84 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" if(validUser) { auto userModel = user->getModel(); responseStream << "\n"; responseStream << "\t\t

Benutzer gefunden

\n"; responseStream << "\t\t
    \n"; responseStream << "\t\t\t
  • "; #line 88 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( userModel->getFirstName() ); responseStream << " "; #line 88 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( userModel->getLastName() ); responseStream << "
  • \n"; responseStream << "\t\t\t
  • "; #line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( userModel->getEmail() ); responseStream << "
  • \n"; responseStream << "\t\t\t
  • Public Key: "; #line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( userModel->getPublicKeyHex() ); responseStream << "
  • \n"; responseStream << "\t\t\t
  • E-Mail überprüft: "; #line 91 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( std::to_string(userModel->isEmailChecked()) ); responseStream << "
  • \n"; responseStream << "\t\t\t
  • Private Key verschlüsselt: "; #line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( std::to_string(userModel->hasPrivateKeyEncrypted()) ); responseStream << "
  • \n"; responseStream << "\t\t\t
  • Passwort gesetzt: "; #line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( std::to_string(userModel->getPasswordHashed() != 0) ); responseStream << "
  • \n"; responseStream << "\t\t
\n"; responseStream << "\t"; #line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" } responseStream << "\n"; responseStream << "\t"; #line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" if(PAGE_SHOW_EMAIL == state) { responseStream << "\n"; responseStream << "\t\t
E-Mail\n"; responseStream << "\t\t\t

An: "; #line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" responseStream << ( user->getEmailWithNames() ); responseStream << "\n"; responseStream << "\t\t\t

\n"; responseStream << "
Liebe(r) ";
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp"
	responseStream << ( user->getModel()->getFirstName() );
	responseStream << ",\n";
	responseStream << "\n";
	responseStream << "hier findest du deine Passphrase mit dessen Hilfe du dir ein neues Passwort einstellen kannst.\n";
	responseStream << "Bitte schreibe sie dir auf und packe sie gut weg.\n";
	responseStream << "\n";
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp"
	responseStream << ( controller::UserBackups::formatPassphrase(userBackup->getPassphrase(ServerConfig::Mnemonic_Types::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER)) );
	responseStream << "\n";
	responseStream << " \n";
	responseStream << "\n";
	responseStream << "Unter diesem Link kannst du dir mit Hilfe der Passphrase ein neues Passwort setzen:\n";
#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp"
	responseStream << ( code->getLink() );
	responseStream << "\n";
	responseStream << " \n";
	responseStream << "\n";
	responseStream << "Liebe Grüße\n";
	responseStream << "Dario, Softwareentwickler bei Gradido\n";
	responseStream << "
\n"; responseStream << "\t\t
\n"; responseStream << "\t"; #line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminUserPasswordReset.cpsp" } responseStream << "\n"; responseStream << "
\n"; // begin include footer.cpsp responseStream << "\t
\n"; responseStream << "\t\t\t"; #line 2 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "\t
\n"; responseStream << "\n"; responseStream << ""; // end include footer.cpsp responseStream << "\n"; responseStream << "\t\n"; if (_compressResponse) _gzipStream.close(); }