Files

42 lines
1.2 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Http\Middleware;
use App\Enum\ErrorEnum;
use App\Service\wx\WxTokenService;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* 小程序登录态
*
* 老项目的 AuthMiddleware 是先 $next($request) 跑完控制器、再检查 token
* 而且只判空不验签——等于没有鉴权。这里在进控制器之前就拦。
*/
class WxAuthMiddleware
{
public function handle(Request $request, Closure $next): Response
{
$user = WxTokenService::getInstance()->resolveUser($request->bearerToken());
if (empty($user)) {
return response()->json([
'code' => ErrorEnum::NOT_AUTH->value,
'message' => '请先登录',
'result' => [],
'type' => 'error',
]);
}
if ((int) ($user['status'] ?? 0) === 1) {
return response()->json([
'code' => ErrorEnum::NOT_AUTH->value,
'message' => '账号已被停用,请联系客服',
'result' => [],
'type' => 'error',
]);
}
$request->attributes->set('wx_user', $user);
return $next($request);
}
}