#447 Member모듈에서 로그인/회원가입/정보-비밀번호 수정등 비밀번호 관련 정보의 전송에 대해 SSL사용을 설정할 수 있도록 변경. 단 서버에서 SSL지원이 되어야 하며 현재 기본포트에 대해서만 개발 완료되었음. 로그인 위젯의 경우 기본 위젯에 대해 보안페이지 설정 기능을 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4109 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-04-16 06:27:41 +00:00
parent a588225372
commit 89090a5cb9
32 changed files with 345 additions and 128 deletions

View file

@ -29,6 +29,13 @@
$this->member_config = $oModuleModel->getModuleConfig('member');
Context::set('member_config', $this->member_config);
// ssl 사용시 현재 https접속상태인지에 대한 flag및 https url 생성
$ssl_mode = false;
if($this->member_config->enable_ssl == 'Y') {
if(preg_match('/^https:\/\//i',Context::getRequestUri())) $ssl_mode = true;
}
Context::set('ssl_mode',$ssl_mode);
// 템플릿 컴파일
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);

View file

@ -1,46 +1,60 @@
.fc_01 { color:#797771; }
.fc_02 { color:#9A9893; }
.default_login { color:#797771;}
.openid_login { display:none; }
.box_login { border:solid 3px #D5D8DB; background:#FFFFFE; margin-bottom:10px;}
/* login form */
.default_login form { position:relative; }
.default_login .form_field { padding:5px 60px 5px 5px; white-space:nowrap; overflow:hidden; height:45px; }
.box_login .user_info { padding:5px 0 0 5px; height:22px; }
.default_login .form_field .openIDTitle { width:99%; white-space:nowrap; overflow:hidden; background:url("../images/openid_login_bg.gif") no-repeat left top; padding:1px 0 0 18px; margin-bottom:8px; color:#888888; font-weight:bold; }
.default_login .form_field .openIDTitle input { margin:0; padding:0; height:14px; }
.default_login .form_field input.input { display:block; width:99%; background-color: #ffffff; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:2px; height:14px; color:#666666; margin:2px 0 2px 0;}
.box_login .hr_dot_01 { background:url(../images/default/hr_dot_01.gif) repeat-x; height:2px; overflow:hidden; clear:both; margin:6px; }
.box_login .item { background:url(../images/default/bul_01.gif) no-repeat 5px 5px; height:16px; padding:3px 0px 0px 20px; margin-left:5px; margin-top:2px; }
.box_login .item a { color:#666666; text-decoration:none; }
.box_login .item { font-size:11px; letter-spacing:-1px; margin-right:10px; padding:3px 0px 0px 20px; white-space:nowrap; }
.box_login .profile { width:70px; float:left; background:url(../images/default/icon_profile.gif) no-repeat left; }
.box_login .message { width:70px; float:left; background:url(../images/default/icon_note.gif) no-repeat left; }
.box_login .friend { float:left; background:url(../images/default/icon_friend.gif) no-repeat left; }
.box_login .administrative { float:left; background:url(../images/default/icon_key.gif) no-repeat left; margin-right:0px; }
.box_login .administrative a { color:#D80D0F; }
.box_login .lastlogin { clear:both; padding-bottom:5px;}
.default_login input.submit { width:45px; height:45px; background:url(../images/default/login_btn_submit.gif) no-repeat; border:none; margin:0; cursor:pointer; position:absolute; right:5px; top:5px; }
.box_login .form_field { float:left; margin:9px 9px 0 9px; _margin:3px 3px 0 3px; height:55px; }
.box_login .form_field div { margin-top:2px; margin-bottom:3px; }
.box_login input.submit { width:45px; height:45px; background:url(../images/default/login_btn_submit.gif) no-repeat; border:none; margin:9px 0 0 0; _margin:5px 0 0 0; cursor:pointer; }
.box_login .input { width:140px; background-color: #ffffff; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:2px; height:14px; margin:0px; cursor:text; color:#666666;}
.box_login ul { margin:0; padding:0; }
.box_login ul.option { clear:both; height:20px; margin:0 0 0 9px;}
.box_login ul.option li { float:left; list-style:none;}
.box_login ul.option li a.btn { background:url(../images/default/bul_01.gif) no-repeat left; padding-left:10px; margin-left:14px; }
.box_login .checkbox { width:15px; height:15px; margin:-1px 0px 0px -1px; margin-right:2px; }
.box_login .clear { clear:both; }
.box_login ul { margin:0; padding:0; }
.box_login ul.extra_option { clear:both; height:40px; }
.box_login ul.extra_option li a {text-decoration:none;}
.box_login ul.extra_option li a.btn { background:url(../images/default/bul_01.gif) no-repeat left; padding-left:10px; margin-left:10px; }
.default_login form p.securitySignIn { clear:both; padding:0 0 0 18px; margin:4px 0 4px 7px; }
.default_login form p.noneSSL { background:url("../images/none_ssl.png") no-repeat left top; }
.default_login form p.SSL { background:url("../images/ssl.png") no-repeat left top; }
.default_login form p.noneSSL a { color:#BF6801; text-decoration:none; }
.default_login form p.SSL a { color:#9CAC74; text-decoration:none; }
.openid_login { clear:both; height:38px; border:3px solid #D5D8DB; background-color:#FFFFFF; margin:0 0 10px 0; }
.openid_login .openid_user_id { width:110px; _width:100px; background: url(../images/openid_login_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:16px; line-height:1em; vertical-align:middle; margin-bottom:.5em; color:#666666;}
.default_login p { padding:0; margin:0 0 0 5px; }
.openid_login .wButtonTypeA { display:block; cursor:pointer; background:url(../images/default/buttonTypeACenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; white-space:nowrap;border:0px;}
.openid_login .wButtonTypeA:hover { text-decoration:none;}
.openid_login .wButtonTypeA img { vertical-align:middle;}
.openid_login .wButtonTypeA input { border:none; cursor:pointer; background:url(../images/default/buttonTypeACenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; white-space:nowrap;border:0px; vertical-align:middle; }
.openid_login .wButtonTypeA .leftCap { width:2px; height:24px; background:url(../images/default/buttonTypeALeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;}
.openid_login .wButtonTypeA .rightCap { width:2px; height:24px; background:url(../images/default/buttonTypeARight.gif) no-repeat; margin:0 -1px 0 .4em;}
.openid_login .wButtonTypeA .icon { margin:0 .2em;}
.openid_login .wButtonWrite ul { text-align:center; clear:both; display:block; margin:0; padding:0; }
.openid_login .wButtonWrite li { margin-top:.5em; float:left; margin-left:.3em; list-style:none;}
.default_login .checkbox { width:15px; height:15px; margin:-1px 0px 0px -1px; margin-right:2px; }
.default_login .clear { clear:both; }
.default_login ul.extra_option { margin:5px 0 0 0; padding:0; clear:both; height:40px; }
.default_login ul.extra_option li { background:url(../images/default/bul_01.gif) no-repeat 7px 3px; padding-left:20px; margin-left:5px; margin-bottom:3px;}
.default_login ul.extra_option li a {text-decoration:none; color:#666666;}
.default_openid_login { display:none; clear:both; height:38px; border:3px solid #D5D8DB; background-color:#FFFFFF; margin:0 0 10px 0; }
.default_openid_login .openid_user_id { width:110px; _width:100px; background: url(../images/openid_login_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:16px; line-height:1em; vertical-align:middle; margin-bottom:.5em; color:#666666;}
.default_openid_login .wButtonTypeA { display:block; cursor:pointer; background:url(../images/default/buttonTypeACenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; white-space:nowrap;border:0px;}
.default_openid_login .wButtonTypeA:hover { text-decoration:none;}
.default_openid_login .wButtonTypeA img { vertical-align:middle;}
.default_openid_login .wButtonTypeA input { border:none; cursor:pointer; background:url(../images/default/buttonTypeACenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; white-space:nowrap;border:0px; vertical-align:middle; }
.default_openid_login .wButtonTypeA .leftCap { width:2px; height:24px; background:url(../images/default/buttonTypeALeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;}
.default_openid_login .wButtonTypeA .rightCap { width:2px; height:24px; background:url(../images/default/buttonTypeARight.gif) no-repeat; margin:0 -1px 0 .4em;}
.default_openid_login .wButtonTypeA .icon { margin:0 .2em;}
.default_openid_login .wButtonWrite ul { text-align:center; clear:both; display:block; margin:0; padding:0; }
.default_openid_login .wButtonWrite li { margin-top:.5em; float:left; margin-left:.3em; list-style:none;}
/* logged info */
.default_login .loginUser { position:relative; padding:5px; }
.default_login .loginUser .userNickName { margin-right:50px; white-space:nowrap; overflow:hidden; }
.default_login .loginUser .logoutButton { position:absolute; right:5px; top:5px; }
.default_login .hr_dot_01 { background:url(../images/default/hr_dot_01.gif) repeat-x; height:2px; overflow:hidden; clear:both; margin:6px; }
.default_login .item { background:url(../images/default/bul_01.gif) no-repeat 5px 5px; height:16px; padding:3px 0px 0px 20px; margin-left:5px; margin-top:2px; }
.default_login .item a { color:#666666; text-decoration:none; }
.default_login .item { font-size:11px; letter-spacing:-1px; margin-right:10px; padding:3px 0px 0px 20px; white-space:nowrap; }
.default_login .profile { width:70px; float:left; background:url(../images/default/icon_profile.gif) no-repeat left; }
.default_login .message { width:70px; float:left; background:url(../images/default/icon_note.gif) no-repeat left; }
.default_login .friend { float:left; background:url(../images/default/icon_friend.gif) no-repeat left; }
.default_login .administrative { float:left; background:url(../images/default/icon_key.gif) no-repeat left; margin-right:0px; }
.default_login .administrative a { color:#D80D0F; }
.default_login .lastlogin { clear:both; padding:5px; white-space:wrap; font-size:8pt; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -11,12 +11,6 @@ function doFocusUserId(fo_id) {
/* 로그인 후 */
function completeLogin(ret_obj, response_tags, params, fo_obj) {
if(fo_obj.remember_user_id && fo_obj.remember_user_id.checked) {
var expire = new Date();
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
xSetCookie('user_id', fo_obj.user_id.value, expire);
}
var url = current_url.setQuery('act','');
location.href = url;
}
@ -28,4 +22,18 @@ function completeOpenIDLogin(ret_obj, response_tags) {
}
/* 오픈 아이디 폼 변환 */
function toggleLoginForm(obj) {
if(xGetElementById('login').style.display != "none") {
xGetElementById('login').style.display = "none";
xGetElementById('openid_login').style.display = "block";
xGetElementById('use_open_id_2').checked = true;
xGetElementById('fo_openid_login_widget').user_id.focus();
} else {
xGetElementById('openid_login').style.display = "none";
xGetElementById('login').style.display = "block";
xGetElementById('use_open_id').checked = false;
xGetElementById('use_open_id_2').checked = false;
xGetElementById('fo_login_widget').user_id.focus();
}
}

View file

@ -12,40 +12,52 @@
xAddEventListener(window, "load", function(){ doFocusUserId("fo_login_widget"); });
</script>
<div class="box_login fc_01" id="box_login">
<form action="./" method="get" onsubmit="return procFilter(this, widget_login)" id="fo_login_widget">
<div class="form_field">
<div>
<input name="user_id" type="text" class="input" id="login_form_user_id" />
</div>
<div>
<input name="password" type="password" class="input" />
</div>
</div>
<div class="default_login" id="login">
<form action="./" method="post" onsubmit="return procFilter(this, widget_login)" id="fo_login_widget">
<div><input type="submit" value=" " class="submit" /></div>
<ul class="option">
<li><input type="checkbox" name="keep_signed" id="keepid" value="Y" onclick="if(this.checked) return confirm(keep_signed_msg);"/></li>
<li><label for="keepid">{$lang->keep_signed}</label></li>
</ul>
<ul class="extra_option">
<li><a href="{getUrl('act','dispMemberSignUpForm')}" class="fc_02 btn">{$lang->cmd_signup}</a></li>
<li><a href="{getUrl('act','dispMemberFindAccount')}" class="fc_02 btn">{$lang->cmd_find_member_account}</a></li>
</ul>
</form>
<div class="clear"></div>
<div class="form_field">
<input name="user_id" type="text" class="input" id="login_form_user_id" />
<input name="password" type="password" class="input" />
</div>
<input type="submit" value=" " class="submit" />
<!--@if($member_config->enable_ssl=='Y')-->
<p class="securitySignIn <!--@if($ssl_mode)-->SSL<!--@else-->noneSSL<!--@end-->">
<a href="#" onclick="toggleSecuritySignIn(); return false;">{$lang->security_sign_in}</a>
</p>
<!--@end-->
<p>
<input type="checkbox" name="keep_signed" id="keepid" value="Y" onclick="if(this.checked) return confirm(keep_signed_msg);"/>
<label for="keepid">{$lang->keep_signed}</label>
</p>
<!--@if($member_config->enable_openid=='Y')-->
<p>
<input name="use_open_id" id="use_open_id" type="checkbox" value="Y" onclick="toggleLoginForm(this); return false;"/>
<label for="use_open_id">Open ID</label>
</p>
<!--@end-->
<ul class="extra_option">
<li><a href="{getUrl('act','dispMemberSignUpForm')}">{$lang->cmd_signup}</a></li>
<li><a href="{getUrl('act','dispMemberFindAccount')}">{$lang->cmd_find_member_account}</a></li>
</ul>
</form>
<div class="clear"></div>
</div>
<!-- OpenID -->
<!--@if($member_config->enable_openid=='Y')-->
<div class="openid_login fc_01" id="box_login">
<form action="./" method="post" onsubmit="return procFilter(this, openid_login)" >
<div class="wButtonWrite">
<ul>
<li><input type="text" name="user_id" class="openid_user_id" /></li>
<li><span class="wButtonTypeA"><img src="./images/blank.gif" alt="" class="leftCap" /><input type="submit" value="{$lang->cmd_login}" accesskey="s" /><img src="./images/blank.gif" alt="" class="rightCap" /></span></li>
</ul>
</div>
<div class="default_login openid_login" id="openid_login">
<form action="./" method="post" onsubmit="return procFilter(this, openid_login)" id="fo_openid_login_widget">
<div class="form_field">
<div class="openIDTitle">
OpenID <input name="use_open_id_2" id="use_open_id_2" type="checkbox" value="Y" onclick="toggleLoginForm(this); return false;" checked="true"/>
</div>
<input type="text" name="user_id" class="input" />
</div>
<input type="submit" value=" " class="submit" />
</form>
</div>
<!--@end-->

View file

@ -1,13 +1,17 @@
<!-- colorset의 값에 따라 css 파일을 import 한다 -->
<!--@if($colorset=="default"||!$colorset)-->
<!--@if(!$colorset)-->
{@ $colorset = "default"}
<!--@end-->
<!--@if($colorset=="default")-->
<!--%import("css/default.css")-->
<!--@end-->
<!--%import("./filter/logout.xml")-->
<div class="box_login">
<div class="user_info">
<div class="fl"><div class="member_{$logged_info->member_srl} fl fc_01">{$logged_info->nick_name}</div></div>
<div class="fr tRight"><a href="{getUrl('act','dispMemberLogout')}" class="button"><span>{$lang->cmd_logout}</span></a></div>
<div class="default_login">
<div class="loginUser">
<div class="userNickName"><div class="member_{$logged_info->member_srl}">{$logged_info->nick_name}</div></div>
<a href="{getUrl('act','dispMemberLogout')}" class="logoutButton"><img src="./images/{$colorset}/logout_btn.gif" alt="{$lang->cmd_logout}" /></a>
</div>
<div class="hr_dot_01"></div>
@ -18,5 +22,5 @@
<!--@if($logged_info->is_admin=="Y")-->
<div class="item administrative"><a href="{getUrl('','module','admin')}" onclick="window.open(this.href);return false;">{$lang->cmd_management}</a></div>
<!--@end-->
<div class="item lastlogin fc_02">{$lang->last_login} : {zDate($logged_info->last_login, "Y-m-d H:i")}</div>
<div class="lastlogin">{$lang->last_login} : {zDate($logged_info->last_login, "Y-m-d H:i")}</div>
</div>

View file

@ -6,6 +6,13 @@
.login_black form .idpw { float:left; width:110px;}
.login_black form .idpw input { border:1px solid #6b6b6b; color:#cbcbcb; width:105px; background:#515151; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_black form .login { float:right;}
.login_black form p.securitySignIn { clear:both; padding:0 0 0 18px; margin:4px 0 0 0; }
.login_black form p.noneSSL { background:url("../images/none_ssl.png") no-repeat left top; }
.login_black form p.SSL { background:url("../images/ssl.png") no-repeat left top; }
.login_black form p.noneSSL a { color:#BF6801; text-decoration:none; }
.login_black form p.SSL a { color:#9CAC74; text-decoration:none; }
.login_black form p.save { margin:0; clear:both; padding:.3em 0;}
.login_black form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#black .login_black form p input { margin:-3px; }

View file

@ -6,6 +6,13 @@
.login_default form .idpw { float:left; width:110px; }
.login_default form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_default form .login { float:right;}
.login_default form p.securitySignIn { clear:both; padding:0 0 0 18px; margin:4px 0 0 0; }
.login_default form p.noneSSL { background:url("../images/none_ssl.png") no-repeat left top; }
.login_default form p.SSL { background:url("../images/ssl.png") no-repeat left top; }
.login_default form p.noneSSL a { color:#BF6801; text-decoration:none; }
.login_default form p.SSL a { color:#9CAC74; text-decoration:none; }
.login_default form p.save { margin:0; clear:both; padding:.3em 0;}
.login_default form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body .login_default form p input { margin:-3px; }

View file

@ -6,6 +6,13 @@
.login_white form .idpw { float:left; width:110px;}
.login_white form .idpw input { border:1px solid #c9c9c9; color:#282828; width:105px; background:#fbfbfb; padding:1px 5px; margin-bottom:2px; font:.9em Tahoma;}
.login_white form .login { float:right;}
.login_white form p.securitySignIn { clear:both; padding:0 0 0 18px; margin:4px 0 0 0; }
.login_white form p.noneSSL { background:url("../images/none_ssl.png") no-repeat left top; }
.login_white form p.SSL { background:url("../images/ssl.png") no-repeat left top; }
.login_white form p.noneSSL a { color:#BF6801; text-decoration:none; }
.login_white form p.SSL a { color:#9CAC74; text-decoration:none; }
.login_white form p.save { margin:0; clear:both; padding:.3em 0;}
.login_white form p.save input { vertical-align:middle; _margin:-3px;}
*:first-child+html body#white .login_white form p input { margin:-3px; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -11,12 +11,6 @@ function doFocusUserId(fo_id) {
/* 로그인 후 */
function completeLogin(ret_obj, response_tags, params, fo_obj) {
if(fo_obj.remember_user_id && fo_obj.remember_user_id.checked) {
var expire = new Date();
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
xSetCookie('user_id', fo_obj.user_id.value, expire);
}
var url = current_url.setQuery('act','');
location.href = url;
}

View file

@ -18,7 +18,7 @@
<fieldset id="login" class="login_{$colorset}">
<legend>{$lang->cmd_login}</legend>
<form action="./" method="get" onsubmit="return procFilter(this, widget_login)" id="fo_login_widget">
<form action="./" method="post" onsubmit="return procFilter(this, widget_login)" id="fo_login_widget">
<div class="idpwWrap">
<div class="idpw">
@ -27,11 +27,15 @@
</div>
<input type="image" src="./images/{$colorset}/buttonLogin.gif" alt="login" class="login" />
</div>
<!--@if($member_config->enable_ssl=='Y')-->
<p class="securitySignIn <!--@if($ssl_mode)-->SSL<!--@else-->noneSSL<!--@end-->">
<a href="#" onclick="toggleSecuritySignIn(); return false;">{$lang->security_sign_in}</a>
</p>
<!--@end-->
<p class="save">
<input type="checkbox" name="keep_signed" id="keepid" value="Y" onclick="if(this.checked) return confirm(keep_signed_msg);"/>
<label for="keepid">{$lang->keep_signed}</label>
<!--@if($member_config->enable_openid=='Y')-->
<br />
<input name="use_open_id" id="use_open_id" type="checkbox" value="Y" onclick="toggleLoginForm(this); return false;"/>