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

View File

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