feat: 开放给第三方接口完善

master
yin5th 2023-09-26 09:59:15 +08:00
parent eb18d24fb4
commit 69e8b41587
4 changed files with 77 additions and 5 deletions

View File

@ -27,11 +27,13 @@ use app\api\validate\RegisterValidate;
use app\api\validate\LoginValidate; use app\api\validate\LoginValidate;
use think\exception\ValidateException; use think\exception\ValidateException;
use app\api\validate\OaLoginValidate; use app\api\validate\OaLoginValidate;
use think\response\Json;
class Account extends Api class Account extends Api
{ {
public $like_not_need_login = ['silentLogin', 'authLogin', 'register', 'login','mnplogin', 'codeurl', 'oalogin', 'oplogin','logout','smslogin', 'uinAppLogin', 'silentLogin', 'authLogin', 'scanCode', 'scanLogin']; public $like_not_need_login = ['silentLogin', 'authLogin', 'register', 'login','mnplogin', 'codeurl', 'oalogin',
'oplogin','logout','smslogin', 'uinAppLogin', 'silentLogin', 'authLogin', 'scanCode', 'scanLogin', 'apiLogin'];
/** /**
* 注册 * 注册
@ -167,7 +169,7 @@ class Account extends Api
/*** /***
* 短信登录 * 短信登录
* @return \think\response\Json * @return Json
*/ */
public function smsLogin() public function smsLogin()
{ {
@ -195,7 +197,7 @@ class Account extends Api
/** /**
* @notes 扫码登录 * @notes 扫码登录
* @return \think\response\Json * @return Json
* @author 段誉 * @author 段誉
* @date 2021/10/29 11:50 * @date 2021/10/29 11:50
*/ */
@ -211,7 +213,7 @@ class Account extends Api
/** /**
* @notes PC端扫码登录 * @notes PC端扫码登录
* @return \think\response\Json * @return Json
* @author 段誉 * @author 段誉
* @date 2021/10/29 18:00 * @date 2021/10/29 18:00
*/ */
@ -225,5 +227,20 @@ class Account extends Api
return JsonServer::success('', $result); return JsonServer::success('', $result);
} }
/**
* AppID登录
* 开放给第三方使用
*/
public function apiLogin(): Json
{
$post = $this->request->post();
if (empty($post['app_id']) || empty($post['app_secret'])) {
return JsonServer::error('参数错误');
}
$data = LoginLogic::apiLogin($post);
if (false === $data) {
return JsonServer::error(LoginLogic::getError() ?? '未知错误');
}
return JsonServer::success('登录成功',$data);
}
} }

View File

@ -24,6 +24,7 @@ use app\api\server\UserServer;
use app\common\basics\Logic; use app\common\basics\Logic;
use app\common\enum\ClientEnum; use app\common\enum\ClientEnum;
use app\common\model\distribution\Distribution; use app\common\model\distribution\Distribution;
use app\common\model\user\UserApi;
use app\common\server\WeChatServer; use app\common\server\WeChatServer;
use app\common\server\ConfigServer; use app\common\server\ConfigServer;
use app\common\model\Client_; use app\common\model\Client_;
@ -624,5 +625,45 @@ class LoginLogic extends Logic
} }
} }
/**
* 第三方接口登录 APPID和appSecret
*/
public static function apiLogin($post)
{
try {
if (!$userApi = UserApi::where('app_id', $post['app_id'])->where('app_secret', $post['app_secret'])->find()) {
throw new \Exception('账号错误');
}
$user = User::field(['id', 'nickname', 'avatar', 'level', 'disable', 'distribution_code', 'is_api', 'del'])
->where(['id' => $userApi['id']])
->findOrEmpty()->toArray();
if ($user['disable'] > 0) {
throw new \Exception('账号已禁用');
}
if ($user['del'] == 1) {
throw new \Exception('账号异常,请联系管理员');
}
if ($user['is_api'] != 1) {
throw new \Exception('账号API授权已关闭');
}
unset($user['del']);
$user['token'] = self::createSession($user['id'], ClientEnum::api);
if (empty($user['avatar'])) {
$user['avatar'] = UrlServer::getFileUrl(ConfigServer::get('website', 'user_image'));
} else {
$user['avatar'] = UrlServer::getFileUrl($user['avatar']);
}
return $user;
} catch (\Exception $e) {
self::$error = $e->getMessage();
return false;
}
}
} }

View File

@ -30,6 +30,7 @@ class ClientEnum
const pc = 5; const pc = 5;
const h5 = 6;//h5(非微信环境h5) const h5 = 6;//h5(非微信环境h5)
const backend = 7;//PC后台 const backend = 7;//PC后台
const api = 8;//第三方API登录
function getName($value) function getName($value)
{ {
@ -54,6 +55,9 @@ class ClientEnum
case self::backend: case self::backend:
$name = '后台'; $name = '后台';
break; break;
case self::api:
$name = 'API';
break;
} }
return $name; return $name;
} }
@ -69,6 +73,7 @@ class ClientEnum
self::ios => '苹果APP商城', self::ios => '苹果APP商城',
self::android => '安卓APP商城', self::android => '安卓APP商城',
self::backend => '后台', self::backend => '后台',
self::api => 'API',
]; ];
if ($type === true) { if ($type === true) {
return $desc; return $desc;

View File

@ -0,0 +1,9 @@
<?php
namespace app\common\model\user;
use app\common\basics\Models;
class UserApi extends Models
{
}