From cc8a4fcd5b1e76c6a9b840488b61ec37f9dd2ae5 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 7 Oct 2021 16:08:14 +0200 Subject: [PATCH 01/12] 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; } } From 348ece411a020047f1d9bbdb61ce86c4aa927df1 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 7 Oct 2021 16:11:18 +0200 Subject: [PATCH 02/12] update doc --- docu/login_server.api.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index 20317c66f..60ed74f02 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -593,3 +593,29 @@ or: "msg": "session not found" } ``` + +## Check if User has an Elopage Account +Check if logged in user has already an elopage account + +### Request +`GET http://localhost/login_api/hasElopage?session_id=-127182` + +### Response +In case of success returns: + +```json +{ + "state":"success", + "hasElopage": true +} +``` + +or: + +```json +{ + "state":"not found", + "msg": "session not found" +} +``` + From b3b603b59e78bd4fd64149d442150d1ec959c4b8 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 7 Oct 2021 16:29:28 +0200 Subject: [PATCH 03/12] bring alive --- login_server/src/cpp/JSONInterface/JsonHasElopage.cpp | 2 +- login_server/src/cpp/model/table/ElopageBuy.cpp | 5 +++++ login_server/src/cpp/model/table/ElopageBuy.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp b/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp index e040b436f..ee66255be 100644 --- a/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp +++ b/login_server/src/cpp/JSONInterface/JsonHasElopage.cpp @@ -7,7 +7,7 @@ Poco::JSON::Object* JsonHasElopage::handle(Poco::Dynamic::Var params) if (result) { return result; } - auto elopage_buy = Poco::AutoPtr(); + auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); result = stateSuccess(); result->set("hasElopage", elopage_buy->isExistInDB("email", mSession->getNewUser()->getModel()->getEmail())); diff --git a/login_server/src/cpp/model/table/ElopageBuy.cpp b/login_server/src/cpp/model/table/ElopageBuy.cpp index 05e799a4a..c056ecdc9 100644 --- a/login_server/src/cpp/model/table/ElopageBuy.cpp +++ b/login_server/src/cpp/model/table/ElopageBuy.cpp @@ -9,6 +9,11 @@ namespace model { "product[affiliate_program_id]", "publisher[id]", "order_id", "product_id", "product[price]", "payer[email]", "publisher[email]", "payment_state", "success_date", "event" }; + ElopageBuy::ElopageBuy() + { + + } + ElopageBuy::ElopageBuy(const Poco::Net::NameValueCollection& elopage_webhook_requestData) : mPayed(false) { diff --git a/login_server/src/cpp/model/table/ElopageBuy.h b/login_server/src/cpp/model/table/ElopageBuy.h index dec4727a3..83b2b477b 100644 --- a/login_server/src/cpp/model/table/ElopageBuy.h +++ b/login_server/src/cpp/model/table/ElopageBuy.h @@ -31,6 +31,7 @@ namespace model { { public: ElopageBuy(const Poco::Net::NameValueCollection& elopage_webhook_requestData); + ElopageBuy(); // generic db operations const char* getTableName() const { return "elopage_buys"; } From e6c8fbed59f360155f560fdd77f0c00a27683821 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 7 Oct 2021 16:32:17 +0200 Subject: [PATCH 04/12] fix linting --- backend/src/graphql/resolver/UserResolver.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index a48b44f48..bbb609d40 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -244,14 +244,11 @@ export class UserResolver { } @Query(() => Boolean) - async hasElopage(@Ctx() context: any): Promise { - const result = await apiGet( - CONFIG.LOGIN_API_URL + 'hasElopage?session_id=' + context.sessionId, - ) + 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 +} From 93532004d501d22d8e0bc0026174014cd7eb19d1 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Fri, 8 Oct 2021 10:26:09 +0200 Subject: [PATCH 05/12] add option in login call to check also for elopage account --- backend/src/graphql/arg/UnsecureLoginArgs.ts | 3 +++ backend/src/graphql/model/User.ts | 4 ++++ backend/src/graphql/resolver/UserResolver.ts | 11 +++++++++-- docu/login_server.api.md | 4 ++++ .../src/cpp/JSONInterface/JsonUnsecureLogin.cpp | 12 ++++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/backend/src/graphql/arg/UnsecureLoginArgs.ts b/backend/src/graphql/arg/UnsecureLoginArgs.ts index 9e9cde0d9..925cde8a4 100644 --- a/backend/src/graphql/arg/UnsecureLoginArgs.ts +++ b/backend/src/graphql/arg/UnsecureLoginArgs.ts @@ -7,4 +7,7 @@ export default class UnsecureLoginArgs { @Field(() => String) password: string + + @Field(() => Boolean) + hasElopage?: boolean } diff --git a/backend/src/graphql/model/User.ts b/backend/src/graphql/model/User.ts index 21bf1b464..ebdf0aad2 100644 --- a/backend/src/graphql/model/User.ts +++ b/backend/src/graphql/model/User.ts @@ -19,6 +19,7 @@ export class User { this.pubkey = json.public_hex this.language = json.language this.publisherId = json.publisher_id + if (json.hasElopage) this.hasElopage = json.hasElopage } @Field(() => String) @@ -74,4 +75,7 @@ export class User { @Field(() => KlickTipp) klickTipp: KlickTipp + + @Field(() => Boolean) + hasElopage?: boolean } diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index bbb609d40..a6b7ae724 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -31,9 +31,16 @@ import { UserRepository } from '../../typeorm/repository/User' export class UserResolver { @Query(() => User) @UseMiddleware(klicktippNewsletterStateMiddleware) - async login(@Args() { email, password }: UnsecureLoginArgs, @Ctx() context: any): Promise { + async login( + @Args() { email, password, hasElopage }: UnsecureLoginArgs, + @Ctx() context: any, + ): Promise { email = email.trim().toLowerCase() - const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { email, password }) + const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { + email, + password, + hasElopage, + }) // if there is no user, throw an authentication error if (!result.success) { diff --git a/docu/login_server.api.md b/docu/login_server.api.md index 60ed74f02..90bdedf3d 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -40,10 +40,12 @@ with: "email": "max.musterman@gmail.de", "username": "Maxilein", "password": "123abcDE&" + "hasElopage": true } ``` `username` or `email` must be present! If booth present, `email` will be used. +`hasElopage`: optional, if set to true login will also check if user has an elopage account ### Response In case of success returns: @@ -67,6 +69,7 @@ In case of success returns: "username": "" }, "session_id": -127182, + "hasElopage": tr "clientIP":"123.123.123.123" } ``` @@ -86,6 +89,7 @@ In case of success returns: - `role`: role of user currently only "none" or "admin" - `username`: not used yet - `clientIP`: should be the same as where the js-client is running, else maybe a man-in-the-middle attacks is happening or +- `hasElopage`: only present if hasElopage was set to true in request, true if user has an elopage account nginx was wrong configured. - `session_id`: can be also negative diff --git a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp index 5d337df41..9cd6e2d1a 100644 --- a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp +++ b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp @@ -8,6 +8,8 @@ #include "../lib/DataTypeConverter.h" +#include "../model/table/ElopageBuy.h" + Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) { @@ -23,6 +25,7 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) std::string email; std::string username; std::string password; + bool hasElopage = false; // if is json object if (params.type() == typeid(Poco::JSON::Object::Ptr)) { @@ -38,6 +41,11 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) auto email_obj = paramJsonObject->get("email"); auto username_obj = paramJsonObject->get("username"); + auto hasElopage_obj = paramJsonObject->get("hasElopage"); + if (!hasElopage_obj.isEmpty()) { + hasElopage_obj.convert(hasElopage); + } + if (!email_obj.isEmpty()) { email_obj.convert(email); } @@ -141,6 +149,10 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) if(infos.size() > 0) { result->set("info", infos); } + if (hasElopage) { + auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); + result->set("hasElopage", elopage_buy->isExistInDB("email", mSession->getNewUser()->getModel()->getEmail())); + } return result; default: result->set("state", "error"); From e226a10b4b511a581ac32539af6a00047981396e Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Fri, 8 Oct 2021 10:27:25 +0200 Subject: [PATCH 06/12] fix typo in docu --- docu/login_server.api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index 90bdedf3d..b56852010 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -69,7 +69,7 @@ In case of success returns: "username": "" }, "session_id": -127182, - "hasElopage": tr + "hasElopage": true, "clientIP":"123.123.123.123" } ``` From 17907b23ade870a07a7e8918f9a348711acf4203 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Fri, 8 Oct 2021 10:28:46 +0200 Subject: [PATCH 07/12] fix bug --- login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp index 9cd6e2d1a..7950fb441 100644 --- a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp +++ b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp @@ -151,7 +151,7 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) } if (hasElopage) { auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); - result->set("hasElopage", elopage_buy->isExistInDB("email", mSession->getNewUser()->getModel()->getEmail())); + result->set("hasElopage", elopage_buy->isExistInDB("email", user_model->getEmail())); } return result; default: From 546d371139a05f5574914bb31c549e54460c2d6b Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Sun, 10 Oct 2021 15:25:01 +0200 Subject: [PATCH 08/12] check always for hasElopage - put check into async task to let it run at the same time as the password check --- backend/src/graphql/arg/UnsecureLoginArgs.ts | 3 --- backend/src/graphql/resolver/UserResolver.ts | 3 +-- .../cpp/JSONInterface/JsonUnsecureLogin.cpp | 18 +++++++----------- .../src/cpp/model/table/ElopageBuy.cpp | 8 ++++++++ login_server/src/cpp/model/table/ElopageBuy.h | 16 ++++++++++++++++ login_server/src/cpp/tasks/CPUTask.h | 2 ++ 6 files changed, 34 insertions(+), 16 deletions(-) diff --git a/backend/src/graphql/arg/UnsecureLoginArgs.ts b/backend/src/graphql/arg/UnsecureLoginArgs.ts index 925cde8a4..9e9cde0d9 100644 --- a/backend/src/graphql/arg/UnsecureLoginArgs.ts +++ b/backend/src/graphql/arg/UnsecureLoginArgs.ts @@ -7,7 +7,4 @@ export default class UnsecureLoginArgs { @Field(() => String) password: string - - @Field(() => Boolean) - hasElopage?: boolean } diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index a6b7ae724..a7e7e39b5 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -32,14 +32,13 @@ export class UserResolver { @Query(() => User) @UseMiddleware(klicktippNewsletterStateMiddleware) async login( - @Args() { email, password, hasElopage }: UnsecureLoginArgs, + @Args() { email, password }: UnsecureLoginArgs, @Ctx() context: any, ): Promise { email = email.trim().toLowerCase() const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { email, password, - hasElopage, }) // if there is no user, throw an authentication error diff --git a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp index 7950fb441..5c06e27b8 100644 --- a/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp +++ b/login_server/src/cpp/JSONInterface/JsonUnsecureLogin.cpp @@ -25,7 +25,6 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) std::string email; std::string username; std::string password; - bool hasElopage = false; // if is json object if (params.type() == typeid(Poco::JSON::Object::Ptr)) { @@ -41,11 +40,6 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) auto email_obj = paramJsonObject->get("email"); auto username_obj = paramJsonObject->get("username"); - auto hasElopage_obj = paramJsonObject->get("hasElopage"); - if (!hasElopage_obj.isEmpty()) { - hasElopage_obj.convert(hasElopage); - } - if (!email_obj.isEmpty()) { email_obj.convert(email); } @@ -113,6 +107,10 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) USER_COMPLETE, USER_DISABLED */ + // run query for checking if user has already an account async + Poco::AutoPtr hasElopageTask = new model::table::UserHasElopageTask(email); + hasElopageTask->scheduleTask(hasElopageTask); + auto user_state = session->loadUser(email, password); auto user_model = session->getNewUser()->getModel(); Poco::JSON::Array infos; @@ -148,11 +146,9 @@ Poco::JSON::Object* JsonUnsecureLogin::handle(Poco::Dynamic::Var params) session->setClientIp(mClientIP); if(infos.size() > 0) { result->set("info", infos); - } - if (hasElopage) { - auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); - result->set("hasElopage", elopage_buy->isExistInDB("email", user_model->getEmail())); - } + } + AWAIT(hasElopageTask) + result->set("hasElopage", hasElopageTask->hasElopage()); return result; default: result->set("state", "error"); diff --git a/login_server/src/cpp/model/table/ElopageBuy.cpp b/login_server/src/cpp/model/table/ElopageBuy.cpp index c056ecdc9..6ee23d2ee 100644 --- a/login_server/src/cpp/model/table/ElopageBuy.cpp +++ b/login_server/src/cpp/model/table/ElopageBuy.cpp @@ -108,6 +108,14 @@ namespace model { return select; } + + // --------------------------- Tasks -------------------------------------------- + int UserHasElopageTask::run() + { + auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); + bool hasElopage = elopage_buy->isExistInDB("email", mEmail); + return 0; + } } } diff --git a/login_server/src/cpp/model/table/ElopageBuy.h b/login_server/src/cpp/model/table/ElopageBuy.h index 83b2b477b..008a11a52 100644 --- a/login_server/src/cpp/model/table/ElopageBuy.h +++ b/login_server/src/cpp/model/table/ElopageBuy.h @@ -52,6 +52,22 @@ namespace model { Poco::DateTime mSuccessDate; std::string mEvent; }; + + + // check for user existing + class UserHasElopageTask : public UniLib::controller::CPUTask + { + public: + UserHasElopageTask(std::string email) : mEmail(email), mHasElopage(false) {} + + int run(); + const char* getResourceType() const { return "UserHasElopageTask"; }; + bool hasElopage() const { return mHasElopage; } + + protected: + std::string mEmail; + bool mHasElopage; + }; } } diff --git a/login_server/src/cpp/tasks/CPUTask.h b/login_server/src/cpp/tasks/CPUTask.h index e1c1d5cc0..f96e5d9ec 100644 --- a/login_server/src/cpp/tasks/CPUTask.h +++ b/login_server/src/cpp/tasks/CPUTask.h @@ -68,5 +68,7 @@ namespace UniLib { } } +#define AWAIT(task) while (!hasElopageTask->isTaskFinished()) { Poco::Thread::sleep(10); } + #endif //__DR_UNIVERSUM_LIB_CONTROLLER_CPU_TASK_H__ \ No newline at end of file From 7699700b933c58bc55c5cc2004dd6163ad551bb3 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Sun, 10 Oct 2021 15:29:44 +0200 Subject: [PATCH 09/12] fix lint --- backend/src/graphql/resolver/UserResolver.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index a7e7e39b5..24e2c2c64 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -31,10 +31,7 @@ import { UserRepository } from '../../typeorm/repository/User' export class UserResolver { @Query(() => User) @UseMiddleware(klicktippNewsletterStateMiddleware) - async login( - @Args() { email, password }: UnsecureLoginArgs, - @Ctx() context: any, - ): Promise { + async login(@Args() { email, password }: UnsecureLoginArgs, @Ctx() context: any): Promise { email = email.trim().toLowerCase() const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { email, From 909c7e3a9a79c6eca81e8e7d69cded08b31eba30 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Sun, 10 Oct 2021 15:29:44 +0200 Subject: [PATCH 10/12] fix lint --- backend/src/graphql/resolver/UserResolver.ts | 10 ++-------- docu/login_server.api.md | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index a7e7e39b5..bbb609d40 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -31,15 +31,9 @@ import { UserRepository } from '../../typeorm/repository/User' export class UserResolver { @Query(() => User) @UseMiddleware(klicktippNewsletterStateMiddleware) - async login( - @Args() { email, password }: UnsecureLoginArgs, - @Ctx() context: any, - ): Promise { + async login(@Args() { email, password }: UnsecureLoginArgs, @Ctx() context: any): Promise { email = email.trim().toLowerCase() - const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { - email, - password, - }) + const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { email, password }) // if there is no user, throw an authentication error if (!result.success) { diff --git a/docu/login_server.api.md b/docu/login_server.api.md index b56852010..c220dd427 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -39,7 +39,7 @@ with: { "email": "max.musterman@gmail.de", "username": "Maxilein", - "password": "123abcDE&" + "password": "123abcDE&", "hasElopage": true } ``` From 3247dad58698f440369b8d415c6164cd2f982a4a Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 12 Oct 2021 14:22:19 +0200 Subject: [PATCH 11/12] update doc --- docu/login_server.api.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index c220dd427..aeac22549 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -39,13 +39,11 @@ with: { "email": "max.musterman@gmail.de", "username": "Maxilein", - "password": "123abcDE&", - "hasElopage": true + "password": "123abcDE&" } ``` `username` or `email` must be present! If booth present, `email` will be used. -`hasElopage`: optional, if set to true login will also check if user has an elopage account ### Response In case of success returns: From 3b487ab2cbd358f9d9c4479bdd0a70dff35c4a3a Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 12 Oct 2021 16:17:19 +0200 Subject: [PATCH 12/12] fix field name --- login_server/src/cpp/model/table/ElopageBuy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login_server/src/cpp/model/table/ElopageBuy.cpp b/login_server/src/cpp/model/table/ElopageBuy.cpp index 6ee23d2ee..ff79f6a68 100644 --- a/login_server/src/cpp/model/table/ElopageBuy.cpp +++ b/login_server/src/cpp/model/table/ElopageBuy.cpp @@ -113,7 +113,7 @@ namespace model { int UserHasElopageTask::run() { auto elopage_buy = Poco::AutoPtr(new model::table::ElopageBuy); - bool hasElopage = elopage_buy->isExistInDB("email", mEmail); + bool hasElopage = elopage_buy->isExistInDB("payer_email", mEmail); return 0; } }