feat : wx login

This commit is contained in:
2024-11-25 18:02:40 +08:00
parent 865ff6eb7e
commit 9c175fdb78
8 changed files with 175 additions and 9 deletions

View File

@@ -2,7 +2,45 @@
namespace App\Middleware\Api;
class JwtAuthMiddleware
{
use App\Constants\ApiCode;
use App\Lib\ApiReturn;
use App\Lib\Crypto\CryptoFactory;
use Hyperf\Context\Context;
use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class JwtAuthMiddleware implements MiddlewareInterface
{
public function __construct(
protected HttpResponse $response,
protected ApiReturn $apiReturn,
protected CryptoFactory $cryptoFactory,
){}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
// 获取头部token
$authorization = $request->getHeaderLine('Authorization');
if (empty($authorization)){
return $this->response->json(
$this->apiReturn->error(ApiCode::getMessage(ApiCode::LOGIN_ERROR), ApiCode::LOGIN_ERROR)
);
}
$authorization = str_replace("Bearer ", "", $authorization);
$userJwt = $this->cryptoFactory->cryptoClass('jwt', $authorization)->decrypt();
if (empty($userJwt)) {
return $this->response->json(
$this->apiReturn->error(ApiCode::getMessage(ApiCode::LOGIN_TOKEN_ERROR), ApiCode::LOGIN_TOKEN_ERROR)
);
}
Context::set('user_id',$userJwt['data']->id);
return $handler->handle($request);
}
}