163 lines
5.1 KiB
PHP
163 lines
5.1 KiB
PHP
<?php
|
|
if (!defined('_GNUBOARD_')) exit;
|
|
|
|
if( ! $config['cf_social_login_use']) { //소셜 로그인을 사용하지 않으면
|
|
return;
|
|
}
|
|
|
|
$socials = social_get_provider_service_name('', 'all');
|
|
|
|
$session_id = session_id();
|
|
|
|
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
|
?>
|
|
|
|
<li>
|
|
<label class="frm_label">SNS 로그인 관리</label>
|
|
<div class="reg-form sns-wrap-reg">
|
|
<div class="sns-wrap">
|
|
|
|
<?php foreach( $socials as $social=>$provider_name ){
|
|
|
|
if( !option_array_checked($social, $config['cf_social_servicelist'])) {
|
|
continue;
|
|
}
|
|
|
|
$social_nonce = social_nonce_create($social, $session_id);
|
|
$add_class='';
|
|
$title='';
|
|
if( in_array($social, $my_provides) ){
|
|
|
|
$link_href = G5_SOCIAL_LOGIN_URL.'/unlink.php?provider='.$social.'&social_nonce='.$social_nonce;
|
|
|
|
$title = $provider_name.' 연결을 해제합니다.';
|
|
} else {
|
|
$add_class = ' sns-icon-not';
|
|
|
|
$link_href = $self_url.'?provider='.$social.'&mylink=1&url='.$urlencode;
|
|
|
|
$title = $provider_name.' 계정을 연결 합니다.';
|
|
|
|
}
|
|
?>
|
|
|
|
<a href="<?php echo $link_href; ?>" id="sns-<?php echo $social; ?>" class="sns-icon social_link sns-<?php echo $social; ?><?php echo $add_class; ?>" title="<?php echo $title; ?>" data-provider="<?php echo $social; ?>" ><span class="ico"></span><span class="txt"><?php echo $provider_name; ?> 로그인</span></a>
|
|
|
|
<?php } //end foreach ?>
|
|
|
|
</div>
|
|
</div>
|
|
</li>
|
|
|
|
<script>
|
|
|
|
function social_get_nonce(provider){
|
|
var socials = [];
|
|
|
|
<?php foreach( $socials as $social=>$v ){ ?>
|
|
socials["<?php echo $social; ?>"] = "<?php echo social_nonce_create($social, $session_id); ?>";
|
|
<?php } ?>
|
|
|
|
return (typeof socials[provider] != 'undefined') ? socials[provider] : '';
|
|
}
|
|
|
|
function social_link_fn(provider){
|
|
|
|
provider = provider.toLowerCase();
|
|
|
|
var $icon = jQuery("#sns-"+provider);
|
|
|
|
if( $icon.length ){
|
|
|
|
var social_url = "<?php echo G5_SOCIAL_LOGIN_URL; ?>",
|
|
link_href = social_url+"/unlink.php?provider="+provider+"&social_nonce="+social_get_nonce(provider),
|
|
atitle = provider+" 연결을 해제합니다.";
|
|
|
|
$icon.attr({"href":link_href, "title":atitle}).removeClass("sns-icon-not");
|
|
|
|
alert('연결 되었습니다');
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
jQuery(function($){
|
|
|
|
var social_img_path = "<?php echo G5_SOCIAL_LOGIN_URL; ?>",
|
|
self_url = "<?php echo $self_url; ?>",
|
|
urlencode = "<?php echo $urlencode; ?>";
|
|
|
|
$(".sns-wrap").on("click", ".social_link", function(e){
|
|
e.preventDefault();
|
|
|
|
var othis = $(this);
|
|
|
|
if( ! othis.hasClass('sns-icon-not') ){ //소셜계정 해제하기
|
|
|
|
if (!confirm('정말 이 계정 연결을 해제하시겠습니까?')) {
|
|
return false;
|
|
}
|
|
|
|
var ajax_url = "<?php echo G5_SOCIAL_LOGIN_URL.'/unlink.php' ?>",
|
|
mb_id = '',
|
|
provider = $(this).attr("data-provider");
|
|
|
|
if( ! provider ){
|
|
alert("잘못된 요청! provider 값이 없습니다.");
|
|
return false;
|
|
}
|
|
|
|
$.ajax({
|
|
url: ajax_url,
|
|
type: 'POST',
|
|
data: {
|
|
'provider': provider,
|
|
'mb_id': mb_id,
|
|
'nonce' : social_get_nonce(provider)
|
|
},
|
|
dataType: 'json',
|
|
cache : false,
|
|
async: false,
|
|
success: function(data, textStatus) {
|
|
if (data.error) {
|
|
alert(data.error);
|
|
return false;
|
|
} else {
|
|
var atitle = provider+" 계정을 연결 합니다.",
|
|
link_href = self_url+"?provider="+provider+"&mylink=1&url="+urlencode;
|
|
|
|
othis.attr({"href":link_href, "title":atitle}).addClass("sns-icon-not");
|
|
|
|
}
|
|
},
|
|
error: function(data) {
|
|
try { console.log(data) } catch (e) { alert(data.error) };
|
|
}
|
|
});
|
|
|
|
} else { //소셜계정 연결하기
|
|
|
|
var pop_url = $(this).attr("href");
|
|
var is_popup = "<?php echo G5_SOCIAL_USE_POPUP; ?>";
|
|
|
|
if( is_popup ){
|
|
var newWin = window.open(
|
|
pop_url,
|
|
"social_sing_on",
|
|
"location=0,status=0,scrollbars=0,width=600,height=500"
|
|
);
|
|
|
|
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
|
|
alert('브라우저에서 팝업이 차단되어 있습니다. 팝업 활성화 후 다시 시도해 주세요.');
|
|
|
|
} else {
|
|
location.replace(pop_url);
|
|
}
|
|
|
|
}
|
|
return false;
|
|
});
|
|
});
|
|
</script>
|