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 @@
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}
+
+
+
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 @@
+