first commit

This commit is contained in:
pakerpale
2020-06-10 06:21:34 +09:00
commit 20c9739ba9
1913 changed files with 266257 additions and 0 deletions

214
application/libraries/Auth.php Executable file
View File

@@ -0,0 +1,214 @@
<?php
use Hybridauth\Provider\Facebook;
use Hybridauth\Provider\Twitter;
use GuzzleHttp\Client;
use DirkGroenen\Pinterest\Pinterest;
class Auth
{
private $CI;
private $response;
private $isRequest;
public function __construct($params = [])
{
$this->CI = get_instance();
}
public function setIsRequest($isRequest)
{
$this->isRequest = $isRequest;
return $this;
}
public function getResponse()
{
return $this->response;
}
public function auth($name = '')
{
$this->CI->config->load('social');
$method = $name ? $name : $this->CI->input->post('auth');
$method = $method ? $method : 'crossmap';
$this->$method();
}
private function crossmap()
{
$this->response = ['code' => 404];
$query = $this->CI->db->from('cm_user')
->where('userName', $this->CI->input->post('userName'))
->where('password', md5($this->CI->input->post('userPasswd')))->get();
if ($query->num_rows() == 1) {
$this->CI->load->library('session');
$user = [
'userName' => $this->CI->input->post('userName'),
'userID' => $query->row()->userID
];
$this->CI->session->set_userdata('auth', json_encode($user));
$this->response = [
'code' => 200
];
}else if($query->num_rows() > 1){
log_message('debug', 'duplicated users');
$this->response = [
'code' => 400
];
}else {
$this->response = [
'code' => 404
];
}
}
private function kakao()
{
if ($this->isRequest) {
redirect($this->CI->config->item('kakao_base_uri')
. '/oauth/authorize?client_id='
. $this->CI->config->item('kakao_app_key')
. '&redirect_uri='
. $this->CI->config->item('kakao_redirect_uri')
. '&response_type=code');
} else {
$code = $this->CI->input->get('code');
$client = new Client();
try {
$response = $client->request('POST', $this->CI->config->item('kakao_base_uri') . '/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => $this->CI->config->item('kakao_app_key'),
'redirect_uri' => $this->CI->config->item('kakao_redirect_uri'),
'code' => $code
]
]);
$response = json_decode($response->getBody());
$response = $client->request('POST', $this->CI->config->item('kakao_api_base_uri') . '/v2/user/me', [
'headers' => [
'Authorization' => 'Bearer ' . $response->access_token
],
'form_params' => ['property_keys' => ['kakao_account.email', 'kakao_account.age_range', 'kakao_account.birthday', 'kakao_account.gender']]
]);
$userProfile = $response->getBody();
log_mesage('info', $userProfile);
$this->connected('kakao', $userProfile);
} catch (GuzzleHttp\Exception\ClientException $e) {
log_message('debug', 'Kakao SNS login :: Oops, we ran into an issue! ClientException');
} catch (GuzzleHttp\Exception\RequestException $e) {
log_message('debug', 'Kakao SNS login :: Oops, we ran into an issue! RequestException');
}
}
}
private function facebook()
{
$config = [
'callback' => $this->CI->config->item('facebook_redirect_uri'),
'keys' => [
'id' => $this->CI->config->item('facebook_app_key'), //Required: your Facebook application id
'secret' => $this->CI->config->item('facebook_app_secret') //Required: your Facebook application secret
]
];
if ($this->isRequest) {
try {
$adapter = new Facebook($config);
$adapter->authenticate();
$isConnected = $adapter->isConnected();
$userProfile = $adapter->getUserProfile();
//Disconnect the adapter
$adapter->disconnect();
log_mesage('info', print_r($userProfile, ture));
$this->connected('facebook', $userProfile);
} catch (\Exception $e) {
echo 'Oops, we ran into an issue! ' . $e->getMessage();
}
}
}
private function twitter()
{
$config = [
'callback' => 'https://local.cmap.co.kr/oauth/twitter',
'keys' => [
'key' => $this->CI->config->item('twitter_app_key'),
'secret' => $this->CI->config->item('twitter_app_secret')
]
];
try {
$adapter = new Twitter($config);
$adapter->authenticate();
$accessToken = $adapter->getAccessToken();
$userProfile = $adapter->getUserProfile();
$adapter->disconnect();
// $apiResponse = $twitter->apiRequest('account/settings.json');
log_mesage('info', print_r($userProfile, ture));
$this->connected('twitter', $userProfile);
} catch (\Exception $e) {
log_message('debug', 'Twitter SNS login :: Oops, we ran into an issue!');
log_message('debug', $e->getMessage());
}
}
private function pinterest()
{
if ($this->isRequest) {
try {
$pinterest = new Pinterest($this->CI->config->item('pinterest_app_key'), $this->CI->config->item('pinterest_app_secret'));
$loginurl = $pinterest->auth->getLoginUrl($this->CI->config->item('pinterest_redirect_uri'), array('read_public'));
redirect($loginurl);
} catch (\Exception $e) {
log_message('debug', 'Pinterest SNS login :: Oops, we ran into an issue!');
log_message('debug', $e->getMessage());
}
} else {
$userProfile = '';
$this->connected('pinterest', $userProfile);
}
}
private function naver()
{
if ($this->isRequest) {
$url = 'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id='
. $this->CI->config->item('naver_app_key')
. '&redirect_uri='
. $this->CI->config->item('naver_redirect_uri')
. '&state='
. $this->CI->config->item('naver_app_state');
redirect($url);
}
}
private function connected($name, $userProfile)
{
$this->CI->library('session');
$username = $this->register($name, $userProfile);
if ($this->login($username, '')) { }
}
private function register($name, $userProfile)
{
return 'username';
}
public function login($username, $password)
{
$query = $this->db->where("userName", $username)->where("password", $password)->get("cm_user");
if ($query->num_rows() > 0) {
foreach ($query->result() as $rows) {
$data = array(
'userID' => $rows->userID,
'userName' => $rows->userName,
'logged_in' => true,
);
$this->session->set_userdata($data);
return true;
}
} else {
return false;
}
}
}