소셜 회원가입 코드 정리

This commit is contained in:
thisgun
2017-11-17 17:37:57 +09:00
parent 604531906a
commit 7dba46f650
9 changed files with 122 additions and 25 deletions
+2 -1
View File
@@ -878,7 +878,8 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<tr>
<th scope="row"><label for="cf_use_email_certify">메일인증 사용</label></th>
<td>
<?php echo help('메일에 배달된 인증 주소를 클릭하여야 회원으로 인정합니다.'); ?>
<?php $tmp = !(defined('G5_SOCIAL_CERTIFY_MAIL') && G5_SOCIAL_CERTIFY_MAIL) ? '<br>( SNS를 이용한 소셜로그인 한 회원은 회원메일인증을 하지 않습니다. 일반회원에게만 해당됩니다. )' : ''; ?>
<?php echo help('메일에 배달된 인증 주소를 클릭하여야 회원으로 인정합니다.'.$tmp); ?>
<input type="checkbox" name="cf_use_email_certify" value="1" id="cf_use_email_certify" <?php echo $config['cf_use_email_certify']?'checked':''; ?>> 사용
</td>
</tr>
+3 -2
View File
@@ -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');
?>
+13
View File
@@ -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();
@@ -11,7 +11,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.<br>
</p>
<?php if ($config['cf_use_email_certify']) { ?>
<?php if (is_use_email_certify()) { ?>
<p>
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
+64 -8
View File
@@ -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;
+36 -10
View File
@@ -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.'&amp;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');
?>
+1 -1
View File
@@ -12,7 +12,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.<br>
</p>
<?php if ($config['cf_use_email_certify']) { ?>
<?php if (is_use_email_certify()) { ?>
<p>
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
@@ -11,7 +11,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.<br>
</p>
<?php if ($config['cf_use_email_certify']) { ?>
<?php if (is_use_email_certify()) { ?>
<p>
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
@@ -12,7 +12,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
<strong><?php echo get_text($mb['mb_name']); ?></strong>님의 회원가입을 진심으로 축하합니다.<br>
</p>
<?php if ($config['cf_use_email_certify']) { ?>
<?php if (is_use_email_certify()) { ?>
<p>
회원 가입 시 입력하신 이메일 주소로 인증메일이 발송되었습니다.<br>
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.