#19144425 회원가입시 비밀번호 찾기를 위한 질의/응답 추가, #19111136 회원가입약관 nl2br 제거, #19144180 비밀번호 갱신 알림 기능 추가, #19141507 아이디 패스워드 찾기시 SSL 적용

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7693 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2010-09-27 04:35:07 +00:00
parent 1fa2e99408
commit 14389fdc13
28 changed files with 470 additions and 12 deletions

View file

@ -15,6 +15,7 @@
<action name="dispMemberScrappedDocument" type="view" standalone="true" />
<action name="dispMemberSavedDocument" type="view" standalone="true" />
<action name="dispMemberFindAccount" type="view" standalone="true" />
<action name="dispMemberGetTempPassword" type="view" standalone="true" />
<action name="dispMemberResendAuthMail" type="view" standalone="true" />
<action name="dispSavedDocumentList" type="view" standalone="true" />
@ -61,6 +62,7 @@
<action name="procMemberDeleteSavedDocument" type="controller" standalone="true" />
<action name="procMemberFindAccount" type="controller" standalone="true" />
<action name="procMemberFindAccountByQuestion" type="controller" standalone="true" />
<action name="procMemberAuthAccount" type="controller" standalone="true" />
<action name="procMemberUpdateAuthMail" type="controller" standalone="true" />
<action name="procMemberResendAuthMail" type="controller" standalone="true" />

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = 'The account is not activated.';
$lang->invalid_user_id= "You have entered an invalid ID";
$lang->invalid_password = 'You have entered an invalid password';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = 'Join Mailing';
$lang->denied = 'Prohibited';
$lang->is_admin = 'Superadmin Permission';
@ -209,4 +210,25 @@
$lang->about_resend_auth_mail = 'You can request for activation mail if you have not activated before';
$lang->no_article = 'There exists no article';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = 'No está certificado';
$lang->invalid_user_id= "Este ID no existe";
$lang->invalid_password = 'Contraseña incorrecta';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = 'Registro del envío de mail';
$lang->denied = 'Prohibido';
$lang->is_admin = 'Atribución del administrador superior';
@ -207,4 +208,25 @@
$lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.';
$lang->no_article = 'There exists no article';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = 'Le compte n\'est pas encore certifié.';
$lang->invalid_user_id= "C'est un compte qui n'existe pas.";
$lang->invalid_password = 'C\'est un mot de passe invalide';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = 'Inscrire au Mailing';
$lang->denied = 'Arrêté à utiliser';
$lang->is_admin = 'Permission Superadministrative';
@ -211,4 +212,25 @@
$lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.';
$lang->no_article = 'There exists no article';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = '認証出来ませんでした。';
$lang->invalid_user_id= '存在しないユーザIDです。';
$lang->invalid_password = '無効なパスワードです。';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = 'メーリングリストに登録';
$lang->denied = '使用中止';
$lang->is_admin = '最高管理権限';
@ -210,4 +211,26 @@
$lang->about_resend_auth_mail = '認証メールが届いてなかった場合、再送信の申請が可能です。<br />※申請の前に、当サイトからメールの受信が出来るように設定して下さい。';
$lang->no_article = 'There exists no article';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = '인증이 되지 않았습니다.';
$lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다.';
$lang->invalid_password = '잘못된 비밀번호입니다.';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = '메일링 가입';
$lang->denied = '사용중지';
$lang->is_admin = '최고관리 권한';
@ -210,4 +211,24 @@
$lang->about_resend_auth_mail = '인증 메일을 받지 못하신 경우 다시 받으실 수 있습니다.';
$lang->no_article = '글이 없습니다.';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = 'Вы не авторизированы';
$lang->invalid_user_id= "Указанный ID не существует";
$lang->invalid_password = 'Неверный пароль';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = 'Получать рассылки';
$lang->denied = 'Отменить пользование';
$lang->is_admin = 'Суперадминистративные права';
@ -210,4 +211,25 @@
$lang->about_resend_auth_mail = 'Вы можете получить снова письмо для авторизации, если еще не получили.';
$lang->no_article = 'Записей нет';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -23,6 +23,7 @@
$lang->invalid_user_id= "Bạn đã nhập sai tên sử dụng";
$lang->allow_mailing = 'Đồng ý nhận Email';
$lang->invalid_password = 'Mật khẩu không đúng';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->denied = 'Bị từ chối';
$lang->is_admin = 'Toàn quyền Administrator';
$lang->group = 'Phân nhóm';
@ -210,4 +211,25 @@
$lang->add_openid = 'Thêm OpenID';
$lang->about_resend_auth_mail = 'Nhận lại mã kích hoạt nếu bạn đã không nhận được Email kích hoạt khi đăng kí.';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = '还没有认证!';
$lang->invalid_user_id= '该用户名不存在,请检查您的输入是否有误!';
$lang->invalid_password = '您的密码不正确!';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = '接收邮件';
$lang->denied = '禁止使用';
$lang->is_admin = '最高管理权限';
@ -208,4 +209,25 @@
$lang->about_member = "可以添加/修改/删除会员及管理用户组或注册表单的会员管理模块。\n此模块不仅可以生成缺省用户组以外的其他用户组来管理会员,并且通过注册表单的管理获得除会员基本信息以外的扩展信息。";
$lang->about_resend_auth_mail = '没有收到认证邮件时,可以在此重新发送认证邮件。';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -20,6 +20,7 @@
$lang->invalid_authorization = '還沒有認證!';
$lang->invalid_user_id= '該帳號不存在,請檢查您的輸入是否有誤!';
$lang->invalid_password = '您的密碼不正確!';
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
$lang->allow_mailing = '接收郵件';
$lang->denied = '禁止使用';
$lang->is_admin = '最高管理權限';
@ -210,4 +211,25 @@
$lang->about_resend_auth_mail = '如果沒有收到認證郵件可以再重寄一次。';
$lang->no_article = '主題不存在';
$lang->find_account_question = '비밀번호 찾기 질문/답변';
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
/*
$lang->find_account_question_items = array(''
,'다른 이메일 주소는?'
,'나의 보물 1호는?'
,'나의 출신 초등학교는?'
,'나의 출신 고향은?'
,'나의 이상형은?'
,'어머니 성함은?'
,'아버지 성함은?'
,'가장 좋아하는 색깔은?'
,'가장 좋아하는 음식은?'
);
*/
$lang->temp_password = '임시 비밀번호';
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
?>

View file

@ -95,7 +95,7 @@
'image_name', 'image_name_max_width', 'image_name_max_height',
'image_mark', 'image_mark_max_width', 'image_mark_max_height',
'group_image_mark', 'group_image_mark_max_width', 'group_image_mark_max_height',
'signature','signature_max_height'
'signature','signature_max_height','change_password_date'
);
if(!$args->skin) $args->skin = "default";
@ -111,6 +111,7 @@
if($args->signature!='Y') $args->signature = 'N';
if(!trim(strip_tags($args->agreement))) $args->agreement = null;
$args->limit_day = (int)$args->limit_day;
if(!$args->change_password_date) $args->change_password_date = 0;
$oMemberController = &getController('member');
$output = $oMemberController->setMemberConfig($args);

View file

@ -24,6 +24,7 @@
Context::addSSLAction('procMemberModifyPassword');
Context::addSSLAction('procMemberInsert');
Context::addSSLAction('procMemberModifyInfo');
Context::addSSLAction('procMemberFindAccount');
}
}
@ -145,6 +146,13 @@
// image_mark 추가 (2009. 02. 14)
if(!$oDB->isColumnExists("member_group", "image_mark")) return true;
// password 유효기간을 위한 추가
if(!$oDB->isColumnExists("member", "change_password_date")) return true;
// 비밀번호 찾기 질문/답변을 위한 추가
if(!$oDB->isColumnExists("member", "find_account_question")) return true;
if(!$oDB->isColumnExists("member", "find_account_answer")) return true;
return false;
}
@ -184,6 +192,20 @@
$oDB->addColumn("member_group", "image_mark", "text");
}
// password 유효기간을 위한 추가
if(!$oDB->isColumnExists("member", "change_password_date")) {
$oDB->addColumn("member", "change_password_date", "date");
executeQuery('member.updateAllChangePasswordDate');
}
// 비밀번호 찾기 질문/답변을 위한 추가
if(!$oDB->isColumnExists("member", "find_account_question")) {
$oDB->addColumn("member", "find_account_question", "number", 11);
}
if(!$oDB->isColumnExists("member", "find_account_answer")) {
$oDB->addColumn("member", "find_account_answer", "varchar", 250);
}
return new Object(0, 'success_updated');
}

View file

@ -36,6 +36,18 @@
$config = $oModuleModel->getModuleConfig('member');
if($config->after_login_url) $this->setRedirectUrl($config->after_login_url);
// 설정된 change_password_date 확인
$limit_date = $config->change_password_date;
// change_password_date가 설정되어 있으면 확인
if($limit_date > 0) {
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByUserID($user_id);
if($member_info->change_password_date < date('YmdHis', strtotime('-'.$limit_date.' day')) ){
$this->setRedirectUrl(getNotEncodedUrl('','vid',Context::get('vid'),'mid',Context::get('mid'),'act','dispMemberModifyPassword'));
}
}
$redirect_url = Context::get('redirect_url');
if($output->toBool() && Context::getRequestMethod() == "POST" && $redirect_url)
{
@ -526,7 +538,7 @@
if($config->agreement && Context::get('accept_agreement')!='Y') return $this->stop('msg_accept_agreement');
// 필수 정보들을 미리 추출
$args = Context::gets('user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing');
$args = Context::gets('user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','find_account_question','find_account_answer');
$args->member_srl = getNextSequence();
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
@ -585,7 +597,7 @@
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
// 필수 정보들을 미리 추출
$args = Context::gets('user_name','nick_name','homepage','blog','birthday','email_address','allow_mailing');
$args = Context::gets('user_name','nick_name','homepage','blog','birthday','email_address','allow_mailing','find_account_question','find_account_answer');
// 로그인 정보
$logged_info = Context::get('logged_info');
@ -654,6 +666,9 @@
// 현재 비밀번호가 맞는지 확인
if(!$oMemberModel->isValidPassword($member_info->password, $current_password)) return new Object(-1, 'invalid_password');
// 이전 비밀번호와 같은지 확인
if($current_password == $password) return new Object(-1, 'invalid_new_password');
// member_srl의 값에 따라 insert/update
$args->member_srl = $member_srl;
$args->password = $password;
@ -1005,6 +1020,45 @@
return new Object(0,$msg);
}
/**
* @brief 질문/답변을 통한 임시 비밀번호 생성
**/
function procMemberFindAccountByQuestion() {
$email_address = Context::get('email_address');
$user_id = Context::get('user_id');
$find_account_question = trim(Context::get('find_account_question'));
$find_account_answer = trim(Context::get('find_account_answer'));
if(!$user_id || !$email_address || !$find_account_question || !$find_account_answer) return new Object(-1, 'msg_invalid_request');
$oMemberModel = &getModel('member');
$oModuleModel = &getModel('module');
// 메일 주소에 해당하는 회원이 있는지 검사
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($email_address);
if(!$member_srl) return new Object(-1, 'msg_email_not_exists');
// 회원의 정보를 가져옴
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
// 질문 응답이 없으면
if(!$member_info->find_account_question || !$member_info->find_account_answer) return new Object(-1, 'msg_question_not_exists');
if(trim($member_info->find_account_question) != $find_account_question || trim($member_info->find_account_answer) != $find_account_answer) return new Object(-1, 'msg_answer_not_matches');
// 임시비밀번호로 변경 및 비밀번호 변경시간을 1로 설정
$args->member_srl = $member_srl;
list($usec, $sec) = explode(" ", microtime());
$args->temp_password = substr(md5($user_id . $member_info->find_account_answer. $usec . $sec),0,20);
$args->change_password_date = '1';
$this->updateMemberPassword($args);
$_SESSION['xe_temp_password_'.$user_id] = $args->temp_password;
$this->add('user_id',$user_id);
}
/**
* @brief 아이디/비밀번호 찾기 기능 실행
* 메일에 등록된 링크를 선택시 호출되는 method로 비밀번호를 바꾸고 인증을 시켜버림
@ -1333,12 +1387,36 @@
return;
}
$do_auto_login = false;
// 정보를 바탕으로 키값 비교
$key = md5($user_id.$password.$_SERVER['REMOTE_ADDR']);
if($key == $args->autologin_key) {
$output = $this->doLogin($user_id);
} else {
// 설정된 change_password_date 확인
$oModuleModel = &getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
$limit_date = $member_config->change_password_date;
// change_password_date가 설정되어 있으면 확인
if($limit_date > 0) {
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByUserID($user_id);
if($member_info->change_password_date >= date('YmdHis', strtotime('-'.$limit_date.' day')) ){
$do_auto_login = true;
}
} else {
$do_auto_login = true;
}
}
if($do_auto_login) {
$output = $this->doLogin($user_id);
} else {
executeQuery('member.deleteAutologin', $args);
setCookie('xeak',null,time()+60*60*24*365, '/');
}
@ -1752,6 +1830,7 @@
* @brief member 비밀번호 수정
**/
function updateMemberPassword($args) {
$output = executeQuery('member.updateChangePasswordDate', $args);
$args->password = md5($args->password);
return executeQuery('member.updateMemberPassword', $args);
}

View file

@ -328,6 +328,23 @@
$this->setTemplateFile('find_member_account');
}
/**
* @brief 임시 비밀번호 발급
**/
function dispMemberGetTempPassword() {
if(Context::get('is_logged')) return $this->stop('already_logged');
$user_id = Context::get('user_id');
$temp_password = $_SESSION['xe_temp_password_'.$user_id];
unset($_SESSION['xe_temp_password_'.$user_id]);
if(!$user_id||!$temp_password) return new Object(-1,'msg_invaild_request');
Context::set('temp_password', $temp_password);
$this->setTemplateFile('find_temp_password');
}
/**
* @brief 인증 메일 재발송 페이지
**/

View file

@ -11,6 +11,8 @@
<column name="email_host" var="email_host" notnull="notnull" />
<column name="user_name" var="user_name" notnull="notnull" minlength="1" maxlength="40" />
<column name="nick_name" var="nick_name" notnull="notnull" minlength="1" maxlength="40" />
<column name="find_account_question" var="find_account_question" />
<column name="find_account_answer" var="find_account_answer" />
<column name="homepage" var="homepage" />
<column name="blog" var="blog" />
<column name="birthday" var="birthday" />

View file

@ -0,0 +1,8 @@
<query id="updateAllChangePasswordDate" action="update">
<tables>
<table name="member" />
</tables>
<columns>
<column name="change_password_date" var="change_password_date" notnull="notnull" default="curdate()" />
</columns>
</query>

View file

@ -0,0 +1,11 @@
<query id="updateChangePasswordDate" action="update">
<tables>
<table name="member" />
</tables>
<columns>
<column name="change_password_date" var="change_password_date" notnull="notnull" default="curdate()" />
</columns>
<conditions>
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
</conditions>
</query>

View file

@ -9,6 +9,8 @@
<column name="email_host" var="email_host" notnull="notnull" />
<column name="user_name" var="user_name" notnull="notnull" minlength="2" maxlength="40" />
<column name="nick_name" var="nick_name" notnull="notnull" minlength="2" maxlength="40" />
<column name="find_account_question" var="find_account_question" />
<column name="find_account_answer" var="find_account_answer" />
<column name="homepage" var="homepage" default="" />
<column name="blog" var="blog" default="" />
<column name="birthday" var="birthday" />
@ -20,7 +22,4 @@
<column name="description" var="description" />
<column name="extra_vars" var="extra_vars" />
</columns>
<conditions>
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
</conditions>
</query>
</query>

View file

@ -7,6 +7,8 @@
<column name="email_host" type="varchar" size="160" index="idx_email_host" />
<column name="user_name" type="varchar" size="40" notnull="notnull" />
<column name="nick_name" type="varchar" size="40" notnull="notnull" unique="unique_nick_name" />
<column name="find_account_question" type="number" size="11" />
<column name="find_account_answer" type="varchar" size="250" />
<column name="homepage" type="varchar" size="250" />
<column name="blog" type="varchar" size="250" />
<column name="birthday" type="char" size="8" />
@ -16,6 +18,7 @@
<column name="limit_date" type="date" />
<column name="regdate" type="date" index="idx_regdate" />
<column name="last_login" type="date" index="idx_last_login" />
<column name="change_password_date" type="date" />
<column name="is_admin" type="char" size="1" default="N" index="idx_is_admin" />
<column name="description" type="text" />
<column name="extra_vars" type="text" />

View file

@ -0,0 +1,14 @@
<filter name="find_member_account_by_question" module="member" act="procMemberFindAccountByQuestion">
<form>
<node target="user_id" required="true" />
<node target="email_address" required="true" minlength="2" maxlength="255" filter="email" />
<node target="find_account_question" required="true" />
<node target="find_account_answer" required="true" maxlength="250" />
</form>
<parameter />
<response callback_func="completeFindMemberAccountByQuestion">
<tag name="error" />
<tag name="message" />
<tag name="user_id" />
</response>
</filter>

View file

@ -3,12 +3,16 @@
<node target="user_name" required="true" minlength="2" maxlength="40" />
<node target="nick_name" required="true" minlength="2" maxlength="40" />
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email" />
<node target="find_account_question" required="true" />
<node target="find_account_answer" required="true" maxlength="250" />
</form>
<parameter>
<param name="accept_agreement" target="accept_agreement" />
<param name="user_name" target="user_name" />
<param name="nick_name" target="nick_name" />
<param name="homepage" target="homepage" />
<param name="nick_name" target="nick_name" />
<param name="find_account_question" target="find_account_question" />
<param name="find_account_answer" target="find_account_answer" />
<param name="blog" target="blog" />
<param name="birthday" target="birthday" />
<param name="allow_mailing" target="allow_mailing" />

View file

@ -6,6 +6,8 @@
<node target="user_name" required="true" minlength="2" maxlength="40" />
<node target="nick_name" required="true" minlength="2" maxlength="40" />
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email" />
<node target="find_account_question" required="true" />
<node target="find_account_answer" required="true" maxlength="250" />
</form>
<parameter>
<param name="accept_agreement" target="accept_agreement" />
@ -14,6 +16,8 @@
<param name="password" target="password1" />
<param name="user_name" target="user_name" />
<param name="nick_name" target="nick_name" />
<param name="find_account_question" target="find_account_question" />
<param name="find_account_answer" target="find_account_answer" />
<param name="homepage" target="homepage" />
<param name="blog" target="blog" />
<param name="birthday" target="birthday" />

View file

@ -1,7 +1,8 @@
<!--#include("./common_header.html")-->
<!--%import("filter/find_member_account.xml")-->
<!--%import("filter/find_member_account_by_question.xml")-->
<h3>{$member_title = $lang->cmd_find_member_account}</h3>
<h3>{$lang->cmd_find_member_account}</h3>
<p class="summary">{$lang->about_find_member_account}</p>
@ -20,4 +21,46 @@
</tr>
</table>
</form>
<!--@if(count($lang->find_account_question_items)>1)-->
<h3>{$lang->cmd_find_member_account}</h3>
<p class="summary">{$lang->about_find_account_question}</p>
<form action="./" method="get" onsubmit="return procFilter(this, find_member_account_by_question)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" />
<table cellspacing="0" class="rowTable" title="{$lang->email_address}">
<tr>
<th><div><label for="cpw">{$lang->user_id}</label></div></th>
<td class="wide"><input type="text" name="user_id" class="inputTypeText" /></td>
</tr>
<tr>
<th><div><label for="cpw">{$lang->email_address}</label></div></th>
<td class="wide"><input type="text" name="email_address" class="inputTypeText w400" /></td>
</tr>
<tr>
<th><div><label for="cpw">{$lang->find_account_question}</label></div></th>
<td>
<select name="find_account_question">
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
<option value="{$i}">{$lang->find_account_question_items[$i]}</option>
<!--@end-->
</select>
<br />
<input type="text" name="find_account_answer" value="" class="inputTypeText w300"/>
</td>
</tr>
<tr>
<th class="button" colspan="2"><span class="button black strong"><input type="submit" value="{$lang->cmd_get_temp_password}" accesskey="s" /></span></th>
</tr>
</table>
</form>
<!--@end-->
<!--#include("./common_footer.html")-->

View file

@ -0,0 +1,8 @@
<!--#include("./common_header.html")-->
<h3>{$lang->cmd_find_member_account}</h3>
<p class="summary">{$lang->about_find_member_account}</p>
{$temp_password}
<!--#include("./common_footer.html")-->

View file

@ -133,6 +133,15 @@ function completeFindMemberAccount(ret_obj, response_tags) {
alert(ret_obj['message']);
}
/* 임시 비밀번호 생성 */
function completeFindMemberAccountByQuestion(ret_obj, response_tags) {
if(ret_obj['error'] != 0){
alert(ret_obj['message']);
}else{
location.href = current_url.setQuery('act','dispMemberGetTempPassword').setQuery('user_id',ret_obj['user_id']);
}
}
/* 저장글 삭제 */
function doDeleteSavedDocument(document_srl, confirm_message) {
if(!confirm(confirm_message)) return false;

View file

@ -51,6 +51,19 @@
<th><div>{$lang->email_address} <span class="require">*</span></div></th>
<td><input type="text" name="email_address" value="{htmlspecialchars($member_info->email_address)}" /><p>{$lang->about_email_address}</p></td>
</tr>
<!--@if($member_info->find_account_question)-->
<tr>
<th><div>{$lang->find_account_question} <span class="require">*</span></div></th>
<td>
<select name="find_account_question">
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
<option value="{$i}" <!--@if($member_info->find_account_question==$i)-->selected="selected" <!--@end-->>{$lang->find_account_question_items[$i]}</option>
<!--@end-->
</select>
<br /><input type="text" name="find_account_answer" value="{$member_info->find_account_answer}" class="inputTypeText w300"/>
</td>
</tr>
<!--@end-->
<!--@if($member_config->profile_image == 'Y')-->
<tr>

View file

@ -14,7 +14,7 @@
<!--@if(!$is_logged && $member_config->agreement)-->
<div class="agreementBox">
{nl2br($member_config->agreement)}
{$member_config->agreement}
</div>
<div class="agreementButton">
<input type="checkbox" name="accept_agreement" value="Y" id="accept_agree" />
@ -56,6 +56,20 @@
<input type="text" name="email_address" value="" class="inputTypeText"/><p>{$lang->about_email_address}</p>
</td>
</tr>
<!--@if(count($lang->find_account_question_items)>1)-->
<tr>
<th><div>{$lang->find_account_question} <span class="require">*</span></div></th>
<td>
<select name="find_account_question">
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
<option value="{$i}">{$lang->find_account_question_items[$i]}</option>
<!--@end-->
</select>
<br />
<input type="text" name="find_account_answer" value="" class="inputTypeText w300"/>
</td>
</tr>
<!--@end-->
<tr>
<th><div>{$lang->homepage}</div></th>
<td>

View file

@ -43,6 +43,13 @@
{$lang->about_enable_confirm}
</td>
</tr>
<tr class="row2">
<th scope="row"><div>change password date</div></th>
<td>
<input type="text" name="change_password_date" value="{$config->change_password_date}" size="2" class="inputTypeText" />{$lang->unit_day}
<p>{$lang->about_change_password_date}</p>
</td>
</tr>
<tr class="row2">
<th scope="row"><div>{$lang->limit_day}</div></th>
<td>