Backend support for Apple login
This commit is contained in:
@@ -9,6 +9,7 @@ long account_calls(CVars in, CVars &out);
|
|||||||
long LoginWrenchBoardAccount( CVars in, CVars &out );
|
long LoginWrenchBoardAccount( CVars in, CVars &out );
|
||||||
long LoginWrenchBoardFacebook( CVars in, CVars &out );
|
long LoginWrenchBoardFacebook( CVars in, CVars &out );
|
||||||
long LoginWrenchBoardGoogle( CVars in, CVars &out );
|
long LoginWrenchBoardGoogle( CVars in, CVars &out );
|
||||||
|
long LoginWrenchBoardApple( CVars in, CVars &out );
|
||||||
long LoginWrenchBoardExternal( CVars in, CVars &out );
|
long LoginWrenchBoardExternal( CVars in, CVars &out );
|
||||||
long SessionCheck(long uid, const char *sessionid, int create );
|
long SessionCheck(long uid, const char *sessionid, int create );
|
||||||
long account_session_check(CVars in, CVars out);
|
long account_session_check(CVars in, CVars out);
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ enum { PARTNER_STRIPE };
|
|||||||
#define WRENCHBOARD_ACCOUNT_LOGIN 11025
|
#define WRENCHBOARD_ACCOUNT_LOGIN 11025
|
||||||
#define WRENCHBOARD_FACEBOOK_LOGIN 11026
|
#define WRENCHBOARD_FACEBOOK_LOGIN 11026
|
||||||
#define WRENCHBOARD_GOOGLE_LOGIN 11027
|
#define WRENCHBOARD_GOOGLE_LOGIN 11027
|
||||||
|
#define WRENCHBOARD_APPLE_LOGIN 11031
|
||||||
#define WRENCHBOARD_START_JOBLIST 11028
|
#define WRENCHBOARD_START_JOBLIST 11028
|
||||||
#define WRENCHBOARD_ACCOUNT_DASHDATA 11029
|
#define WRENCHBOARD_ACCOUNT_DASHDATA 11029
|
||||||
|
|
||||||
|
|||||||
@@ -218,6 +218,10 @@ long account_calls(CVars in, CVars &out) {
|
|||||||
return LoginWrenchBoardGoogle(in, out);
|
return LoginWrenchBoardGoogle(in, out);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WRENCHBOARD_APPLE_LOGIN:
|
||||||
|
return LoginWrenchBoardApple(in, out);
|
||||||
|
break;
|
||||||
|
|
||||||
case WRENCHBOARD_ACCOUNT_PENDING:
|
case WRENCHBOARD_ACCOUNT_PENDING:
|
||||||
return CreateWrenchBoardAccountPending(in, out);
|
return CreateWrenchBoardAccountPending(in, out);
|
||||||
break;
|
break;
|
||||||
@@ -1323,6 +1327,24 @@ long LoginWrenchBoardGoogle(CVars in, CVars &out) {
|
|||||||
return res;
|
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 LoginWrenchBoardExternal(CVars in, CVars &out) {
|
||||||
long res = PHP_API_BAD_PARAM;
|
long res = PHP_API_BAD_PARAM;
|
||||||
@@ -1337,7 +1359,7 @@ long LoginWrenchBoardExternal(CVars in, CVars &out) {
|
|||||||
} else {
|
} 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());
|
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) {
|
if (ret > 0) {
|
||||||
logfmt(logINFO, "FB account already exists");
|
logfmt(logINFO, "External account already exists");
|
||||||
} else {
|
} else {
|
||||||
logfmt(logINFO, "Create new FB account");
|
logfmt(logINFO, "Create new FB account");
|
||||||
CVars xx;
|
CVars xx;
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ define('WRENCHBOARD_ACCOUNT_CREATEACC', 11020);
|
|||||||
define('WRENCHBOARD_ACCOUNT_LOGIN', 11025);
|
define('WRENCHBOARD_ACCOUNT_LOGIN', 11025);
|
||||||
define('WRENCHBOARD_FACEBOOK_LOGIN', 11026);
|
define('WRENCHBOARD_FACEBOOK_LOGIN', 11026);
|
||||||
define('WRENCHBOARD_GOOGLE_LOGIN', 11027);
|
define('WRENCHBOARD_GOOGLE_LOGIN', 11027);
|
||||||
|
define('WRENCHBOARD_APPLE_LOGIN', 11031);
|
||||||
define('WRENCHBOARD_SEND_CONTACTUS', 11030);
|
define('WRENCHBOARD_SEND_CONTACTUS', 11030);
|
||||||
define('WRENCHBOARD_ACCOUNT_SENDREFER',11032);
|
define('WRENCHBOARD_ACCOUNT_SENDREFER',11032);
|
||||||
define('WRENCHBOARD_ACCOUNT_REFERLINK',11033);
|
define('WRENCHBOARD_ACCOUNT_REFERLINK',11033);
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ class Login extends WRB_Controller {
|
|||||||
|
|
||||||
if ($proceed) {
|
if ($proceed) {
|
||||||
|
|
||||||
$this->provision_account($user, $data);
|
$this->provisionAccount($user, $data);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Cannot proceed - duplicate email?
|
// Cannot proceed - duplicate email?
|
||||||
@@ -349,21 +349,23 @@ class Login extends WRB_Controller {
|
|||||||
eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLndyZW5jaGJvYXJkLnVzZXJzLmNsaWVudCIsImV4cCI6MTY1NDE3MjM5NywiaWF0IjoxNjU0MDg1OTk3LCJzdWIiOiIwMDE4MTAuMjBlNzUwMjhkNDljNDJkOGI0MzBiNDJkMWQ3NDg3ZjMuMTE1NyIsImF0X2hhc2giOiJPSzNfZlNtLUJZTEMzd3R5QTB4Q2pRIiwiZW1haWwiOiJhY2lkdW1pcmFlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF1dGhfdGltZSI6MTY1NDA4NTk2Mywibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ
|
eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLndyZW5jaGJvYXJkLnVzZXJzLmNsaWVudCIsImV4cCI6MTY1NDE3MjM5NywiaWF0IjoxNjU0MDg1OTk3LCJzdWIiOiIwMDE4MTAuMjBlNzUwMjhkNDljNDJkOGI0MzBiNDJkMWQ3NDg3ZjMuMTE1NyIsImF0X2hhc2giOiJPSzNfZlNtLUJZTEMzd3R5QTB4Q2pRIiwiZW1haWwiOiJhY2lkdW1pcmFlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF1dGhfdGltZSI6MTY1NDA4NTk2Mywibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ
|
||||||
jHxcOMAxUYEJx7nlmAXPN6PuqKMxVVcklGU5p6k16UvSS4DOM7nDwduo8D9FrzcjnTMGmLAThBYw2reilKv3vod034iTfBoL-vno_I7Wa-Iig5uTji7leaoDpfWyDAT7kFXpa6LVGdtZ8KdcVfSY-GF58JpKKQtf-sKB4sqnN1HAeCgYKP3EO5sf0zOttA7noZ_i6ITrmFbx5Mndf8Ktw-gb-LM-Ux11TEApByn4FcpL5m3ycvxxyaWsnLrGtraNK2S5N7Sby2imSB0iT9MFQRCL-4ddyD1YUDbpKLQDTlaSQuTPCX09AdMeLpx0wK6TAiTUUrOf93ljYU724Flb4g
|
jHxcOMAxUYEJx7nlmAXPN6PuqKMxVVcklGU5p6k16UvSS4DOM7nDwduo8D9FrzcjnTMGmLAThBYw2reilKv3vod034iTfBoL-vno_I7Wa-Iig5uTji7leaoDpfWyDAT7kFXpa6LVGdtZ8KdcVfSY-GF58JpKKQtf-sKB4sqnN1HAeCgYKP3EO5sf0zOttA7noZ_i6ITrmFbx5Mndf8Ktw-gb-LM-Ux11TEApByn4FcpL5m3ycvxxyaWsnLrGtraNK2S5N7Sby2imSB0iT9MFQRCL-4ddyD1YUDbpKLQDTlaSQuTPCX09AdMeLpx0wK6TAiTUUrOf93ljYU724Flb4g
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//die();
|
//die();
|
||||||
|
$id = $claims->sub;
|
||||||
|
echo "<h1>${id}</h1>";
|
||||||
|
$email = $claims->email;
|
||||||
|
|
||||||
if ($id !='' && $email != '') {
|
if ($id !='' && $email != '') {
|
||||||
$user = array(
|
$user = array(
|
||||||
'id' => $claims->sub,
|
'id' => $id,
|
||||||
'name' => 'First Last',
|
'name' => '',
|
||||||
'email' => $claims->email,
|
'email' => $email,
|
||||||
'apple' => 1
|
'apple' => 1
|
||||||
);
|
);
|
||||||
list($proceed, $data) = $this->checkUserExists($user, $data);
|
list($proceed, $data) = $this->checkUserExists($user, $data);
|
||||||
|
|
||||||
if ($proceed) {
|
if ($proceed) {
|
||||||
|
|
||||||
$this->provision_account($user, $data);
|
$this->provisionAccount($user, $data);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Cannot proceed - duplicate email?
|
// Cannot proceed - duplicate email?
|
||||||
@@ -383,18 +385,24 @@ class Login extends WRB_Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function provision_account($user, $data)
|
private function provisionAccount($user, $data)
|
||||||
{
|
{
|
||||||
$name = (string) $user["name"];
|
$name = (string) $user["name"];
|
||||||
if (trim($name) == "") {
|
if (trim($name) == "") {
|
||||||
$name = strtok($user["email"], "@");
|
$name = strtok($user["email"], "@");
|
||||||
}
|
}
|
||||||
$data['google_id'] = $user["id"];
|
if (array_key_exists('google',$user)) {
|
||||||
|
$data['google_id'] = $user["id"];
|
||||||
|
$data['action'] = WRENCHBOARD_GOOGLE_LOGIN;
|
||||||
|
} else {
|
||||||
|
$data['apple_id'] = $user["id"];
|
||||||
|
$data['action'] = WRENCHBOARD_APPLE_LOGIN;
|
||||||
|
}
|
||||||
$data['firstname'] = strtok($name, " ");
|
$data['firstname'] = strtok($name, " ");
|
||||||
$data['lastname'] = strtok(" ");
|
$data['lastname'] = strtok(" ");
|
||||||
$data['email'] = $user["email"];
|
$data['email'] = $user["email"];
|
||||||
$data['sessionid'] = rand(10000, 99999) . "A" . rand(10000, 99999);
|
$data['sessionid'] = rand(10000, 99999) . "A" . rand(10000, 99999);
|
||||||
$data['action'] = WRENCHBOARD_GOOGLE_LOGIN;
|
|
||||||
$this->load->model('backend_model');
|
$this->load->model('backend_model');
|
||||||
$out = array();
|
$out = array();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user