From 7dba46f650a20783d9b1c5f47cf58a92fd3bdbfe Mon Sep 17 00:00:00 2001
From: thisgun
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('',
님의 회원가입을 진심으로 축하합니다.
-
+ ( SNS를 이용한 소셜로그인 한 회원은 회원메일인증을 하지 않습니다. 일반회원에게만 해당됩니다. )' : ''; ?>
+
> 사용
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
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('',
님의 회원가입을 진심으로 축하합니다.
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.