From cc8a4fcd5b1e76c6a9b840488b61ec37f9dd2ae5 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 7 Oct 2021 16:08:14 +0200 Subject: [PATCH] add api call to check is user has an elopage account to login-server and to apollo-server --- backend/src/graphql/resolver/UserResolver.ts | 14 +++++++++++++- .../src/cpp/JSONInterface/JsonHasElopage.cpp | 16 ++++++++++++++++ .../src/cpp/JSONInterface/JsonHasElopage.h | 15 +++++++++++++++ .../JSONInterface/JsonRequestHandlerFactory.cpp | 4 ++++ login_server/src/cpp/model/table/ModelBase.h | 2 +- 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 login_server/src/cpp/JSONInterface/JsonHasElopage.cpp create mode 100644 login_server/src/cpp/JSONInterface/JsonHasElopage.h diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 820e493c6..a48b44f48 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -242,4 +242,16 @@ export class UserResolver { } return new CheckEmailResponse(result.data) } -} + + @Query(() => Boolean) + async hasElopage(@Ctx() context: any): Promise { + const result = await apiGet( + CONFIG.LOGIN_API_URL + 'hasElopage?session_id=' + context.sessionId, + ) + if (!result.success) { + throw new Error(result.data) + } + return result.data.hasElopage + } + +} \ No newline at end of file diff --git a/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp b/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp new file mode 100644 index 000000000..e040b436f --- /dev/null +++ b/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp @@ -0,0 +1,16 @@ +#include "JsonHasElopage.h" +#include "../model/table/ElopageBuy.h" + +Poco::JSON::Object* JsonHasElopage::handle(Poco::Dynamic::Var params) +{ + auto result = checkAndLoadSession(params); + if (result) { + return result; + } + auto elopage_buy = Poco::AutoPtr(); + + result = stateSuccess(); + result->set("hasElopage", elopage_buy->isExistInDB("email", mSession->getNewUser()->getModel()->getEmail())); + + return result; +} \ No newline at end of file diff --git a/login_server/src/cpp/JSONInterface/JsonHasElopage.h b/login_server/src/cpp/JSONInterface/JsonHasElopage.h new file mode 100644 index 000000000..4fc291d5b --- /dev/null +++ b/login_server/src/cpp/JSONInterface/JsonHasElopage.h @@ -0,0 +1,15 @@ +#ifndef __JSON_INTERFACE_JSON_HAS_ELOPAGE_ +#define __JSON_INTERFACE_JSON_HAS_ELOPAGE_ + +#include "JsonRequestHandler.h" + +class JsonHasElopage : public JsonRequestHandler +{ +public: + Poco::JSON::Object* handle(Poco::Dynamic::Var params); + +protected: + +}; + +#endif // __JSON_INTERFACE_JSON_HAS_ELOPAGE_ \ No newline at end of file diff --git a/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp b/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp index 744ac710e..e1998ddd0 100644 --- a/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp +++ b/login_server/src/cpp/JSONInterface/JsonRequestHandlerFactory.cpp @@ -16,6 +16,7 @@ #include "JsonUnknown.h" #include "JsonGetRunningUserTasks.h" #include "JsonGetUsers.h" +#include "JsonHasElopage.h" #include "JsonLoginViaEmailVerificationCode.h" #include "JsonLogout.h" #include "JsonNetworkInfos.h" @@ -140,6 +141,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c else if (url_first_part == "/logout") { return new JsonLogout(client_host); } + else if (url_first_part == "/hasElopage") { + return new JsonHasElopage; + } return new JsonUnknown; } diff --git a/login_server/src/cpp/model/table/ModelBase.h b/login_server/src/cpp/model/table/ModelBase.h index 95856087f..98b640178 100644 --- a/login_server/src/cpp/model/table/ModelBase.h +++ b/login_server/src/cpp/model/table/ModelBase.h @@ -171,7 +171,7 @@ namespace model { << " WHERE " << fieldName << " = ?" , Poco::Data::Keywords::into(id), Poco::Data::Keywords::useRef(fieldValue); try { - if (select.execute() == 1) { + if (select.execute() >= 1) { return true; } }