From 7dba46f650a20783d9b1c5f47cf58a92fd3bdbfe Mon Sep 17 00:00:00 2001 From: thisgun Date: Fri, 17 Nov 2017 17:37:57 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=85=9C=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adm/config_form.php | 3 +- extend/social_login.extend.php | 5 +- lib/common.lib.php | 13 ++++ .../member/basic/register_result.skin.php | 2 +- plugin/social/includes/functions.php | 72 ++++++++++++++++--- plugin/social/register_member_update.php | 46 +++++++++--- skin/member/basic/register_result.skin.php | 2 +- .../member/basic/register_result.skin.php | 2 +- .../member/basic/register_result.skin.php | 2 +- 9 files changed, 122 insertions(+), 25 deletions(-) diff --git a/adm/config_form.php b/adm/config_form.php index c579d6505..d8220d822 100644 --- a/adm/config_form.php +++ b/adm/config_form.php @@ -878,7 +878,8 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) { - + ( SNS를 이용한 소셜로그인 한 회원은 회원메일인증을 하지 않습니다. 일반회원에게만 해당됩니다. )' : ''; ?> + > 사용 diff --git a/extend/social_login.extend.php b/extend/social_login.extend.php index 064497fdb..3e8c8f3a5 100644 --- a/extend/social_login.extend.php +++ b/extend/social_login.extend.php @@ -19,7 +19,7 @@ define('G5_SOCIAL_LOGIN_PATH', G5_PLUGIN_PATH.'/'.G5_SOCIAL_LOGIN_DIR); define('G5_SOCIAL_LOGIN_URL', G5_PLUGIN_URL.'/'.G5_SOCIAL_LOGIN_DIR); // 소셜로그인 SOCIAL_LOGIN_BASE_URL 기본값은 G5_SOCIAL_LOGIN_URL.'/' -define('SOCIAL_LOGIN_BASE_URL', G5_SOCIAL_LOGIN_URL.'/'); +define('G5_SOCIAL_LOGIN_BASE_URL', G5_SOCIAL_LOGIN_URL.'/'); if(G5_IS_MOBILE) { define('G5_SOCIAL_SKIN_PATH', G5_PATH.'/'.G5_MOBILE_DIR.'/'.G5_SKIN_DIR.'/'.G5_SOCIAL_LOGIN_DIR); @@ -38,7 +38,8 @@ define('G5_SOCIAL_USE_POPUP', ! is_mobile() ); // 모바일에서는 팝업사 //0 이면 체크를 하지 않습니다. define('G5_SOCIAL_DELETE_DAY', 0); -define('G5_SOCIAL_BASE_URL', https_url(G5_PLUGIN_DIR.'/'.G5_SOCIAL_LOGIN_DIR) ); +// 메일 인증관련, false 이면 메일인증을 받지 않고 로그인됩니다. true 이고 기본환경설정에서 메일인증설정이 활성화 되어 있는 경우 메일인증을 받아야만 로그인 됩니다. +define('G5_SOCIAL_CERTIFY_MAIL', false ); include_once(G5_SOCIAL_LOGIN_PATH.'/includes/functions.php'); ?> \ No newline at end of file diff --git a/lib/common.lib.php b/lib/common.lib.php index 5673d8cdc..c4233a34f 100644 --- a/lib/common.lib.php +++ b/lib/common.lib.php @@ -3291,6 +3291,19 @@ function check_write_token($bo_table) return true; } +function is_use_email_certify(){ + global $config; + + if( $config['cf_use_email_certify'] ){ + if( $config['cf_social_login_use'] && get_session('ss_social_provider') ){ //소셜 로그인을 사용한다면 + $tmp = (defined('G5_SOCIAL_CERTIFY_MAIL') && G5_SOCIAL_CERTIFY_MAIL) ? 1 : 0; + return $tmp; + } + } + + return $config['cf_use_email_certify']; +} + function get_call_func_cache($func, $args=array()){ static $cache = array(); diff --git a/mobile/skin/member/basic/register_result.skin.php b/mobile/skin/member/basic/register_result.skin.php index 4b7506adf..fb677f0c1 100644 --- a/mobile/skin/member/basic/register_result.skin.php +++ b/mobile/skin/member/basic/register_result.skin.php @@ -11,7 +11,7 @@ add_stylesheet('', 님의 회원가입을 진심으로 축하합니다.

- +

회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다. diff --git a/plugin/social/includes/functions.php b/plugin/social/includes/functions.php index 5577ed83c..8dce22a93 100644 --- a/plugin/social/includes/functions.php +++ b/plugin/social/includes/functions.php @@ -46,7 +46,7 @@ function get_social_convert_id($identifier, $service) function get_social_callbackurl($provider, $no_domain=false){ - $base_url = SOCIAL_LOGIN_BASE_URL; + $base_url = G5_SOCIAL_LOGIN_BASE_URL; if( $provider === 'kakao' && $no_domain ){ $base_url = '/'.ltrim(parse_url($base_url, PHP_URL_PATH), '/'); @@ -97,7 +97,7 @@ function social_login_get_provider_adapter( $provider ) return $g5['hybrid_auth']->authenticate($provider); } - $base_url = SOCIAL_LOGIN_BASE_URL; + $base_url = G5_SOCIAL_LOGIN_BASE_URL; $hauth_time = time(); $connect_data = array( @@ -268,7 +268,7 @@ function social_user_profile_replace( $mb_id, $provider, $profile ){ function social_build_provider_config($provider){ $setting = array( - 'base_url' => G5_SOCIAL_BASE_URL.'/', + 'base_url' => https_url(G5_PLUGIN_DIR.'/'.G5_SOCIAL_LOGIN_DIR).'/', 'providers' => array( $provider => array( 'enabled' => true, @@ -633,6 +633,50 @@ function social_register_member_check($member){ return $member; } +function social_profile_img_resize($path, $file_url, $width, $height){ + + list($w, $h, $ext) = @getimagesize($file_url); + if( $w && $h && $ext ){ + $ratio = max($width/$w, $height/$h); + $h = ceil($height / $ratio); + $x = ($w - $width / $ratio) / 2; + $w = ceil($width / $ratio); + + $tmp = imagecreatetruecolor($width, $height); + + if($ext == 1){ + $image = imagecreatefromgif($file_url); + } else if($ext == 3) { + $image = imagecreatefrompng($file_url); + } else { + $image = imagecreatefromjpeg($file_url); + } + imagecopyresampled($tmp, $image, + 0, 0, + $x, 0, + $width, $height, + $w, $h); + + switch ($ext) { + case '2': + imagejpeg($tmp, $path, 100); + break; + case '3': + imagepng($tmp, $path, 0); + break; + case '1': + imagegif($tmp, $path); + break; + } + + chmod($path, G5_FILE_PERMISSION); + + /* cleanup memory */ + imagedestroy($image); + imagedestroy($tmp); + } +} + function social_is_login_check(){ //소셜 로그인이 맞는지 체크합니다. @@ -761,15 +805,27 @@ function social_login_success_after($mb, $link='', $mode='', $tmp_create_info=ar } if($mode=='register'){ //회원가입 했다면 + + //메일인증을 사용한다면 + if( defined('G5_SOCIAL_CERTIFY_MAIL') && G5_SOCIAL_CERTIFY_MAIL && $config['cf_use_email_certify'] ){ - //로그인 처리 한다. - // 회원아이디 세션 생성 - set_session('ss_mb_id', $mb['mb_id']); - // FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106 - set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'])); + } else { + //로그인 처리 합니다. + // 회원아이디 세션 생성 + set_session('ss_mb_id', $mb['mb_id']); + set_session('ss_mb_reg', $mb['mb_id']); + } + if( !empty($user_profile->photoURL) ){ //회원 프로필 사진이 있다면 //해당 처리 + + $mb_dir = G5_DATA_PATH.'/member/'.substr($mb_id,0,2); + @mkdir($mb_dir, G5_DIR_PERMISSION); + @chmod($mb_dir, G5_DIR_PERMISSION); + $dest_path = "$mb_dir/$mb_id.gif"; + + social_profile_img_resize($dest_path, $user_profile->photoURL, $config['cf_member_icon_width'], $config['cf_member_icon_height'] ); } return; diff --git a/plugin/social/register_member_update.php b/plugin/social/register_member_update.php index dc94a8c43..be29db0fa 100644 --- a/plugin/social/register_member_update.php +++ b/plugin/social/register_member_update.php @@ -69,6 +69,13 @@ $data = array( 'mb_name' => $mb_name, ); +$mb_email_certify = G5_TIME_YMDHIS; + +//메일인증을 사용한다면 +if( defined('G5_SOCIAL_CERTIFY_MAIL') && G5_SOCIAL_CERTIFY_MAIL && $config['cf_use_email_certify'] ){ + $mb_email_certify = ''; +} + // 회원정보 입력 $sql = " insert into {$g5['member_table']} set mb_id = '{$mb_id}', @@ -77,7 +84,7 @@ $sql = " insert into {$g5['member_table']} mb_nick = '{$mb_nick}', mb_nick_date = '".G5_TIME_YMD."', mb_email = '{$mb_email}', - mb_email_certify = '".G5_TIME_YMDHIS."', + mb_email_certify = '".$mb_email_certify."', mb_today_login = '".G5_TIME_YMDHIS."', mb_datetime = '".G5_TIME_YMDHIS."', mb_ip = '{$_SERVER['REMOTE_ADDR']}', @@ -107,20 +114,39 @@ if($result) { mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1); } - set_session('ss_mb_id', $mb_id); - - set_session('ss_mb_reg', $mb_id); - //소셜 로그인 계정 추가 if( function_exists('social_login_success_after') ){ $mb = get_member($mb_id); social_login_success_after($mb, '', 'register'); } + // 메일인증을 사용한다면 + if( ! $mb_email_certify ){ + $subject = '['.$config['cf_title'].'] 인증확인 메일입니다.'; + + // 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용 + $mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand())); + + sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' "); + + $certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5; + + ob_start(); + include_once (G5_BBS_PATH.'/register_form_update_mail3.php'); + $content = ob_get_contents(); + ob_end_clean(); + + mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1); + } + + // 사용자 코드 실행 + @include_once ($member_skin_path.'/register_form_update.tail.skin.php'); + + goto_url(G5_HTTP_BBS_URL.'/register_result.php'); + +} else { + + alert('회원 가입 오류!', G5_URL ); + } - -// 사용자 코드 실행 -@include_once (get_social_skin_path().'/register_form_update.tail.skin.php'); - -goto_url(G5_HTTP_BBS_URL.'/register_result.php'); ?> \ No newline at end of file diff --git a/skin/member/basic/register_result.skin.php b/skin/member/basic/register_result.skin.php index 9188d0751..2072485a3 100644 --- a/skin/member/basic/register_result.skin.php +++ b/skin/member/basic/register_result.skin.php @@ -12,7 +12,7 @@ add_stylesheet('', 님의 회원가입을 진심으로 축하합니다.

- +

회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다. diff --git a/theme/basic/mobile/skin/member/basic/register_result.skin.php b/theme/basic/mobile/skin/member/basic/register_result.skin.php index 4b7506adf..fb677f0c1 100644 --- a/theme/basic/mobile/skin/member/basic/register_result.skin.php +++ b/theme/basic/mobile/skin/member/basic/register_result.skin.php @@ -11,7 +11,7 @@ add_stylesheet('', 님의 회원가입을 진심으로 축하합니다.

- +

회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다. diff --git a/theme/basic/skin/member/basic/register_result.skin.php b/theme/basic/skin/member/basic/register_result.skin.php index 9188d0751..2072485a3 100644 --- a/theme/basic/skin/member/basic/register_result.skin.php +++ b/theme/basic/skin/member/basic/register_result.skin.php @@ -12,7 +12,7 @@ add_stylesheet('', 님의 회원가입을 진심으로 축하합니다.

- +

회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.