소셜 회원가입 코드 정리
This commit is contained in:
+2
-1
@@ -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>
|
||||
|
||||
@@ -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');
|
||||
?>
|
||||
@@ -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>
|
||||
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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');
|
||||
?>
|
||||
@@ -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>
|
||||
발송된 인증메일을 확인하신 후 인증처리를 하시면 사이트를 원활하게 이용하실 수 있습니다.
|
||||
|
||||
Reference in New Issue
Block a user