添加:移动端商户登录后 服务端生成并且解析token,判断登录是否有效,同时记录登录态及相关信息

This commit is contained in:
wuhui_zzw 2024-02-29 10:01:16 +08:00
parent 04751a6c8f
commit 8f292b9963
2 changed files with 29 additions and 42 deletions

View File

@ -2,7 +2,8 @@
namespace app\common\middleware;
use app\common\repositories\user\UserRepository;
use app\common\repositories\system\merchant\MerchantAdminRepository;
use app\common\repositories\system\merchant\MerchantRepository;
use app\Request;
use crmeb\exceptions\AuthException;
use crmeb\services\JwtTokenService;
@ -17,24 +18,13 @@ class ShopTokenMiddleware extends BaseMiddleware{
public function before(Request $request){
$force = $this->getArg(0, true);
try {
$token = trim($request->header('X-Token'));
throw new ValidateException('请登录');
$token = trim($request->header('Shop-Token'));
if (strpos($token, 'Bearer') === 0) $token = trim(substr($token, 6));
if (!$token) throw new ValidateException('请登录');
/**
* @var UserRepository $repository
* @var MerchantAdminRepository $repository
*/
$repository = app()->make(UserRepository::class);
$repository = app()->make(MerchantAdminRepository::class);
$service = new JwtTokenService();
try {
$payload = $service->parseToken($token);
@ -44,47 +34,42 @@ class ShopTokenMiddleware extends BaseMiddleware{
} catch (Throwable $e) {//Token 过期
throw new AuthException('token 已过期');
}
if ('user' != $payload->jti[1])
throw new AuthException('无效的 token');
if ('mer' != $payload->jti[1]) throw new AuthException('无效的 token');
$user = $repository->get($payload->jti[0]);
if (!$user)
throw new AuthException('用户不存在');
if (!$user['status'])
throw new AuthException('用户已被禁用');
if ($user['cancel_time'])
throw new AuthException('用户不存在');
$admin = $repository->get($payload->jti[0]);
if (!$admin) throw new AuthException('账号不存在');
if (!$admin['status']) throw new AuthException('账号已被禁用');
/**
* @var MerchantRepository $merchantRepository
*/
$merchantRepository = app()->make(MerchantRepository::class);
$merchant = $merchantRepository->get($admin->mer_id);
if (!$merchant || !$merchant['status'])
throw new AuthException('商户已被锁定');
} catch (Throwable $e) {
if ($force)
throw $e;
$request->macro('isLogin', function () {
if ($force) throw $e;
$request->macro('shopIsLogin', function () {
return false;
});
$request->macros(['tokenInfo', 'uid', 'userInfo', 'token'], function () {
$request->macros(['merchantType', 'shopMerId'], function () {
throw new AuthException('请登录');
});
return;
}
$repository->updateToken($token);
$request->macro('isLogin', function () {
$request->macro('shopIsLogin', function () {
return true;
});
$request->macro('userType', function () {
return 1;
$request->macro('merchantType', function () use (&$merchant) {
return $merchant->merchant_type;
});
$request->macro('tokenInfo', function () use (&$payload) {
return $payload;
});
$request->macro('token', function () use (&$token) {
return $token;
});
$request->macro('uid', function () use (&$user) {
return $user->uid;
});
$request->macro('userInfo', function () use (&$user) {
return $user;
$request->macro('merchantId', function () use (&$admin) {
return $admin->mer_id;
});
}

View File

@ -131,6 +131,8 @@ class Supplier extends BaseController{
return app('json')->success($data);
}
/**
* Common: 获取全部供应商商品
* Author: wu-hui