mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Admin Email Verification resend via json hinzugefügt
This commit is contained in:
parent
750f73aa6b
commit
458c99958f
150
src/cpp/JSONInterface/JsonAdminEmailVerificationResend.cpp
Normal file
150
src/cpp/JSONInterface/JsonAdminEmailVerificationResend.cpp
Normal file
@ -0,0 +1,150 @@
|
||||
#include "JsonAdminEmailVerificationResend.h"
|
||||
|
||||
#include "Poco/URI.h"
|
||||
|
||||
#include "../SingletonManager/SessionManager.h"
|
||||
#include "../SingletonManager/EmailManager.h"
|
||||
|
||||
#include "../controller/User.h"
|
||||
|
||||
Poco::JSON::Object* JsonAdminEmailVerificationResend::handle(Poco::Dynamic::Var params)
|
||||
{
|
||||
std::string email;
|
||||
int session_id = 0;
|
||||
Poco::JSON::Object* result = new Poco::JSON::Object;
|
||||
bool parameterReaded = false;
|
||||
// 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("session_id").convert(session_id);
|
||||
parameterReaded = true;
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
printf("[JsonGetRunningUserTasks::handle] try to use params as jsonObject: %s\n", ex.displayText().data());
|
||||
result->set("state", "error");
|
||||
result->set("msg", "json exception");
|
||||
result->set("details", ex.displayText());
|
||||
}
|
||||
}
|
||||
else if (params.isStruct()) {
|
||||
auto _email = params["email"];
|
||||
auto _session_id = params["session_id"];
|
||||
parameterReaded = true;
|
||||
//std::string miau = params["miau"];
|
||||
}
|
||||
else if (params.isVector()) {
|
||||
const Poco::URI::QueryParameters queryParams = params.extract<Poco::URI::QueryParameters>();
|
||||
for (auto it = queryParams.begin(); it != queryParams.end(); it++) {
|
||||
if (it->first == "email") {
|
||||
email = it->second;
|
||||
break;
|
||||
}
|
||||
else if (it->first == "session_id") {
|
||||
try {
|
||||
session_id = stoi(it->second);
|
||||
}
|
||||
catch (const std::invalid_argument& ia) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "error parsing query params, invalid argument: ");
|
||||
result->set("details", ia.what());
|
||||
return result;
|
||||
}
|
||||
catch (const std::out_of_range& oor) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "error parsing query params, Out of Range error: ");
|
||||
result->set("details", oor.what());
|
||||
return result;
|
||||
}
|
||||
catch (const std::logic_error & ler) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "error parsing query params, Logical error: ");
|
||||
result->set("details", ler.what());
|
||||
return result;
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
//printf("[JsonGetLogin::handle] exception: %s\n", ex.displayText().data());
|
||||
result->set("state", "error");
|
||||
result->set("msg", "error parsing query params, Poco Error");
|
||||
result->set("details", ex.displayText());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
parameterReaded = true;
|
||||
}
|
||||
else if (params.isArray()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "array not implemented yet");
|
||||
}
|
||||
else if (params.isList()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "list not implemented yet");
|
||||
}
|
||||
else if (params.isString()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "string not implemented yet");
|
||||
}
|
||||
else if (params.isDeque()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "deque not implemented yet");
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "format not implemented");
|
||||
result->set("details", std::string(params.type().name()));
|
||||
}
|
||||
|
||||
if (parameterReaded && email != "" && session_id != 0) {
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto em = EmailManager::getInstance();
|
||||
auto session = sm->getSession(session_id);
|
||||
if (session) {
|
||||
auto user = session->getNewUser();
|
||||
if (!user.isNull()) {
|
||||
auto userModel = user->getModel();
|
||||
if (userModel->getRole() == model::table::ROLE_ADMIN) {
|
||||
auto receiverUser = controller::User::create();
|
||||
if (1 == receiverUser->load(email)) {
|
||||
em->addEmail(new model::Email(receiverUser, model::EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND));
|
||||
result->set("state", "success");
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "receiver user not found");
|
||||
}
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "user isn't admin");
|
||||
}
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "session hasn't valid user");
|
||||
}
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "session not found");
|
||||
}
|
||||
|
||||
//result->set("runningTasks", tasksJson);
|
||||
}
|
||||
else if (parameterReaded) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "empty email or session_id");
|
||||
}
|
||||
else {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "error reading parameter");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
16
src/cpp/JSONInterface/JsonAdminEmailVerificationResend.h
Normal file
16
src/cpp/JSONInterface/JsonAdminEmailVerificationResend.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef __JSON_VERIFICATION_EMAIL_RESEND_H
|
||||
#define __JSON_VERIFICATION_EMAIL_RESEND_H
|
||||
|
||||
#include "JsonRequestHandler.h"
|
||||
|
||||
class JsonAdminEmailVerificationResend : public JsonRequestHandler
|
||||
{
|
||||
public:
|
||||
Poco::JSON::Object* handle(Poco::Dynamic::Var params);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // __JSON_VERIFICATION_EMAIL_RESEND_H
|
||||
@ -9,6 +9,7 @@
|
||||
#include "JsonTransaction.h"
|
||||
#include "JsonGetRunningUserTasks.h"
|
||||
#include "JsonGetUsers.h"
|
||||
#include "JsonAdminEmailVerificationResend.h"
|
||||
|
||||
JsonRequestHandlerFactory::JsonRequestHandlerFactory()
|
||||
: mRemoveGETParameters("^/([a-zA-Z0-9_-]*)"), mLogging(Poco::Logger::get("requestLog"))
|
||||
@ -39,6 +40,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
||||
}
|
||||
else if (url_first_part == "/getUsers") {
|
||||
return new JsonGetUsers;
|
||||
}
|
||||
else if (url_first_part == "/adminEmailVerificationResend") {
|
||||
return new JsonAdminEmailVerificationResend;
|
||||
}
|
||||
|
||||
return new JsonUnknown;
|
||||
|
||||
@ -29,6 +29,7 @@ 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();}
|
||||
|
||||
protected:
|
||||
|
||||
@ -83,7 +83,6 @@ MemoryManager::MemoryManager()
|
||||
mMemoryPageStacks[2] = new MemoryPageStack(65); // pubkey hex
|
||||
mMemoryPageStacks[3] = new MemoryPageStack(96); // privkey encrypted
|
||||
mMemoryPageStacks[4] = new MemoryPageStack(161); // privkey hex
|
||||
|
||||
}
|
||||
|
||||
MemoryManager::~MemoryManager()
|
||||
|
||||
@ -29,6 +29,21 @@ Mit freundlichen Grüßen\n\
|
||||
Dario, Gradido Server Admin\n\
|
||||
"};
|
||||
|
||||
const static char EmailText_adminEmailVerificationResend[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
Der Admin hat ein erneutes zusenden deiner Bestätigungsemail angefordert. \n\
|
||||
Du hast vor einer Weile ein Gradido Konto mit dieser E-Mail angelegt, aber es noch nicht bestätigt. \n\
|
||||
\n\
|
||||
Bitte klicke zur Bestätigung auf den Link: [link]\n\
|
||||
oder kopiere den obigen Link in Dein Browserfenster.\n\
|
||||
\n\
|
||||
Mit freundlichen Grüßen\n\
|
||||
Dario, Gradido Server Admin\n\
|
||||
" };
|
||||
|
||||
|
||||
|
||||
const static char EmailText_emailResetPassword[] = { u8"\
|
||||
Hallo [first_name] [last_name],\n\
|
||||
\n\
|
||||
@ -118,6 +133,7 @@ Gradido Login-Server\n\
|
||||
|
||||
case EMAIL_USER_VERIFICATION_CODE:
|
||||
case EMAIL_ADMIN_USER_VERIFICATION_CODE:
|
||||
case EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND:
|
||||
if (userTableModel.isNull() || mUser->getModel()->getEmail() == "") {
|
||||
addError(new Error(functionName, "no receiver email set for user email verification email"));
|
||||
return false;
|
||||
@ -133,6 +149,9 @@ Gradido Login-Server\n\
|
||||
if (mType == EMAIL_ADMIN_USER_VERIFICATION_CODE) {
|
||||
messageTemplate = EmailText_adminEmailVerification;
|
||||
}
|
||||
else if (mType == EMAIL_ADMIN_USER_VERIFICATION_CODE_RESEND) {
|
||||
messageTemplate = EmailText_adminEmailVerificationResend;
|
||||
}
|
||||
|
||||
mailMessage->addContent(
|
||||
new Poco::Net::StringPartSource(replaceUserNamesAndLink(
|
||||
|
||||
@ -28,6 +28,7 @@ namespace model {
|
||||
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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user