diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 85dc800dd..40d6ea8ca 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -129,6 +129,7 @@ $type = $xml_info->action->{$this->act}->type; $grant = $xml_info->action->{$this->act}->grant; $kind = strpos(strtolower($this->act),'admin')!==false?'admin':''; + if(!$kind && $this->module == 'admin') $kind = 'admin'; // 모듈 객체 생성 $oModule = &$this->getModuleInstance($this->module, $type, $kind); diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index dfbfde879..502972e6a 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -164,6 +164,7 @@ $lang->success_moved = '이동되었습니다'; $lang->success_sended = '발송되었습니다'; $lang->success_reset = '초기화되었습니다'; + $lang->success_leaved = '탈퇴되었습니다'; $lang->fail_to_delete = '삭제되었습니다'; $lang->fail_to_move = '이동되었습니다'; @@ -177,6 +178,7 @@ $lang->confirm_delete = '삭제하시겠습니까?'; $lang->confirm_move = '이동하시겠습니까?'; $lang->confirm_reset = '초기화 하시겠습니까??'; + $lang->confirm_leave = '탈퇴 하시겠습니까??'; $lang->column_type = '형식'; $lang->column_type_list['text'] = '한줄 입력칸 (text)'; diff --git a/modules/admin/tpl/layout.html b/modules/admin/tpl/layout.html index c1a3ca867..394fa90bc 100644 --- a/modules/admin/tpl/layout.html +++ b/modules/admin/tpl/layout.html @@ -6,7 +6,7 @@
- {$lang->cmd_logout} + {$lang->cmd_logout}
diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index 17b725099..30a0b9559 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -35,6 +35,7 @@ + diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index afc78333e..e7953e304 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -99,6 +99,7 @@ $lang->msg_new_member = '회원 추가'; $lang->msg_update_member = '회원 정보 수정'; + $lang->msg_leave_member = '회원 탈퇴'; $lang->msg_group_is_null = '등록된 그룹이 없습니다'; $lang->msg_not_delete_default = '기본 항목을 삭제할 수 없습니다'; $lang->msg_not_exists_member = '존재하지 않는 사용자입니다'; diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 44a698191..97c6656b6 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -17,6 +17,7 @@ $oModuleController->insertActionForward('member', 'view', 'dispMemberSignUpForm'); $oModuleController->insertActionForward('member', 'view', 'dispMemberModifyInfo'); $oModuleController->insertActionForward('member', 'view', 'dispMemberModifyPassword'); + $oModuleController->insertActionForward('member', 'view', 'dispMemberLeave'); $oModuleController->insertActionForward('member', 'view', 'dispMemberLoginForm'); $oModuleController->insertActionForward('member', 'view', 'dispMemberLogout'); @@ -64,11 +65,13 @@ $group_args->is_admin = 'Y'; $output = $oMemberAdminController->insertGroup($group_args); + unset($group_args); $group_args->title = Context::getLang('default_group_1'); $group_args->is_default = 'Y'; $group_args->is_admin = 'N'; $output = $oMemberAdminController->insertGroup($group_args); + unset($group_args); $group_args->title = Context::getLang('default_group_2'); $group_args->is_default = 'N'; $group_args->is_admin = 'N'; diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index b4b1ba1f6..b931e8e6d 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -591,6 +591,39 @@ $this->setMessage('success_updated'); } + /** + * @brief 탈퇴 + **/ + function procMemberLeave() { + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + + // 필수 정보들을 미리 추출 + $password = trim(Context::get('password')); + + // 로그인한 유저의 정보를 가져옴 + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + + // member model 객체 생성 + $oMemberModel = &getModel('member'); + + // member_srl 에 따른 정보 가져옴 + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + + // 현재 비밀번호가 맞는지 확인 + if(!$password || ($member_info->password != md5($password) && $this->mysql_pre4_hash_password($password) != $member_info->password)) { + return new Object(-1, 'invalid_password'); + } + + $output = $this->deleteMember($member_srl); + if(!$output->toBool()) return $output; + + $_SESSION['is_logged'] = false; + $_SESSION['logged_info'] = null; + + $this->setMessage('success_leaved'); + } + /** * @brief 이미지 이름을 추가 **/ diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 96b39a955..a8fb2fdb6 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -137,6 +137,25 @@ $this->setTemplateFile('modify_password'); } + /** + * @brief 탈퇴 화면 + **/ + function dispMemberLeave() { + $oMemberModel = &getModel('member'); + + // 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력 + if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged'); + + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + Context::set('member_info',$member_info); + + // 템플릿 파일 지정 + $this->setTemplateFile('leave_form'); + } + /** * @brief 로그아웃 출력 **/ diff --git a/modules/member/skins/default/filter/leave_member.xml b/modules/member/skins/default/filter/leave_member.xml new file mode 100644 index 000000000..18eb8287d --- /dev/null +++ b/modules/member/skins/default/filter/leave_member.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index 5fd7d21a8..8e3f6a0bd 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -20,6 +20,16 @@ function completeModify(ret_obj, response_tags, args, fo_obj) { location.href = current_url.setQuery('act','dispMemberInfo'); } +/* 회원 탈퇴 */ +function completeLeave(ret_obj, response_tags, args, fo_obj) { + var error = ret_obj['error']; + var message = ret_obj['message']; + + alert(message); + + location.href = current_url.setQuery('act',''); +} + /* 이미지 업로드 */ function _doUploadImage(fo_obj, act) { // 업로드용 iframe을 생성 diff --git a/modules/member/skins/default/leave_form.html b/modules/member/skins/default/leave_form.html new file mode 100644 index 000000000..9a13b7eb9 --- /dev/null +++ b/modules/member/skins/default/leave_form.html @@ -0,0 +1,39 @@ + + + +
+ {$lang->msg_leave_member} +
+ +
+ + + + +
+ {$lang->member_default_info} +
+ + + + + + + + + +
{$lang->user_id} + {$member_info->user_id} +
{$lang->password1} + +
+ + + + + +
+ + +
+
diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index 2d46c1d1b..8812bcfdb 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -92,6 +92,7 @@ +