diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index c976d7c1e..288de53c6 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -15,6 +15,7 @@ + @@ -61,6 +62,7 @@ + diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index a824dd73f..87aab61f6 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index 0405cbd57..52a405c0b 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/fr.lang.php b/modules/member/lang/fr.lang.php index 56193c4d1..a4a5cd42e 100644 --- a/modules/member/lang/fr.lang.php +++ b/modules/member/lang/fr.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index c2fffeca0..8e2e461cf 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -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 = '認証メールが届いてなかった場合、再送信の申請が可能です。
※申請の前に、当サイトからメールの受信が出来るように設定して下さい。'; $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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 4d8f0d7b4..e05227fdb 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index db25ecdf6..2903679b0 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/vi.lang.php b/modules/member/lang/vi.lang.php index db0136345..8cca9808c 100644 --- a/modules/member/lang/vi.lang.php +++ b/modules/member/lang/vi.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index fcc09b46e..7765c6fa3 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/lang/zh-TW.lang.php b/modules/member/lang/zh-TW.lang.php index a7232cc47..b96c261b1 100644 --- a/modules/member/lang/zh-TW.lang.php +++ b/modules/member/lang/zh-TW.lang.php @@ -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 = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.'; ?> diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index ae9334e87..0b2f6fee2 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -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); diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 52d6441b8..25424a148 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -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'); } diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 641adb410..daa7d299d 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -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); } diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 84e498cad..661f58920 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -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 인증 메일 재발송 페이지 **/ diff --git a/modules/member/queries/insertMember.xml b/modules/member/queries/insertMember.xml index eb85ade6e..c991a66df 100644 --- a/modules/member/queries/insertMember.xml +++ b/modules/member/queries/insertMember.xml @@ -11,6 +11,8 @@ + + diff --git a/modules/member/queries/updateAllChangePasswordDate.xml b/modules/member/queries/updateAllChangePasswordDate.xml new file mode 100644 index 000000000..70ffe3170 --- /dev/null +++ b/modules/member/queries/updateAllChangePasswordDate.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/member/queries/updateChangePasswordDate.xml b/modules/member/queries/updateChangePasswordDate.xml new file mode 100644 index 000000000..b2cbc258a --- /dev/null +++ b/modules/member/queries/updateChangePasswordDate.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + \ No newline at end of file diff --git a/modules/member/queries/updateMember.xml b/modules/member/queries/updateMember.xml index e584367e4..c269c1f6e 100644 --- a/modules/member/queries/updateMember.xml +++ b/modules/member/queries/updateMember.xml @@ -9,6 +9,8 @@ + + @@ -20,7 +22,4 @@ - - - - + \ No newline at end of file diff --git a/modules/member/schemas/member.xml b/modules/member/schemas/member.xml index 9a908ec8c..0a70e12b6 100644 --- a/modules/member/schemas/member.xml +++ b/modules/member/schemas/member.xml @@ -7,6 +7,8 @@ + + @@ -16,6 +18,7 @@ + diff --git a/modules/member/skins/default/filter/find_member_account_by_question.xml b/modules/member/skins/default/filter/find_member_account_by_question.xml new file mode 100644 index 000000000..5ee5c194d --- /dev/null +++ b/modules/member/skins/default/filter/find_member_account_by_question.xml @@ -0,0 +1,14 @@ + +
+ + + + + + + + + + + +
diff --git a/modules/member/skins/default/filter/modify_info.xml b/modules/member/skins/default/filter/modify_info.xml index c91364b63..673a243fb 100644 --- a/modules/member/skins/default/filter/modify_info.xml +++ b/modules/member/skins/default/filter/modify_info.xml @@ -3,12 +3,16 @@ + + - + + + diff --git a/modules/member/skins/default/filter/signup.xml b/modules/member/skins/default/filter/signup.xml index ced939f46..7b2e01811 100644 --- a/modules/member/skins/default/filter/signup.xml +++ b/modules/member/skins/default/filter/signup.xml @@ -6,6 +6,8 @@ + + @@ -14,6 +16,8 @@ + + diff --git a/modules/member/skins/default/find_member_account.html b/modules/member/skins/default/find_member_account.html index 246d43fa2..dfa4c1424 100644 --- a/modules/member/skins/default/find_member_account.html +++ b/modules/member/skins/default/find_member_account.html @@ -1,7 +1,8 @@ + -

{$member_title = $lang->cmd_find_member_account}

+

{$lang->cmd_find_member_account}

{$lang->about_find_member_account}

@@ -20,4 +21,46 @@
+ + + +

{$lang->cmd_find_member_account}

+ +

{$lang->about_find_account_question}

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + diff --git a/modules/member/skins/default/find_temp_password.html b/modules/member/skins/default/find_temp_password.html new file mode 100644 index 000000000..876a45f43 --- /dev/null +++ b/modules/member/skins/default/find_temp_password.html @@ -0,0 +1,8 @@ + + +

{$lang->cmd_find_member_account}

+

{$lang->about_find_member_account}

+ +{$temp_password} + + diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index 39e24e398..1b2ff9176 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -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; diff --git a/modules/member/skins/default/modify_info.html b/modules/member/skins/default/modify_info.html index 517db3713..df8ffe4d2 100644 --- a/modules/member/skins/default/modify_info.html +++ b/modules/member/skins/default/modify_info.html @@ -51,6 +51,19 @@
{$lang->email_address} *

{$lang->about_email_address}

+ + +
{$lang->find_account_question} *
+ + +
+ + + diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index fcf8c4e15..38b3410b7 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -14,7 +14,7 @@
- {nl2br($member_config->agreement)} + {$member_config->agreement}
@@ -56,6 +56,20 @@

{$lang->about_email_address}

+ + +
{$lang->find_account_question} *
+ + +
+ + + +
{$lang->homepage}
diff --git a/modules/member/tpl/member_config.html b/modules/member/tpl/member_config.html index 96dc83ed8..13983e3af 100644 --- a/modules/member/tpl/member_config.html +++ b/modules/member/tpl/member_config.html @@ -43,6 +43,13 @@ {$lang->about_enable_confirm} + +
change password date
+ + {$lang->unit_day} +

{$lang->about_change_password_date}

+ +
{$lang->limit_day}