146 lines
4.0 KiB
PHP
146 lines
4.0 KiB
PHP
|
|
<?php
|
|||
|
|
namespace app\plugins\shopoauth;
|
|||
|
|
|
|||
|
|
use think\Db;
|
|||
|
|
use think\Controller;
|
|||
|
|
use app\service\UserService;
|
|||
|
|
use app\service\PluginsService;
|
|||
|
|
use app\plugins\shopoauth\ThinkOauth;
|
|||
|
|
use app\plugins\shopoauth\LoginEvent;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 第三方登入 API - 钩子入口
|
|||
|
|
* @author Guoguo
|
|||
|
|
* @blog http://gadmin.cojz8.com
|
|||
|
|
* @version 1.0.0
|
|||
|
|
* @datetime 2019年3月14日
|
|||
|
|
*/
|
|||
|
|
class Auth extends Controller
|
|||
|
|
{
|
|||
|
|
/**
|
|||
|
|
* 解绑
|
|||
|
|
* @author Devil
|
|||
|
|
* @blog http://gong.gg/
|
|||
|
|
* @version 1.0.0
|
|||
|
|
* @date 2019-03-15
|
|||
|
|
* @desc description
|
|||
|
|
* @param array $params [description]
|
|||
|
|
* @return [type] [description]
|
|||
|
|
*/
|
|||
|
|
public function remove($params = [])
|
|||
|
|
{
|
|||
|
|
if(!empty($params['type']))
|
|||
|
|
{
|
|||
|
|
$user = UserService::LoginUserInfo();
|
|||
|
|
if(!empty($user['id']))
|
|||
|
|
{
|
|||
|
|
Db::name('PluginsShopoauthOauth')->where(['platform'=>$params['type'], 'user_id'=>$user['id']])->delete();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$this->redirect(MyUrl('user/personal/index'));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 跳转授权登入
|
|||
|
|
* @author Guoguo
|
|||
|
|
* @blog http://gadmin.cojz8.com
|
|||
|
|
* @version 1.0.0
|
|||
|
|
* @datetime 2019年3月14日
|
|||
|
|
*/
|
|||
|
|
public function login($params = []){
|
|||
|
|
$sns = ThinkOauth::getInstance($params['type']);
|
|||
|
|
$this->redirect($sns->getRequestCodeURL());
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* 授权回调地址
|
|||
|
|
* @author Guoguo
|
|||
|
|
* @blog http://gadmin.cojz8.com
|
|||
|
|
* @version 1.0.0
|
|||
|
|
* @datetime 2019年3月14日
|
|||
|
|
*/
|
|||
|
|
public function callback($params = [])
|
|||
|
|
{
|
|||
|
|
if(empty($params['code']) || empty($params['type']))
|
|||
|
|
{
|
|||
|
|
return 'ERROR-10001——参数出错!';exit;
|
|||
|
|
}
|
|||
|
|
$sns = ThinkOauth::getInstance($params['type']);
|
|||
|
|
$token = $sns->getAccessToken($params['code'], []);
|
|||
|
|
|
|||
|
|
$type = $params['type'];
|
|||
|
|
|
|||
|
|
//获取当前登录用户信息
|
|||
|
|
if(is_array($token))
|
|||
|
|
{
|
|||
|
|
$even = new LoginEvent();
|
|||
|
|
$result = $even->$type($token);
|
|||
|
|
|
|||
|
|
/*校验是否登入*/
|
|||
|
|
$user = UserService::LoginUserInfo();
|
|||
|
|
$user_id = empty($user['id']) ? 0 : $user['id'];
|
|||
|
|
|
|||
|
|
//登入后返回信息
|
|||
|
|
if(!empty($result))
|
|||
|
|
{
|
|||
|
|
$oauth = [
|
|||
|
|
'user_id' => $user_id,
|
|||
|
|
'platform' => $result['type'],
|
|||
|
|
'openid' => $result['token']['openid'],
|
|||
|
|
'openname' => $result['name'],
|
|||
|
|
'access_token' => $result['token']['access_token'],
|
|||
|
|
'refresh_token' => $result['token']['refresh_token'],
|
|||
|
|
'expires_in' => $result['token']['expires_in'],
|
|||
|
|
'createtime' => time(),
|
|||
|
|
'updatetime' => time(),
|
|||
|
|
'logintime' => time()
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
//判断或者写入oauth表
|
|||
|
|
$where = ['openid'=>$oauth['openid']];
|
|||
|
|
$oauth_user = Db::name('PluginsShopoauthOauth')->where($where)->find();
|
|||
|
|
if(!empty($oauth_user))
|
|||
|
|
{
|
|||
|
|
$up_data = [
|
|||
|
|
'access_token' => $result['token']['access_token'],
|
|||
|
|
'refresh_token' => $result['token']['refresh_token'],
|
|||
|
|
'expires_in' => $result['token']['expires_in'],
|
|||
|
|
'updatetime' => time(),
|
|||
|
|
'logintime' => time()
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
//更新表数据
|
|||
|
|
//用户是否已绑定账号
|
|||
|
|
if(!empty($oauth_user['user_id']))
|
|||
|
|
{
|
|||
|
|
Db::name('PluginsShopoauthOauth')->where($where)->update($up_data);
|
|||
|
|
|
|||
|
|
//更新用户登录缓存数据
|
|||
|
|
UserService::UserLoginRecord($oauth_user['user_id']);
|
|||
|
|
$this->redirect('/');
|
|||
|
|
} else {
|
|||
|
|
Db::name('PluginsShopoauthOauth')->where($where)->update($up_data);
|
|||
|
|
session('oauth_id', $oauth['openid']);
|
|||
|
|
|
|||
|
|
//跳转注册页面
|
|||
|
|
$this->success('登入成功,请绑定或注册账号~', MyUrl('/index/user/reginfo'));
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$id = Db::name('PluginsShopoauthOauth')->insertGetId($oauth);
|
|||
|
|
if($user_id > 0)
|
|||
|
|
{
|
|||
|
|
UserService::UserLoginRecord($user_id);
|
|||
|
|
$this->redirect('/');
|
|||
|
|
} else {
|
|||
|
|
session('oauth_id', $oauth['openid']);
|
|||
|
|
$this->success('登入成功,请绑定或注册账号~', MyUrl('/index/user/reginfo'));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$this->error('系统出错~');
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$this->error('TOKEN-ERROR-10001——参数出错!~');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
?>
|