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 LoginWrenchBoardFacebook( CVars in, CVars &out );
|
||||
long LoginWrenchBoardGoogle( CVars in, CVars &out );
|
||||
long LoginWrenchBoardApple( 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);
|
||||
|
||||
@@ -145,6 +145,7 @@ enum { PARTNER_STRIPE };
|
||||
#define WRENCHBOARD_ACCOUNT_LOGIN 11025
|
||||
#define WRENCHBOARD_FACEBOOK_LOGIN 11026
|
||||
#define WRENCHBOARD_GOOGLE_LOGIN 11027
|
||||
#define WRENCHBOARD_APPLE_LOGIN 11031
|
||||
#define WRENCHBOARD_START_JOBLIST 11028
|
||||
#define WRENCHBOARD_ACCOUNT_DASHDATA 11029
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -156,6 +156,7 @@ define('WRENCHBOARD_ACCOUNT_CREATEACC', 11020);
|
||||
define('WRENCHBOARD_ACCOUNT_LOGIN', 11025);
|
||||
define('WRENCHBOARD_FACEBOOK_LOGIN', 11026);
|
||||
define('WRENCHBOARD_GOOGLE_LOGIN', 11027);
|
||||
define('WRENCHBOARD_APPLE_LOGIN', 11031);
|
||||
define('WRENCHBOARD_SEND_CONTACTUS', 11030);
|
||||
define('WRENCHBOARD_ACCOUNT_SENDREFER',11032);
|
||||
define('WRENCHBOARD_ACCOUNT_REFERLINK',11033);
|
||||
|
||||
@@ -265,7 +265,7 @@ class Login extends WRB_Controller {
|
||||
|
||||
if ($proceed) {
|
||||
|
||||
$this->provision_account($user, $data);
|
||||
$this->provisionAccount($user, $data);
|
||||
|
||||
} else {
|
||||
// Cannot proceed - duplicate email?
|
||||
@@ -349,21 +349,23 @@ class Login extends WRB_Controller {
|
||||
eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLndyZW5jaGJvYXJkLnVzZXJzLmNsaWVudCIsImV4cCI6MTY1NDE3MjM5NywiaWF0IjoxNjU0MDg1OTk3LCJzdWIiOiIwMDE4MTAuMjBlNzUwMjhkNDljNDJkOGI0MzBiNDJkMWQ3NDg3ZjMuMTE1NyIsImF0X2hhc2giOiJPSzNfZlNtLUJZTEMzd3R5QTB4Q2pRIiwiZW1haWwiOiJhY2lkdW1pcmFlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImF1dGhfdGltZSI6MTY1NDA4NTk2Mywibm9uY2Vfc3VwcG9ydGVkIjp0cnVlfQ
|
||||
jHxcOMAxUYEJx7nlmAXPN6PuqKMxVVcklGU5p6k16UvSS4DOM7nDwduo8D9FrzcjnTMGmLAThBYw2reilKv3vod034iTfBoL-vno_I7Wa-Iig5uTji7leaoDpfWyDAT7kFXpa6LVGdtZ8KdcVfSY-GF58JpKKQtf-sKB4sqnN1HAeCgYKP3EO5sf0zOttA7noZ_i6ITrmFbx5Mndf8Ktw-gb-LM-Ux11TEApByn4FcpL5m3ycvxxyaWsnLrGtraNK2S5N7Sby2imSB0iT9MFQRCL-4ddyD1YUDbpKLQDTlaSQuTPCX09AdMeLpx0wK6TAiTUUrOf93ljYU724Flb4g
|
||||
*/
|
||||
|
||||
//die();
|
||||
$id = $claims->sub;
|
||||
echo "<h1>${id}</h1>";
|
||||
$email = $claims->email;
|
||||
|
||||
if ($id !='' && $email != '') {
|
||||
$user = array(
|
||||
'id' => $claims->sub,
|
||||
'name' => 'First Last',
|
||||
'email' => $claims->email,
|
||||
'id' => $id,
|
||||
'name' => '',
|
||||
'email' => $email,
|
||||
'apple' => 1
|
||||
);
|
||||
list($proceed, $data) = $this->checkUserExists($user, $data);
|
||||
|
||||
if ($proceed) {
|
||||
|
||||
$this->provision_account($user, $data);
|
||||
$this->provisionAccount($user, $data);
|
||||
|
||||
} else {
|
||||
// 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"];
|
||||
if (trim($name) == "") {
|
||||
$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['lastname'] = strtok(" ");
|
||||
$data['email'] = $user["email"];
|
||||
$data['sessionid'] = rand(10000, 99999) . "A" . rand(10000, 99999);
|
||||
$data['action'] = WRENCHBOARD_GOOGLE_LOGIN;
|
||||
|
||||
$this->load->model('backend_model');
|
||||
$out = array();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user