Backend support for Apple login

This commit is contained in:
2022-06-01 11:36:29 -04:00
parent 019e650090
commit 9ea25c81c4
5 changed files with 43 additions and 10 deletions
+23 -1
View File
@@ -218,6 +218,10 @@ long account_calls(CVars in, CVars &out) {
return LoginWrenchBoardGoogle(in, out);
break;
case WRENCHBOARD_APPLE_LOGIN:
return LoginWrenchBoardApple(in, out);
break;
case WRENCHBOARD_ACCOUNT_PENDING:
return CreateWrenchBoardAccountPending(in, out);
break;
@@ -1323,6 +1327,24 @@ long LoginWrenchBoardGoogle(CVars in, CVars &out) {
return res;
}
long LoginWrenchBoardApple(CVars in, CVars &out) {
long res = PHP_API_BAD_PARAM;
logfmt(logINFO, "LoginWrenchBoardApple()");
REQ_STRING(in, "apple_id", 5, 49, "(.*)");
in["external_idp_provider_id"] = in["apple_id"];
in["external_idp_provider"] = 3L; // Apple
in["apple_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, "/LoginWrenchBoardApple()");
return res;
}
long LoginWrenchBoardExternal(CVars in, CVars &out) {
long res = PHP_API_BAD_PARAM;
@@ -1337,7 +1359,7 @@ long LoginWrenchBoardExternal(CVars in, CVars &out) {
} else {
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");
logfmt(logINFO, "External account already exists");
} else {
logfmt(logINFO, "Create new FB account");
CVars xx;