회원 탈퇴 부분 수정
This commit is contained in:
1 parent
520b99c0a5
commit
25bce8592d
8 files changed
+39
-185
No files matched your search
+15
-2
@@ -210,6 +210,13 @@ if(!isset($config['cf_social_login_use'])) {
|
||||
", true);
|
||||
}
|
||||
|
||||
//소셜 로그인 관련 필드 카카오 클라이언트 시크릿 추가
|
||||
if(!isset($config['cf_kakao_client_secret'])) {
|
||||
sql_query("ALTER TABLE `{$g5['config_table']}`
|
||||
ADD `cf_kakao_client_secret` varchar(100) NOT NULL DEFAULT '' AFTER `cf_kakao_rest_key`
|
||||
", true);
|
||||
}
|
||||
|
||||
// 소셜 로그인 관리 테이블 없을 경우 생성
|
||||
if(!sql_query(" DESC {$g5['social_profile_table']} ", false)) {
|
||||
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['social_profile_table']}` (
|
||||
@@ -439,7 +446,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_captcha">캡챠 선택<strong class="sound_only">필수</strong></label></th>
|
||||
<td colspan="3">
|
||||
<?php echo help('사용할 캡챠를 선택합니다.') ?>
|
||||
<?php echo help('사용할 캡챠를 선택합니다.<br>1) Kcaptcha 는 그누보드5의 기본캡챠입니다. ( 문자입력 )<br>2) reCAPTCHA V2 는 구글에서 서비스하는 원클릭 형식의 간편한 캡챠입니다. ( 모바일 친화적 UI )<br>3) Invisible reCAPTCHA 는 구글에서 서비스하는 안보이는 형식의 캡챠입니다. ( 간혹 퀴즈를 풀어야 합니다. )<br>') ?>
|
||||
<select name="cf_captcha" id="cf_captcha" required class="required">
|
||||
<option value="kcaptcha" <?php echo get_selected($config['cf_captcha'], 'kcaptcha') ; ?>>Kcaptcha</option>
|
||||
<option value="recaptcha" <?php echo get_selected($config['cf_captcha'], 'recaptcha') ; ?>>reCAPTCHA V2</option>
|
||||
@@ -1122,8 +1129,14 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
<td>
|
||||
<input type="text" name="cf_kakao_rest_key" value="<?php echo $config['cf_kakao_rest_key'] ?>" id="cf_kakao_rest_key" class="frm_input" size="40"> <a href="https://developers.kakao.com/apps/new" target="_blank" class="btn_frmline">앱 등록하기</a>
|
||||
</td>
|
||||
<th scope="row"><label for="cf_kakao_js_apikey">카카오 JavaScript 키</label></th>
|
||||
<th scope="row"><label for="cf_kakao_client_secret">카카오 Client Secret</label></th>
|
||||
<td>
|
||||
<input type="text" name="cf_kakao_client_secret" value="<?php echo $config['cf_kakao_client_secret'] ?>" id="cf_kakao_js_apikey" class="frm_input" size="45">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_kakao_js_apikey">카카오 JavaScript 키</label></th>
|
||||
<td colspan="3">
|
||||
<input type="text" name="cf_kakao_js_apikey" value="<?php echo $config['cf_kakao_js_apikey'] ?>" id="cf_kakao_js_apikey" class="frm_input" size="45">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -143,6 +143,7 @@ $sql = " update {$g5['config_table']}
|
||||
cf_google_clientid = '{$_POST['cf_google_clientid']}',
|
||||
cf_google_secret = '{$_POST['cf_google_secret']}',
|
||||
cf_kakao_rest_key = '{$_POST['cf_kakao_rest_key']}',
|
||||
cf_kakao_client_secret = '{$_POST['cf_kakao_client_secret']}',
|
||||
cf_social_servicelist = '{$cf_social_servicelist}',
|
||||
cf_captcha = '{$_POST['cf_captcha']}',
|
||||
cf_recaptcha_site_key = '{$_POST['cf_recaptcha_site_key']}',
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 소셜로그인 회원가입 정보 테이블
|
||||
$g5['social_profile_table'] = G5_TABLE_PREFIX.'member_social_profiles';
|
||||
// 소셜로그인 테이블 정보가 dbconfig에 없으면 소셜 테이블 정의
|
||||
if( !isset($g5['social_profile_table']) ){
|
||||
$g5['social_profile_table'] = G5_TABLE_PREFIX.'member_social_profiles';
|
||||
}
|
||||
|
||||
//플러그인 폴더 이름 및 스킨 폴더 이름
|
||||
define('G5_SOCIAL_LOGIN_DIR', 'social');
|
||||
|
||||
@@ -305,6 +305,7 @@ CREATE TABLE IF NOT EXISTS `g5_config` (
|
||||
`cf_naver_clientid` varchar(100) NOT NULL DEFAULT '',
|
||||
`cf_naver_secret` varchar(100) NOT NULL DEFAULT '',
|
||||
`cf_kakao_rest_key` varchar(100) NOT NULL DEFAULT '',
|
||||
`cf_kakao_client_secret` varchar(100) NOT NULL DEFAULT '',
|
||||
`cf_kakao_js_apikey` varchar(255) NOT NULL,
|
||||
`cf_captcha` varchar(100) NOT NULL DEFAULT '',
|
||||
`cf_recaptcha_site_key` varchar(100) NOT NULL DEFAULT '',
|
||||
|
||||
@@ -2911,6 +2911,11 @@ function member_delete($mb_id)
|
||||
// 게시판관리자인 경우 게시판관리자를 공백으로
|
||||
sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '$mb_id' ");
|
||||
|
||||
//소셜로그인에서 삭제 또는 해제
|
||||
if(function_exists('social_member_link_delete')){
|
||||
social_member_link_delete($mb_id);
|
||||
}
|
||||
|
||||
// 아이콘 삭제
|
||||
@unlink(G5_DATA_PATH.'/member/'.substr($mb_id,0,2).'/'.$mb_id.'.gif');
|
||||
}
|
||||
|
||||
@@ -106,6 +106,10 @@ class Hybrid_Providers_Kakao extends Hybrid_Provider_Model_OAuth2
|
||||
"code" => $code
|
||||
);
|
||||
|
||||
if( $this->api->client_secret && ($this->api->client_secret !== $this->api->client_id) ){
|
||||
$params['client_secret'] = $this->api->client_secret;
|
||||
}
|
||||
|
||||
$response = $this->request($this->api->token_url, $params, $this->api->curl_authenticate_method);
|
||||
$response = $this->parseRequestResult($response);
|
||||
if ( ! $response || ! isset($response->access_token) ) {
|
||||
|
||||
@@ -5,15 +5,14 @@
|
||||
* (c) 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
|
||||
*/
|
||||
/**
|
||||
* Hybrid_Providers_Facebook provider adapter based on OAuth2 protocol
|
||||
* Hybrid_Providers_Payco provider adapter based on OAuth2 protocol
|
||||
* Copyright (c) 2017 SIR - thisgun
|
||||
* http://sir.kr
|
||||
*
|
||||
*
|
||||
*/
|
||||
class Hybrid_Providers_Payco extends Hybrid_Provider_Model_OAuth2 {
|
||||
/**
|
||||
* default permissions, and a lot of them. You can change them from the configuration by setting the scope to what you want/need
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
||||
private $idNo;
|
||||
|
||||
/**
|
||||
@@ -208,179 +207,6 @@ class Hybrid_Providers_Payco extends Hybrid_Provider_Model_OAuth2 {
|
||||
$this->user->profile->sid = get_social_convert_id( $this->user->profile->identifier, $this->providerId );
|
||||
|
||||
return $this->user->profile;
|
||||
}
|
||||
/**
|
||||
* Attempt to retrieve the url to the cover image given the coverInfoURL
|
||||
*
|
||||
* @param string $coverInfoURL coverInfoURL variable
|
||||
* @return string url to the cover image OR blank string
|
||||
*/
|
||||
function getCoverURL($coverInfoURL) {
|
||||
try {
|
||||
$headers = get_headers($coverInfoURL);
|
||||
if (substr($headers[0], 9, 3) != "404") {
|
||||
$coverOBJ = json_decode(file_get_contents($coverInfoURL));
|
||||
if (array_key_exists('cover', $coverOBJ)) {
|
||||
return $coverOBJ->cover->source;
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
function getUserContacts() {
|
||||
$apiCall = '?fields=link,name';
|
||||
$returnedContacts = array();
|
||||
$pagedList = false;
|
||||
do {
|
||||
try {
|
||||
$response = $this->api->api('/me/friends' . $apiCall);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("User contacts request failed! {$this->providerId} returned an error {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
// Prepare the next call if paging links have been returned
|
||||
if (array_key_exists('paging', $response) && array_key_exists('next', $response['paging'])) {
|
||||
$pagedList = true;
|
||||
$next_page = explode('friends', $response['paging']['next']);
|
||||
$apiCall = $next_page[1];
|
||||
} else {
|
||||
$pagedList = false;
|
||||
}
|
||||
// Add the new page contacts
|
||||
$returnedContacts = array_merge($returnedContacts, $response['data']);
|
||||
} while ($pagedList == true);
|
||||
$contacts = array();
|
||||
foreach ($returnedContacts as $item) {
|
||||
$uc = new Hybrid_User_Contact();
|
||||
$uc->identifier = (array_key_exists("id", $item)) ? $item["id"] : "";
|
||||
$uc->displayName = (array_key_exists("name", $item)) ? $item["name"] : "";
|
||||
$uc->profileURL = (array_key_exists("link", $item)) ? $item["link"] : "https://www.facebook.com/profile.php?id=" . $uc->identifier;
|
||||
$uc->photoURL = "https://graph.facebook.com/" . $uc->identifier . "/picture?width=150&height=150";
|
||||
$contacts[] = $uc;
|
||||
}
|
||||
return $contacts;
|
||||
}
|
||||
/**
|
||||
* Update user status
|
||||
*
|
||||
* @param mixed $status An array describing the status, or string
|
||||
* @param string $pageid (optional) User page id
|
||||
* @return array
|
||||
* @throw Exception
|
||||
*/
|
||||
function setUserStatus($status, $pageid = null) {
|
||||
if (!is_array($status)) {
|
||||
$status = array('message' => $status);
|
||||
}
|
||||
if (is_null($pageid)) {
|
||||
$pageid = 'me';
|
||||
// if post on page, get access_token page
|
||||
} else {
|
||||
$access_token = null;
|
||||
foreach ($this->getUserPages(true) as $p) {
|
||||
if (isset($p['id']) && intval($p['id']) == intval($pageid)) {
|
||||
$access_token = $p['access_token'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_null($access_token)) {
|
||||
throw new Exception("Update user page failed, page not found or not writable!");
|
||||
}
|
||||
$status['access_token'] = $access_token;
|
||||
}
|
||||
try {
|
||||
$response = $this->api->api('/' . $pageid . '/feed', 'post', $status);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Update user status failed! {$this->providerId} returned an error {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
/**
|
||||
* {@inheridoc}
|
||||
*/
|
||||
function getUserStatus($postid) {
|
||||
try {
|
||||
$postinfo = $this->api->api("/" . $postid);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Cannot retrieve user status! {$this->providerId} returned an error: {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
return $postinfo;
|
||||
}
|
||||
/**
|
||||
* {@inheridoc}
|
||||
*/
|
||||
function getUserPages($writableonly = false) {
|
||||
if (( isset($this->config['scope']) && strpos($this->config['scope'], 'manage_pages') === false ) || (!isset($this->config['scope']) && strpos($this->scope, 'manage_pages') === false ))
|
||||
throw new Exception("User status requires manage_page permission!");
|
||||
try {
|
||||
$pages = $this->api->api("/me/accounts", 'get');
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("Cannot retrieve user pages! {$this->providerId} returned an error: {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
if (!isset($pages['data'])) {
|
||||
return array();
|
||||
}
|
||||
if (!$writableonly) {
|
||||
return $pages['data'];
|
||||
}
|
||||
$wrpages = array();
|
||||
foreach ($pages['data'] as $p) {
|
||||
if (isset($p['perms']) && in_array('CREATE_CONTENT', $p['perms'])) {
|
||||
$wrpages[] = $p;
|
||||
}
|
||||
}
|
||||
return $wrpages;
|
||||
}
|
||||
/**
|
||||
* load the user latest activity
|
||||
* - timeline : all the stream
|
||||
* - me : the user activity only
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
function getUserActivity($stream) {
|
||||
try {
|
||||
if ($stream == "me") {
|
||||
$response = $this->api->api('/me/feed');
|
||||
} else {
|
||||
$response = $this->api->api('/me/home');
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
throw new Exception("User activity stream request failed! {$this->providerId} returned an error: {$e->getMessage()}", 0, $e);
|
||||
}
|
||||
if (!$response || !count($response['data'])) {
|
||||
return array();
|
||||
}
|
||||
$activities = array();
|
||||
foreach ($response['data'] as $item) {
|
||||
if ($stream == "me" && $item["from"]["id"] != $this->api->getUser()) {
|
||||
continue;
|
||||
}
|
||||
$ua = new Hybrid_User_Activity();
|
||||
$ua->id = (array_key_exists("id", $item)) ? $item["id"] : "";
|
||||
$ua->date = (array_key_exists("created_time", $item)) ? strtotime($item["created_time"]) : "";
|
||||
if ($item["type"] == "video") {
|
||||
$ua->text = (array_key_exists("link", $item)) ? $item["link"] : "";
|
||||
}
|
||||
if ($item["type"] == "link") {
|
||||
$ua->text = (array_key_exists("link", $item)) ? $item["link"] : "";
|
||||
}
|
||||
if (empty($ua->text) && isset($item["story"])) {
|
||||
$ua->text = (array_key_exists("link", $item)) ? $item["link"] : "";
|
||||
}
|
||||
if (empty($ua->text) && isset($item["message"])) {
|
||||
$ua->text = (array_key_exists("message", $item)) ? $item["message"] : "";
|
||||
}
|
||||
if (!empty($ua->text)) {
|
||||
$ua->user->identifier = (array_key_exists("id", $item["from"])) ? $item["from"]["id"] : "";
|
||||
$ua->user->displayName = (array_key_exists("name", $item["from"])) ? $item["from"]["name"] : "";
|
||||
$ua->user->profileURL = "https://www.facebook.com/profile.php?id=" . $ua->user->identifier;
|
||||
$ua->user->photoURL = "https://graph.facebook.com/" . $ua->user->identifier . "/picture?type=square";
|
||||
$activities[] = $ua;
|
||||
}
|
||||
}
|
||||
return $activities;
|
||||
}
|
||||
} //end function getUserProfile
|
||||
|
||||
}
|
||||
@@ -305,7 +305,9 @@ function social_extends_get_keys($provider){
|
||||
// Kakao
|
||||
$r['Kakao'] = array(
|
||||
"enabled" => option_array_checked('kakao', $config['cf_social_servicelist']) ? true : false,
|
||||
"keys" => array("id" => $config['cf_kakao_rest_key'], "secret" => $config['cf_kakao_rest_key']),
|
||||
"keys" => array("id" => $config['cf_kakao_rest_key'],
|
||||
"secret" => $config['cf_kakao_client_secret'] ? $config['cf_kakao_client_secret'] : $config['cf_kakao_rest_key']
|
||||
),
|
||||
"redirect_uri" => get_social_callbackurl('kakao')
|
||||
);
|
||||
|
||||
|
||||
Reference in new issue
Block a user