mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
adding jsonCreateUser and email for register accounts throw old elopage transaction
This commit is contained in:
parent
d9769d95a1
commit
d1003e2c61
@ -1,19 +1,65 @@
|
||||
#include "JsonCreateUser.h"
|
||||
#include "Poco/URI.h"
|
||||
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../SingletonManager/SingletonTaskObserver.h"
|
||||
#include "../SingletonManager/ErrorManager.h"
|
||||
#include "../model/email/Email.h"
|
||||
#include "../controller/User.h"
|
||||
#include "../controller/EmailVerificationCode.h"
|
||||
|
||||
#include "../lib/DataTypeConverter.h"
|
||||
#include "../SingletonManager/EmailManager.h"
|
||||
|
||||
Poco::JSON::Object* JsonCreateUser::handle(Poco::Dynamic::Var params)
|
||||
{
|
||||
std::string email;
|
||||
std::string first_name;
|
||||
std::string last_name;
|
||||
model::EmailType emailType;
|
||||
auto em = EmailManager::getInstance();
|
||||
|
||||
int session_id = 0;
|
||||
Poco::JSON::Object* result = new Poco::JSON::Object;
|
||||
result->set("state", "debugging");
|
||||
result->set("msg", "empty implementation");
|
||||
return result;
|
||||
// if is json object
|
||||
if (params.type() == typeid(Poco::JSON::Object::Ptr)) {
|
||||
Poco::JSON::Object::Ptr paramJsonObject = params.extract<Poco::JSON::Object::Ptr>();
|
||||
/// Throws a RangeException if the value does not fit
|
||||
/// into the result variable.
|
||||
/// Throws a NotImplementedException if conversion is
|
||||
/// not available for the given type.
|
||||
/// Throws InvalidAccessException if Var is empty.
|
||||
try {
|
||||
paramJsonObject->get("email").convert(email);
|
||||
paramJsonObject->get("first_name").convert(first_name);
|
||||
paramJsonObject->get("last_name").convert(last_name);
|
||||
paramJsonObject->get("emailType").convert(emailType);
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
return stateError("json exception", ex.displayText());
|
||||
}
|
||||
}
|
||||
else {
|
||||
return stateError("parameter format unknown");
|
||||
}
|
||||
|
||||
auto user = controller::User::create();
|
||||
if (user->load(email) > 0) {
|
||||
Poco::JSON::Object* result = new Poco::JSON::Object;
|
||||
result->set("state", "exist");
|
||||
result->set("msg", "user already exist");
|
||||
return result;
|
||||
}
|
||||
|
||||
// create user
|
||||
user = controller::User::create(email, first_name, last_name);
|
||||
auto userModel = user->getModel();
|
||||
if (!userModel->insertIntoDB(true)) {
|
||||
userModel->sendErrorsAsEmail();
|
||||
return stateError("insert user failed");
|
||||
}
|
||||
auto emailOptIn = controller::EmailVerificationCode::create(userModel->getID(), model::table::EMAIL_OPT_IN_REGISTER);
|
||||
auto emailOptInModel = emailOptIn->getModel();
|
||||
if (!emailOptInModel->insertIntoDB(false)) {
|
||||
emailOptInModel->sendErrorsAsEmail();
|
||||
return stateError("insert emailOptIn failed");
|
||||
}
|
||||
|
||||
em->addEmail(new model::Email(emailOptIn, user, emailType));
|
||||
|
||||
return stateSuccess();
|
||||
|
||||
}
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
|
||||
#include "JsonCreateUser.h"
|
||||
#include "JsonGetLogin.h"
|
||||
#include "JsonUnknown.h"
|
||||
#include "JsonTransaction.h"
|
||||
@ -42,6 +43,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
||||
else if (url_first_part == "/getUsers") {
|
||||
return new JsonGetUsers;
|
||||
}
|
||||
else if (url_first_part == "/createUser") {
|
||||
return new JsonCreateUser;
|
||||
}
|
||||
else if (url_first_part == "/adminEmailVerificationResend") {
|
||||
return new JsonAdminEmailVerificationResend;
|
||||
}
|
||||
|
||||
@ -113,6 +113,9 @@ namespace ServerConfig {
|
||||
bool initEMailAccount(const Poco::Util::LayeredConfiguration& cfg)
|
||||
{
|
||||
g_disableEmail = cfg.getBool("email.disable", false);
|
||||
if (g_disableEmail) {
|
||||
printf("Email is disabled!\n");
|
||||
}
|
||||
g_EmailAccount.sender = cfg.getString("email.sender");
|
||||
g_EmailAccount.username = cfg.getString("email.username");
|
||||
g_EmailAccount.password = cfg.getString("email.password");
|
||||
|
||||
@ -30,7 +30,10 @@ public:
|
||||
inline const std::string& getAdminReceiver() { return mEmailAccount.admin_receiver; }
|
||||
|
||||
//! \brief call delete on email after sending it
|
||||
inline void addEmail(model::Email* email) { mPendingEmails.push(email); condSignal();}
|
||||
inline void addEmail(model::Email* email) {
|
||||
if (mDisableEmail) { delete email; return; }
|
||||
mPendingEmails.push(email); condSignal();
|
||||
}
|
||||
|
||||
protected:
|
||||
EmailManager();
|
||||
|
||||
@ -18,6 +18,21 @@ Mit freundlichen Grüßen\n\
|
||||
Dario, Gradido Server Admin\n\
|
||||
"};
|
||||
|
||||
const static char EmailText_emailVerificationOldElopageTransaction[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
Da wir Dir für Deine Beiträge GradidoTransform gutschreiben und\n\
|
||||
du bisher noch kein Gradido-Konto hattest, haben wir eines für Dich eröffnet.\n\
|
||||
\n\
|
||||
Um es zu aktivieren klicke bitte auf den Link: [link]\n\
|
||||
oder kopiere den obigen Link in Dein Browserfenster.\n\
|
||||
\n\
|
||||
Wenn Du momentan kein Gradido-Konto haben möchtest, kannst Du auch diese E-Mail ignorieren.\n\
|
||||
\n\
|
||||
Mit freundlichen Grüßen\n\
|
||||
Dario, Gradido Server Admin\n\
|
||||
" };
|
||||
|
||||
const static char EmailText_adminEmailVerification[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
@ -132,6 +147,7 @@ Gradido Login-Server\n\
|
||||
break;
|
||||
|
||||
case EMAIL_USER_VERIFICATION_CODE:
|
||||
case EMAIL_USER_REGISTER_OLD_ELOPAGE:
|
||||
case EMAIL_ADMIN_USER_VERIFICATION_CODE:
|
||||
case EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND:
|
||||
if (userTableModel.isNull() || mUser->getModel()->getEmail() == "") {
|
||||
@ -152,6 +168,9 @@ Gradido Login-Server\n\
|
||||
else if (mType == EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND) {
|
||||
messageTemplate = EmailText_adminEmailVerificationResend;
|
||||
}
|
||||
else if (mType == EMAIL_USER_REGISTER_OLD_ELOPAGE) {
|
||||
messageTemplate = EmailText_emailVerificationOldElopageTransaction;
|
||||
}
|
||||
|
||||
mailMessage->addContent(
|
||||
new Poco::Net::StringPartSource(replaceUserNamesAndLink(
|
||||
|
||||
@ -24,15 +24,16 @@ namespace model {
|
||||
|
||||
enum EmailType
|
||||
{
|
||||
EMAIL_DEFAULT,
|
||||
EMAIL_ERROR,
|
||||
EMAIL_USER_VERIFICATION_CODE,
|
||||
EMAIL_ADMIN_USER_VERIFICATION_CODE,
|
||||
EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND,
|
||||
EMAIL_USER_RESET_PASSWORD,
|
||||
EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE,
|
||||
EMAIL_NOTIFICATION_TRANSACTION_CREATION,
|
||||
EMAIL_NOTIFICATION_TRANSACTION_TRANSFER
|
||||
EMAIL_DEFAULT = 1,
|
||||
EMAIL_ERROR = 2,
|
||||
EMAIL_USER_VERIFICATION_CODE = 3,
|
||||
EMAIL_ADMIN_USER_VERIFICATION_CODE = 4,
|
||||
EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND = 5,
|
||||
EMAIL_USER_RESET_PASSWORD = 6,
|
||||
EMAIL_ADMIN_RESET_PASSWORD_REQUEST_WITHOUT_MEMORIZED_PASSPHRASE = 7,
|
||||
EMAIL_NOTIFICATION_TRANSACTION_CREATION = 8,
|
||||
EMAIL_NOTIFICATION_TRANSACTION_TRANSFER = 9,
|
||||
EMAIL_USER_REGISTER_OLD_ELOPAGE = 10
|
||||
};
|
||||
|
||||
class Email: public ErrorList
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user