diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 0c6453c9d..12f3fc001 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -69,6 +69,21 @@ class memberController extends member $args->member_srl = $member_info->member_srl; executeQuery('member.deleteAuthMail', $args); + // If a device token is supplied, attempt to register it. + $device_token = Context::get('device_token'); + if ($device_token) + { + $output = executeQuery('member.getMemberDevice', ['device_token' => $device_token]); + if (!$output->data || $output->data->member_srl != $member_info->member_srl) + { + $output = $this->procMemberRegisterDevice($member_info->member_srl); + if ($output instanceof BaseObject && !$output->toBool()) + { + return $output; + } + } + } + if(!$config->after_login_url) { $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'mid', Context::get('mid'), 'act', ''); @@ -83,7 +98,7 @@ class memberController extends member /** * Register device */ - function procMemberRegisterDevice() + function procMemberRegisterDevice($member_srl = null) { Context::setResponseMethod('JSON'); @@ -95,8 +110,8 @@ class memberController extends member $device_model = escape(Context::get('device_model')); // Return an error when id and password doesn't exist - if(!$user_id && !$allow_guest_device) return new BaseObject(-1, 'NULL_USER_ID'); - if(!$password && !$allow_guest_device) return new BaseObject(-1, 'NULL_PASSWORD'); + if(!$member_srl && !$user_id && !$allow_guest_device) return new BaseObject(-1, 'NULL_USER_ID'); + if(!$member_srl && !$password && !$allow_guest_device) return new BaseObject(-1, 'NULL_PASSWORD'); if(!$device_token) return new BaseObject(-1, 'NULL_DEVICE_TOKEN'); // Get device information @@ -122,7 +137,11 @@ class memberController extends member return new BaseObject(-1, 'INVALID_DEVICE_TOKEN'); } - if($user_id && $password) + if ($member_srl) + { + $member_srl = intval($member_srl); + } + elseif ($user_id && $password) { $output = $this->procMemberLogin($user_id, $password); if(!$output->toBool()) @@ -959,19 +978,6 @@ class memberController extends member $signature = Context::get('signature'); $this->putSignature($args->member_srl, $signature); - // If a virtual site, join the site - $site_module_info = Context::get('site_module_info'); - if($site_module_info->site_srl > 0) - { - $columnList = array('site_srl', 'group_srl'); - $default_group = MemberModel::getDefaultGroup($site_module_info->site_srl, $columnList); - if($default_group->group_srl) - { - $this->addMemberToGroup($args->member_srl, $default_group->group_srl, $site_module_info->site_srl); - } - - } - // Log-in if($config->enable_confirm != 'Y') { @@ -982,6 +988,17 @@ class memberController extends member return $this->setRedirectUrl(getUrl('', 'act', 'dispMemberLoginForm'), $output); } } + + // Register device + $device_token = Context::get('device_token'); + if ($device_token) + { + $output = executeQuery('member.getMemberDevice', ['device_token' => $device_token]); + if (!$output->data || $output->data->member_srl != $args->member_srl) + { + $this->procMemberRegisterDevice($args->member_srl); + } + } // Results $this->add('member_srl', $args->member_srl); diff --git a/modules/member/queries/getMemberDevice.xml b/modules/member/queries/getMemberDevice.xml index a03a7eb1a..54bca453a 100644 --- a/modules/member/queries/getMemberDevice.xml +++ b/modules/member/queries/getMemberDevice.xml @@ -6,8 +6,8 @@ - + - +