diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php index a5d4cbbbf..c47af54fc 100644 --- a/modules/member/lang/en.php +++ b/modules/member/lang/en.php @@ -120,6 +120,8 @@ $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = 'Scraps'; $lang->cmd_view_saved_document = 'Saved Articles'; $lang->cmd_send_email = 'Send Mail'; +$lang->cmd_allow_duplicate_nickname = 'Allow Duplicate Nicknames'; +$lang->about_allow_duplicate_nickname = 'Allow more than one member to use the same nickname.'; $lang->msg_email_not_exists = 'You have entered an invalid email address.'; $lang->msg_alreay_scrapped = 'This article is already scrapped.'; $lang->msg_folder_alreay_exists = 'A folder with the same name already exists.'; diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php index da50d6a5e..90f707169 100644 --- a/modules/member/lang/ko.php +++ b/modules/member/lang/ko.php @@ -124,6 +124,8 @@ $lang->cmd_view_saved_document = '저장함 보기'; $lang->cmd_send_email = '메일 보내기'; $lang->cmd_modify_nickname_log = '닉네임 변경 기록'; $lang->cmd_member_profile_view = '회원 프로필사진 보이기'; +$lang->cmd_allow_duplicate_nickname = '닉네임 중복 허용'; +$lang->about_allow_duplicate_nickname = '여러 회원이 동일한 닉네임을 사용하는 것을 허용합니다. 주의: 잘못 사용할 경우 혼란이 발생할 수 있습니다.'; $lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다.'; $lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다.'; $lang->msg_folder_alreay_exists = '이미 존재하는 폴더 이름입니다.'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index a7d1e9fb1..d1a807022 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -185,6 +185,7 @@ class memberAdminController extends member 'password_hashing_auto_upgrade', 'password_change_invalidate_other_sessions', 'update_nickname_log', + 'allow_duplicate_nickname', 'member_profile_view' ); diff --git a/modules/member/member.class.php b/modules/member/member.class.php index e859ff8a7..425d09cc2 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -249,6 +249,15 @@ class member extends ModuleObject { if(!$oModuleModel->getTrigger('document.getDocumentMenu', 'member', 'controller', 'triggerGetDocumentMenu', 'after')) return true; if(!$oModuleModel->getTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after')) return true; + // Allow duplicate nickname + if($config->allow_duplicate_nickname == 'Y') + { + if($oDB->isIndexExists('member', 'unique_nick_name') || !$oDB->isIndexExists('member', 'idx_nick_name')) + { + return true; + } + } + return false; } @@ -412,6 +421,19 @@ class member extends ModuleObject { $oModuleController->insertTrigger('document.getDocumentMenu', 'member', 'controller', 'triggerGetDocumentMenu', 'after'); if(!$oModuleModel->getTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after')) $oModuleController->insertTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after'); + + // Allow duplicate nickname + if($config->allow_duplicate_nickname == 'Y') + { + if($oDB->isIndexExists('member', 'unique_nick_name')) + { + $oDB->dropIndex('member', 'unique_nick_name', true); + } + if(!$oDB->isIndexExists('member', 'idx_nick_name')) + { + $oDB->addIndex('member', 'idx_nick_name', array('nick_name')); + } + } } /** diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index f33f47b0c..f89f5077e 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -2365,16 +2365,18 @@ class memberController extends member } // Check if nickname is duplicate - $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); - if($member_srl) + if($config->allow_duplicate_nickname !== 'Y') { - return new BaseObject(-1, 'msg_exists_nick_name'); + $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); + if($member_srl) + { + return new BaseObject(-1, 'msg_exists_nick_name'); + } } // Check managed Email Host if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address)) { - $config = $oMemberModel->getMemberConfig(); $emailhost_check = $config->emailhost_check; $managed_email_host = lang('managed_email_host'); @@ -2580,7 +2582,6 @@ class memberController extends member // Check managed Email Host if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address)) { - $config = $oMemberModel->getMemberConfig(); $emailhost_check = $config->emailhost_check; $managed_email_host = lang('managed_email_host'); @@ -2637,11 +2638,14 @@ class memberController extends member } // Check if nickname is duplicate - $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); - if($member_srl && $args->member_srl != $member_srl) - { - return new BaseObject(-1, 'msg_exists_nick_name'); - } + if($config->allow_duplicate_nickname !== 'Y') + { + $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); + if($member_srl && $args->member_srl != $member_srl) + { + return new BaseObject(-1, 'msg_exists_nick_name'); + } + } list($args->email_id, $args->email_host) = explode('@', $args->email_address); diff --git a/modules/member/schemas/member.xml b/modules/member/schemas/member.xml index 100be9c7a..24a3f5374 100644 --- a/modules/member/schemas/member.xml +++ b/modules/member/schemas/member.xml @@ -6,7 +6,7 @@ - + diff --git a/modules/member/tpl/default_config.html b/modules/member/tpl/default_config.html index 7c9225254..e26e2c0cf 100644 --- a/modules/member/tpl/default_config.html +++ b/modules/member/tpl/default_config.html @@ -36,6 +36,14 @@

{$lang->about_update_nickname_log}

+
+
{$lang->cmd_allow_duplicate_nickname}
+
+ + +

{$lang->about_allow_duplicate_nickname}

+
+
{$lang->cmd_config_password_strength}