rkljw 2 months ago
parent
commit
dcfa875727
1 changed files with 105 additions and 81 deletions
  1. 105 81
      app/Middleware/Auth/FooMiddleware.php

+ 105 - 81
app/Middleware/Auth/FooMiddleware.php

@@ -1,81 +1,105 @@
-<?php
+<?php
-
+
-declare(strict_types=1);
+declare(strict_types=1);
-
+
-namespace App\Middleware\Auth;
+namespace App\Middleware\Auth;
-
+
-use Hyperf\HttpServer\Contract\RequestInterface;
+use Hyperf\Di\Annotation\Inject;
-use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
+use Hyperf\HttpServer\Contract\RequestInterface;
-use Psr\Container\ContainerInterface;
+use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
-use Psr\Http\Message\ResponseInterface;
+use Psr\Container\ContainerInterface;
-use Psr\Http\Message\ServerRequestInterface;
+use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Server\MiddlewareInterface;
+use Psr\Http\Message\ServerRequestInterface;
-use Psr\Http\Server\RequestHandlerInterface;
+use Psr\Http\Server\MiddlewareInterface;
-use Hyperf\Context\Context;
+use Psr\Http\Server\RequestHandlerInterface;
-
+use Hyperf\Context\Context;
-use Phper666\JWTAuth\JWT;
+use App\JsonRpc\WebsiteServiceInterface;
-class FooMiddleware implements MiddlewareInterface
+use Phper666\JWTAuth\JWT;
-{
+class FooMiddleware implements MiddlewareInterface
-    protected ContainerInterface $container;
+{
-
+    protected ContainerInterface $container;
-    protected RequestInterface $request;
+
-
+    protected RequestInterface $request;
-    protected HttpResponse $response;
+
-    protected JWT $JWT;
+    protected HttpResponse $response;
-
+    protected JWT $JWT;
-    public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT)
+    /**
-    {
+     * @var WebsiteServiceInterface
-        $this->container = $container;
+     */
-        $this->response = $response;
+    #[Inject]
-        $this->request = $request;
+    private $websiteServiceClient;
-        $this->JWT = $JWT;
+    public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT)
-
+    {
-    }
+        $this->container = $container;
-
+        $this->response = $response;
-    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
+        $this->request = $request;
-    {
+        $this->JWT = $JWT;
-
+
-        $header = $request->getHeaders();
+    }
-        try {
+
-            if($header &&  isset($header['token']) && $header['token'][0]!='null' && $header['token'][0]!='' && isset($header['token'][0])){
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
-                var_dump("token类型:",$header['token'][0]);
+    {
-                $ver = $this->JWT->getClaimsByToken($header['token'][0]);
+
-                $tokenTime =  $this->JWT->getTokenDynamicCacheTime($header['token'][0]);
+        $header = $request->getHeaders();
-                if($tokenTime==0){
+        try {
-                   return $this->response->json(
+            if($header &&  isset($header['token']) && $header['token'][0]!='null' && $header['token'][0]!='' && isset($header['token'][0])){
-                       [
+                var_dump("token类型:",$header['token'][0]);
-                           'code' => -1,
+                $ver = $this->JWT->getClaimsByToken($header['token'][0]);
-                           'data' => [],
+                $tokenTime =  $this->JWT->getTokenDynamicCacheTime($header['token'][0]);
-                           'message' => 'token无效,请重新登录',
+                if($tokenTime==0){
-                       ]
+                   return $this->response->json(
-                   );
+                       [
-                }
+                           'code' => -1,
-//                var_dump("中间件:",$ver);
+                           'data' => [],
-                Context::set("UserId",$ver['uid']);
+                           'message' => 'token无效,请重新登录',
-                Context::set("TypeId",$ver['type_id']);
+                       ]
-                if ($ver) {
+                   );
-                    return $handler->handle($request);
+                }
-                }
+                if($header['userurl'][0]){
-            }else{
+                    $origin = $header['userurl'][0];
-                return $this->response->json(
+                    $data = [
-                    [
+                        'website_url'=>$origin
-                        'code' => -1,
+                    ];
-                        'data' => [],
+
-                        'message' => 'token无效,请重新登录',
+                    $result = $this->websiteServiceClient->getWebsiteId($data);
-                    ]
+                    if(!isset($result['data']['id']) || !$result['data']['id']){
-                );
+                        return $this->response->json(
-            }
+                            [
-
+                                'code' => -1,
-        }catch (\Exception $e){
+                                'data' => [],
-            var_dump("错误消息1:",$e->getMessage(),$e->getCode());
+
-            return $this->response->json(
+                                'message' => '网站不存在...',
-                [
+                            ]
-                    'code' => $e->getCode(),
+                        );
-                    'data' => [],
+                    }
-                    'message' => $e->getMessage(),
+                    Context::set("SiteId",$result['data']['id']);
-                ]
+                }
-            );
+//                var_dump("中间件:",$ver);
-        }
+                Context::set("UserId",$ver['uid']);
-        return false;
+                Context::set("TypeId",$ver['type_id']);
-    }
+                if ($ver) {
-}
+                    return $handler->handle($request);
+                }
+            }else{
+                return $this->response->json(
+                    [
+                        'code' => -1,
+                        'data' => [],
+                        'message' => 'token无效,请重新登录',
+                    ]
+                );
+            }
+
+        }catch (\Exception $e){
+            var_dump("错误消息1:",$e->getMessage(),$e->getCode());
+            return $this->response->json(
+                [
+                    'code' => $e->getCode(),
+                    'data' => [],
+                    'message' => $e->getMessage(),
+                ]
+            );
+        }
+        return false;
+    }
+}