This commit is contained in:
2022-04-10 19:04:20 -04:00
parent 577995cf03
commit 51812950e3
2 changed files with 47 additions and 8 deletions
+2
View File
@@ -8,6 +8,8 @@ long account_calls(CVars in, CVars &out);
long LoginWrenchBoardAccount( CVars in, CVars &out );
long LoginWrenchBoardFacebook( CVars in, CVars &out );
long LoginWrenchBoardGoogle( CVars in, CVars &out );
long LoginWrenchBoardExternal( CVars in, CVars &out );
long SessionCheck(long uid, const char *sessionid, int create );
long account_session_check(CVars in, CVars out);
long VerifySession(CVars in, CVars &out);
+45 -8
View File
@@ -134,8 +134,9 @@ long account_calls(CVars in, CVars &out) {
long ret = 0;
const char * loc = getenv("REMOTE_ADDR");
const PGresult *res;
//test();
logfmt(logINFO, "action = %ld", action);
logfmt(logINFO, "google = %ld", WRENCHBOARD_GOOGLE_LOGIN);
//test();
switch (action) {
case WRENCHBOARD_CREATE_MOBILEUSER:
@@ -176,7 +177,7 @@ long account_calls(CVars in, CVars &out) {
REQ_STRING(in, "email", 5, 49, "(.*)");
REQ_STRING(in, "firstname", 1, 49, "(.*)");
REQ_STRING(in, "lastname", 1, 40, "(.*)");
REQ_STRING(in, "your_message", 4, 400, "(.*)");
REQ_STRING(in, "your_message", 4, 400, "(.*)");
//OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)");
in["loc"] = loc;
@@ -213,6 +214,10 @@ long account_calls(CVars in, CVars &out) {
return LoginWrenchBoardFacebook(in, out);
break;
case WRENCHBOARD_GOOGLE_LOGIN:
return LoginWrenchBoardGoogle(in, out);
break;
case WRENCHBOARD_ACCOUNT_PENDING:
return CreateWrenchBoardAccountPending(in, out);
break;
@@ -1283,6 +1288,9 @@ long LoginWrenchBoardFacebook(CVars in, CVars &out) {
long res = PHP_API_BAD_PARAM;
logfmt(logINFO, "LoginWrenchBoardFacebook()");
REQ_STRING(in, "fb_id", 5, 49, "(.*)");
in["external_idp_provider_id"] = in["fb_id"].Long();
in["external_idp_provider"] = 1L; // Facebook
in["fb_id"].set_valid(false);
REQ_STRING(in, "email", 6, 49, "(.*)");
OPTIONAL(in, "firstname") REQ_STRING(in, "firstname", 1, 49, "(.*)");
else in["firstname"] = "";
@@ -1290,8 +1298,35 @@ long LoginWrenchBoardFacebook(CVars in, CVars &out) {
else in["lastname"] = "";
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
res = LoginWrenchBoardExternal(in, out);
logfmt(logINFO, "/LoginWrenchBoardFacebook()");
return res;
}
const char * loc = getenv("REMOTE_ADDR");
long LoginWrenchBoardGoogle(CVars in, CVars &out) {
long res = PHP_API_BAD_PARAM;
logfmt(logINFO, "LoginWrenchBoardGoogle()");
REQ_STRING(in, "google_id", 5, 49, "(.*)");
in["external_idp_provider_id"] = in["google_id"].Long();
in["external_idp_provider"] = 2L; // Google
in["google_id"].set_valid(false);
REQ_STRING(in, "email", 6, 49, "(.*)");
OPTIONAL(in, "firstname") REQ_STRING(in, "firstname", 1, 49, "(.*)");
else in["firstname"] = "";
OPTIONAL(in, "lastname") REQ_STRING(in, "lastname", 1, 49, "(.*)");
else in["lastname"] = "";
REQ_STRING(in, "sessionid", 4, 40, "(.*)");
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
res = LoginWrenchBoardExternal(in, out);
logfmt(logINFO, "/LoginWrenchBoardGoogle()");
return res;
}
long LoginWrenchBoardExternal(CVars in, CVars &out) {
long res = PHP_API_BAD_PARAM;
logfmt(logINFO, "LoginWrenchBoardExternal()");
const char * loc = getenv("REMOTE_ADDR");
in["loc"] = loc;
in["loc"].set_valid(true);
@@ -1299,7 +1334,7 @@ long LoginWrenchBoardFacebook(CVars in, CVars &out) {
if (ret > 0) {
out["status"] = "Email is already registered";
} else {
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE LOWER(email)=LOWER('%s') AND fb_id='%s'", in["email"].c_str(), in["fb_id"].c_str());
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE LOWER(email)=LOWER('%s') AND external_idp_provider_id='%s' AND external_idp_provider=%ld", in["email"].c_str(), in["external_idp_provider_id"].c_str(), in["external_idp_provider"].Long());
if (ret > 0) {
logfmt(logINFO, "FB account already exists");
} else {
@@ -1315,8 +1350,10 @@ long LoginWrenchBoardFacebook(CVars in, CVars &out) {
xx["email"].set_valid(true);
xx["loc"] = in["loc"];
xx["loc"].set_valid(true);
xx["fb_id"] = in["fb_id"];
xx["fb_id"].set_valid(true);
xx["external_idp_provider"] = in["external_idp_provider"];
xx["external_idp_provider"].set_valid(true);
xx["external_idp_provider_id"] = in["external_idp_provider_id"];
xx["external_idp_provider_id"].set_valid(true);
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", xx);
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE id='%ld'", out["member_id"].Long());
}
@@ -1336,7 +1373,7 @@ long LoginWrenchBoardFacebook(CVars in, CVars &out) {
}
}
}
logfmt(logINFO, "/LoginWrenchBoardFacebook()");
logfmt(logINFO, "/LoginWrenchBoardExternal()");
return res;
}