mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
#444 회원 가입시 메일 인증 기능 추가.
특정 변수명 변경 sended->sent. 긴 메시지에 개행문자 추가. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4131 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
52feb9843a
commit
471fa1d2b0
11 changed files with 129 additions and 11 deletions
|
|
@ -45,6 +45,7 @@
|
|||
$lang->signature_max_height = '서명 높이 제한';
|
||||
$lang->enable_openid = 'OpenID 지원';
|
||||
$lang->enable_join = '회원 가입 허가';
|
||||
$lang->enable_confirm = '메일 인증 사용';
|
||||
$lang->enable_ssl = 'SSL 기능 사용';
|
||||
$lang->security_sign_in = '보안로그인 사용';
|
||||
$lang->limit_day = '임시 제한 일자';
|
||||
|
|
@ -125,9 +126,14 @@
|
|||
$lang->msg_find_account_title = '아이디/ 비밀번호 정보입니다';
|
||||
$lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다';
|
||||
$lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.<br />로그인 하신 후 비밀번호를 바꾸어주세요.';
|
||||
$lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
|
||||
$lang->msg_confirm_account_title = '가입 인증 메일 입니다';
|
||||
$lang->msg_confirm_account_info = '가입하신 계정 정보는 아래와 같습니다';
|
||||
$lang->msg_confirm_account_comment = '아래 링크를 클릭하시면 가입 인증이 이루어집니다.';
|
||||
$lang->msg_auth_mail_sent = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.';
|
||||
$lang->msg_confirm_mail_sent = '%s 메일로 가입 인증 메일이 발송되었습니다. 메일을 확인하세요.';
|
||||
$lang->msg_invalid_auth_key = '잘못된 계정 인증 요청입니다.<br />아이디/비밀번호 찾기를 다시 하시거나 사이트 관리자에게 계정 정보를 문의해주세요';
|
||||
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
|
||||
$lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다.\n꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.';
|
||||
$lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.';
|
||||
|
||||
$lang->msg_no_message = '쪽지가 없습니다';
|
||||
$lang->message_received = '쪽지가 왔습니다';
|
||||
|
|
@ -159,6 +165,7 @@
|
|||
$lang->msg_accept_agreement = '약관에 동의하셔야 합니다';
|
||||
|
||||
$lang->msg_user_denied = '입력하신 아이디의 사용이 중지되셨습니다';
|
||||
$lang->msg_user_not_confirmed = '아직 메일 인증이 이루어지지 않았습니다. 메일을 확인해 주세요';
|
||||
$lang->msg_user_limited = '입력하신 아이디는 %s 이후부터 사용하실 수 있습니다';
|
||||
|
||||
$lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다';
|
||||
|
|
@ -186,6 +193,7 @@
|
|||
|
||||
$lang->about_enable_openid = 'OpenID 지원을 할 경우 체크하시면 됩니다';
|
||||
$lang->about_enable_join = '체크를 하셔야 사용자들이 회원가입을 할 수 있습니다';
|
||||
$lang->about_enable_confirm = '입력된 메일 주소로 인증 메일을 보내 회원 가입을 확인 합니다';
|
||||
$lang->about_enable_ssl = '서버에서 SSL지원이 될 경우 회원가입/정보수정/로그인등의 개인정보가 서버로 보내질때 SSL(https)를 이용하도록 할 수 있습니다';
|
||||
$lang->about_limit_day = '회원 가입후 정해진 일자동안 인증 제한을 할 수 있습니다';
|
||||
$lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다';
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@
|
|||
**/
|
||||
function procMemberAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','enable_ssl','limit_day','after_login_url','after_logout_url','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height','editor_skin');
|
||||
$args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','enable_confirm','enable_ssl','limit_day','after_login_url','after_logout_url','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height','editor_skin');
|
||||
if(!$args->skin) $args->skin = "default";
|
||||
if(!$args->colorset) $args->colorset = "white";
|
||||
if($args->enable_join!='Y') $args->enable_join = 'N';
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@
|
|||
// 기본 정보를 세팅
|
||||
$args->enable_join = 'Y';
|
||||
if(!$args->enable_openid) $args->enable_openid = 'N';
|
||||
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
|
||||
if(!$args->image_name) $args->image_name = 'Y';
|
||||
if(!$args->image_mark) $args->image_mark = 'Y';
|
||||
if(!$args->profile_image) $args->profile_image = 'Y';
|
||||
|
|
|
|||
|
|
@ -710,6 +710,9 @@
|
|||
unset($all_args->accept_agreement);
|
||||
unset($all_args->signature);
|
||||
|
||||
// 메일 인증 기능 사용시 회원 상태를 denied로 설정
|
||||
if ($config->enable_confirm == 'Y') $args->denied = 'Y';
|
||||
|
||||
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
||||
$extra_vars = delObjectVars($all_args, $args);
|
||||
$args->extra_vars = serialize($extra_vars);
|
||||
|
|
@ -719,11 +722,15 @@
|
|||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 로그인 시킴
|
||||
$this->doLogin($args->user_id);
|
||||
if ($config->enable_confirm != 'Y') $this->doLogin($args->user_id);
|
||||
|
||||
$this->add('member_srl', $args->member_srl);
|
||||
if($config->redirect_url) $this->add('redirect_url', $config->redirect_url);
|
||||
$this->setMessage('success_registed');
|
||||
if ($config->enable_confirm == 'Y') {
|
||||
$msg = sprintf(Context::getLang('msg_confirm_mail_sent'), $args->email_address);
|
||||
$this->setMessage($msg);
|
||||
}
|
||||
else $this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1101,11 +1108,19 @@
|
|||
// 회원의 정보를 가져옴
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
|
||||
// 아이디/비밀번호 찾기가 가능한 상태의 회원인지 검사
|
||||
if ($member_info->denied == 'Y') {
|
||||
$chk_args->member_srl = $member_info->member_srl;
|
||||
$output = executeQuery('member.chkAuthMail', $chk_args);
|
||||
if ($output->toBool() && $output->data->count != '0') return new Object(-1, 'msg_user_not_confirmed');
|
||||
}
|
||||
|
||||
// 인증 DB에 데이터를 넣음
|
||||
$args->user_id = $member_info->user_id;
|
||||
$args->member_srl = $member_info->member_srl;
|
||||
$args->new_password = rand(111111,999999);
|
||||
$args->auth_key = md5( rand(0,999999 ) );
|
||||
$args->is_register = 'N';
|
||||
|
||||
$output = executeQuery('member.insertAuthMail', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
|
@ -1129,7 +1144,7 @@
|
|||
$oMail->send();
|
||||
|
||||
// 메세지 return
|
||||
$msg = sprintf(Context::getLang('msg_auth_mail_sended'), $member_info->email_address);
|
||||
$msg = sprintf(Context::getLang('msg_auth_mail_sent'), $member_info->email_address);
|
||||
$this->setMessage($msg);
|
||||
}
|
||||
|
||||
|
|
@ -1150,7 +1165,18 @@
|
|||
if(!$output->toBool() || $output->data->auth_key != $auth_key) return $this->stop('msg_invalid_auth_key');
|
||||
|
||||
// 인증 정보가 맞다면 새비밀번호로 비밀번호를 바꾸고 인증 상태로 바꿈
|
||||
$args->password = md5($output->data->new_password);
|
||||
if ($output->data->is_register == 'Y') {
|
||||
$args->password = $output->data->new_password;
|
||||
$args->denied = 'N';
|
||||
}
|
||||
else {
|
||||
$args->password = md5($output->data->new_password);
|
||||
unset($args->denied);
|
||||
}
|
||||
|
||||
// $output->data->is_register 값을 백업해 둔다.
|
||||
$is_register = $output->data->is_register;
|
||||
|
||||
$output = executeQuery('member.updateMemberPassword', $args);
|
||||
if(!$output->toBool()) return $this->stop($output->getMessage());
|
||||
|
||||
|
|
@ -1175,6 +1201,7 @@
|
|||
executeQuery('member.deleteAuthMail',$args);
|
||||
|
||||
// 결과를 통보
|
||||
Context::set('is_register', $is_register);
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('msg_success_authed');
|
||||
}
|
||||
|
|
@ -1274,7 +1301,12 @@
|
|||
if($password && !$oMemberModel->isValidPassword($member_info->password, $password)) return new Object(-1, 'invalid_password');
|
||||
|
||||
// denied == 'Y' 이면 알림
|
||||
if($member_info->denied == 'Y') return new Object(-1,'msg_user_denied');
|
||||
if($member_info->denied == 'Y') {
|
||||
$args->member_srl = $member_info->member_srl;
|
||||
$output = executeQuery('member.chkAuthMail', $args);
|
||||
if ($output->toBool() && $output->data->count != '0') return new Object(-1,'msg_user_not_confirmed');
|
||||
return new Object(-1,'msg_user_denied');
|
||||
}
|
||||
|
||||
// denied_date가 현 시간보다 적으면 알림
|
||||
if($member_info->limit_date && $member_info->limit_date >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d")));
|
||||
|
|
@ -1380,14 +1412,13 @@
|
|||
|
||||
// 필수 변수들의 조절
|
||||
if($args->allow_mailing!='Y') $args->allow_mailing = 'N';
|
||||
if($args->denied!='Y') $args->denied = 'N';
|
||||
if(!in_array($args->allow_message, array('Y','N','F'))) $args->allow_message= 'Y';
|
||||
|
||||
if($logged_info->is_admin == 'Y') {
|
||||
if($args->denied!='Y') $args->denied = 'N';
|
||||
if($args->is_admin!='Y') $args->is_admin = 'N';
|
||||
} else {
|
||||
unset($args->is_admin);
|
||||
unset($args->denied);
|
||||
}
|
||||
|
||||
list($args->email_id, $args->email_host) = explode('@', $args->email_address);
|
||||
|
|
@ -1450,6 +1481,40 @@
|
|||
}
|
||||
}
|
||||
|
||||
// 메일 인증 모드 사용시(가입된 회원이 denied일 때) 인증 메일 발송
|
||||
if ($args->denied == 'Y') {
|
||||
// 인증 DB에 데이터를 넣음
|
||||
$auth_args->user_id = $args->user_id;
|
||||
$auth_args->member_srl = $args->member_srl;
|
||||
$auth_args->new_password = $args->password;
|
||||
$auth_args->auth_key = md5(rand(0, 999999));
|
||||
$auth_args->is_register = 'Y';
|
||||
|
||||
$output = executeQuery('member.insertAuthMail', $auth_args);
|
||||
if (!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 메일 내용을 구함
|
||||
Context::set('auth_args', $auth_args);
|
||||
Context::set('member_info', $args);
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$content = $oTemplate->compile($this->module_path.'tpl', 'confirm_member_account_mail');
|
||||
|
||||
// 사이트 웹마스터 정보를 구함
|
||||
$oModuleModel = &getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// 메일 발송
|
||||
$oMail = new Mail();
|
||||
$oMail->setTitle( Context::getLang('msg_confirm_account_title') );
|
||||
$oMail->setContent($content);
|
||||
$oMail->setSender( $member_config->webmaster_name?$member_config->webmaster_name:'webmaster', $member_config->webmaster_email);
|
||||
$oMail->setReceiptor( $args->user_name, $args->email_address );
|
||||
$oMail->send();
|
||||
}
|
||||
|
||||
// trigger 호출 (after)
|
||||
if($output->toBool()) {
|
||||
$trigger_output = ModuleHandler::triggerCall('member.insertMember', 'after', $args);
|
||||
|
|
@ -1598,8 +1663,15 @@
|
|||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// member_group_member에서 해당 항목들 삭제
|
||||
$args->member_srl = $member_srl;
|
||||
// member_auth_mail에서 해당 항목들 삭제
|
||||
$output = executeQuery('member.deleteAuthMail', $args);
|
||||
if (!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// member_group_member에서 해당 항목들 삭제
|
||||
$output = executeQuery('member.deleteMemberGroupMember', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
|
|
|
|||
11
modules/member/queries/chkAuthMail.xml
Normal file
11
modules/member/queries/chkAuthMail.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getAuthMail" action="select">
|
||||
<tables>
|
||||
<table name="member_auth_mail" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
<column name="user_id" var="user_id" notnull="notnull" />
|
||||
<column name="auth_key" var="auth_key" notnull="notnull" minlength="1" maxlength="60" />
|
||||
<column name="new_password" var="new_password" notnull="notnull" minlength="1" maxlength="60" />
|
||||
<column name="is_register" var="is_register" default="N" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
</tables>
|
||||
<columns>
|
||||
<column name="password" var="password" notnull="notnull" />
|
||||
<column name="denied" var="denied" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
|
|
|
|||
|
|
@ -3,5 +3,6 @@
|
|||
<column name="member_srl" type="number" size="11" notnull="notnull" unique="unique_key" />
|
||||
<column name="user_id" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="new_password" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="is_register" type="char" size="1" default="N" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
</table>
|
||||
|
|
|
|||
12
modules/member/tpl/confirm_member_account_mail.html
Normal file
12
modules/member/tpl/confirm_member_account_mail.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{$lang->msg_confirm_account_info}<br />
|
||||
<hr noshade="noshade" />
|
||||
<ul>
|
||||
<li>Site : <a href="{getUrl()}" target="_blank">{getUrl()}</a></li>
|
||||
<li>{$lang->user_id} : {$member_info->user_id}</li>
|
||||
<li>{$lang->user_name} : {$member_info->user_name}</li>
|
||||
<li>{$lang->nick_name} : {$member_info->nick_name}</li>
|
||||
<li>{$lang->email_address} : {$member_info->email_address}</li>
|
||||
</ul>
|
||||
<hr noshade="noshade" />
|
||||
{$lang->msg_confirm_account_comment}<br />
|
||||
<a href="{getUrl('','module','member','act','procMemberAuthAccount','member_srl',$member_info->member_srl, 'auth_key',$auth_args->auth_key)}" target="_blank">{getUrl('','module','member','act','procMemberAuthAccount','member_srl',$member_info->member_srl,'auth_key',$auth_args->auth_key)}</a>
|
||||
|
|
@ -37,6 +37,13 @@
|
|||
{$lang->about_enable_join}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->enable_confirm}</th>
|
||||
<td>
|
||||
<input type="checkbox" name="enable_confirm" value="Y" <!--@if($config->enable_confirm=='Y')-->checked="checked"<!--@end--> class="checkbox" />
|
||||
{$lang->about_enable_confirm}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->enable_ssl}</th>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
<script type="text/javascript">
|
||||
<!--@if ($is_register == 'Y')-->
|
||||
alert("{$lang->msg_success_confirmed}");
|
||||
<!--@else-->
|
||||
alert("{$lang->msg_success_authed}");
|
||||
<!--@end-->
|
||||
location.href="{getUrl()}";
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue