From d4794dcb44fe39753a71069a81cf816c2ddaaabe Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 3 Aug 2019 21:31:42 +0900 Subject: [PATCH] Allow multiple identifiers --- modules/member/lang/en.php | 6 ++-- modules/member/lang/ko.php | 6 ++-- modules/member/member.admin.controller.php | 39 +++++++++++++++++++--- modules/member/tpl/js/signup_config.js | 29 ---------------- modules/member/tpl/login_config.html | 18 ++++++++++ modules/member/tpl/signup_config.html | 36 +++----------------- 6 files changed, 66 insertions(+), 68 deletions(-) diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php index 0f74e6ea2..100f9d6f1 100644 --- a/modules/member/lang/en.php +++ b/modules/member/lang/en.php @@ -303,8 +303,10 @@ $lang->add_extend_form = 'Add user defined item'; $lang->msg_null_prohibited_id = 'Please enter an ID to prohibit.'; $lang->msg_null_prohibited_nick_name = 'Please enter a nick name to prohibit.'; $lang->msg_null_managed_emailhost = 'Please enter email address providers to manage. (eg.: gmail.com)'; -$lang->identifier = 'Login Account'; -$lang->about_identifier = 'Please select an account to use when logging in.'; +$lang->identifier = 'Login Identifier'; +$lang->about_identifier = 'Allow users to login using one or more different identifiers.'; +$lang->msg_need_identifier = 'You need to select at least one login identifier.'; +$lang->msg_need_enabled_identifier = 'You need to select identifiers that are enabled in the signup form.'; $lang->use_after_save = 'Use after saved'; $lang->cmd_add_group = 'Add group'; $lang->msg_groups_exist = 'groups exist.'; diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php index ed3d1eb01..9241eb5d6 100644 --- a/modules/member/lang/ko.php +++ b/modules/member/lang/ko.php @@ -317,9 +317,11 @@ $lang->add_extend_form = '사용자 정의 항목 추가'; $lang->msg_null_prohibited_id = '추가할 금지 아이디를 입력해주세요.'; $lang->msg_null_prohibited_nick_name = '추가할 금지 닉네임을 입력해주세요.'; $lang->msg_null_managed_emailhost = '추가할 금지 이메일 주소 제공자를 입력해주세요. (예: naver.com)'; -$lang->identifier = '로그인 계정'; -$lang->about_identifier = '로그인에 사용할 계정을 선택해주세요.'; +$lang->identifier = '로그인 방법'; +$lang->about_identifier = '여러 가지 방법으로 로그인을 허용할 수 있습니다.'; $lang->about_public_item = '본인 외에 다른 회원에게도 노출될 정보인지 선택합니다.'; +$lang->msg_need_identifier = '최소 한 가지의 로그인 방법을 선택해야 합니다.'; +$lang->msg_need_enabled_identifier = '가입 폼에서 사용하도록 설정된 로그인 방법을 선택해야 합니다.'; $lang->use_after_save = '저장 후 사용'; $lang->cmd_add_group = '그룹 추가'; $lang->msg_groups_exist = '개 그룹이 존재합니다.'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index 85c66bd08..d02771c43 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -293,6 +293,8 @@ class memberAdminController extends member public function procMemberAdminInsertSignupConfig() { $oMemberModel = getModel('member'); + $config = $oMemberModel->getMemberConfig(); + $oModuleController = getController('module'); $args = Context::gets( @@ -335,7 +337,6 @@ class memberAdminController extends member $args->image_name = $args->image_name ? 'Y' : 'N'; $args->image_mark = $args->image_mark ? 'Y' : 'N'; $args->signature = $args->signature != 'Y' ? 'N' : 'Y'; - $args->identifier = $all_args->identifier; // set default $all_args->is_nick_name_public = 'Y'; @@ -356,13 +357,13 @@ class memberAdminController extends member foreach($list_order as $key) { $signupItem = new stdClass(); - $signupItem->isIdentifier = ($key == $all_args->identifier); + $signupItem->isIdentifier = ($key == $config->identifier || in_array($key, $config->identifiers)); $signupItem->isDefaultForm = in_array($key, $items); $signupItem->name = $key; $signupItem->title = (!in_array($key, $items)) ? $key : $lang->{$key}; $signupItem->mustRequired = in_array($key, $mustRequireds); $signupItem->imageType = (strpos($key, 'image') !== false); - $signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier; + $signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired; $signupItem->isUse = in_array($key, $usable_list) || $signupItem->required; $signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N'; @@ -415,9 +416,12 @@ class memberAdminController extends member public function procMemberAdminInsertLoginConfig() { + $oMemberModel = getModel('member'); + $config = $oMemberModel->getMemberConfig(); $oModuleController = getController('module'); $args = Context::gets( + 'identifiers', 'change_password_date', 'enable_login_fail_report', 'max_error_count', @@ -425,7 +429,34 @@ class memberAdminController extends member 'after_login_url', 'after_logout_url' ); - + + if(!count($args->identifiers)) + { + return new BaseObject(-1, 'msg_need_identifier'); + } + $enabled_list = array(); + foreach($config->signupForm as $signupItem) + { + if($signupItem->isUse) + { + $enabled_list[] = $signupItem->name; + } + if(in_array($signupItem->name, $args->identifiers)) + { + $signupItem->isIdentifier = true; + } + else + { + $signupItem->isIdentifier = false; + } + } + if(!count(array_intersect($args->identifiers, $enabled_list))) + { + return new BaseObject(-1, 'msg_need_enabled_identifier'); + } + $args->signupForm = $config->signupForm; + $args->identifier = array_first($args->identifiers); + if(!$args->change_password_date) { $args->change_password_date = 0; diff --git a/modules/member/tpl/js/signup_config.js b/modules/member/tpl/js/signup_config.js index 8791ef245..d6d4add33 100644 --- a/modules/member/tpl/js/signup_config.js +++ b/modules/member/tpl/js/signup_config.js @@ -217,35 +217,6 @@ jQuery(function($){ jQuery.exec_json('member.procMemberAdminUpdateDeniedNickName', {'nick_name': ids}, on_complete); }); - - $('input[name=identifier]').change(function(){ - var $checkedTR = $('input[name=identifier]:checked').closest('tr'); - var $notCheckedTR = $('input[name=identifier]:not(:checked)').closest('tr'); - var name, notName; - if (!$checkedTR.hasClass('sticky')){ - name = $checkedTR.find('input[name="list_order[]"]').val(); - if (!$checkedTR.find('input[type=hidden][name="usable_list[]"]').length) $('').insertBefore($checkedTR); - if (!$checkedTR.find('input[type=hidden][name='+name+']').length) $('').insertBefore($checkedTR); - $checkedTR.find('th').html(''+$checkedTR.find('th ._title').html()+''); - $checkedTR.find('input[type=checkbox][name="usable_list[]"]').attr('checked', 'checked').attr('disabled', 'disabled'); - $checkedTR.find('input[type=radio][name='+name+'][value=required]').attr('checked', 'checked').attr('disabled', 'disabled'); - $checkedTR.find('input[type=radio][name='+name+'][value=option]').removeAttr('checked').attr('disabled', 'disabled'); - $checkedTR.addClass('sticky'); - $checkedTR.parent().prepend($checkedTR); - - notName = $notCheckedTR.find('input[name="list_order[]"]').val(); - if (notName == 'user_id'){ - if ($notCheckedTR.find('input[type=hidden][name="usable_list[]"]').length) $notCheckedTR.find('input[type=hidden][name="usable_list[]"]').remove(); - if ($notCheckedTR.find('input[type=hidden][name='+name+']').length) $notCheckedTR.find('input[type=hidden][name='+name+']').remove(); - $notCheckedTR.find('input[type=checkbox][name="usable_list[]"]').removeAttr('disabled'); - $notCheckedTR.find('input[type=radio][name='+notName+']').removeAttr('disabled'); - } - $notCheckedTR.find('th').html('
'+$notCheckedTR.find('th ._title').html()+'
'); - $notCheckedTR.removeClass('sticky'); - - // add sticky class - } - }); $('#userDefine').submit(function(e) { var id_list = $(this).find('input[name=join_form_id_list]').val(); diff --git a/modules/member/tpl/login_config.html b/modules/member/tpl/login_config.html index 7f0679d07..50119c719 100644 --- a/modules/member/tpl/login_config.html +++ b/modules/member/tpl/login_config.html @@ -4,6 +4,24 @@ +
+

{$lang->identifier}

+
+ + + +

{$lang->about_identifier}

+
+
diff --git a/modules/member/tpl/signup_config.html b/modules/member/tpl/signup_config.html index b79423e4b..e8b779eea 100644 --- a/modules/member/tpl/signup_config.html +++ b/modules/member/tpl/signup_config.html @@ -82,12 +82,6 @@ {$lang->target} - {$lang->identifier} - [?] -
-

{$lang->about_identifier}

-
- {$lang->use} {$lang->public} [?] @@ -105,37 +99,18 @@ {@ $fixed_public_list = array('nick_name', 'password', 'email_address', 'phone_number')} - - - - - - - {$item->title} - - - - - - - - -   -   - - + - - + +
- + {$item->title}
- - + @@ -221,7 +196,6 @@ {$item->title}
-