WebMiddleware.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Middleware\Auth;
  4. use Hyperf\Di\Annotation\Inject;
  5. use Hyperf\HttpServer\Contract\RequestInterface;
  6. use Hyperf\HttpServer\Contract\ResponseInterface as HttpResponse;
  7. use Psr\Container\ContainerInterface;
  8. use Psr\Http\Message\ResponseInterface;
  9. use Psr\Http\Message\ServerRequestInterface;
  10. use Psr\Http\Server\MiddlewareInterface;
  11. use Psr\Http\Server\RequestHandlerInterface;
  12. use Hyperf\Context\Context;
  13. use App\JsonRpc\WebsiteServiceInterface;
  14. use Phper666\JWTAuth\JWT;
  15. class WebMiddleware implements MiddlewareInterface
  16. {
  17. protected ContainerInterface $container;
  18. protected RequestInterface $request;
  19. protected HttpResponse $response;
  20. protected JWT $JWT;
  21. /**
  22. * @var WebsiteServiceInterface
  23. */
  24. #[Inject]
  25. private $websiteServiceClient;
  26. public function __construct(ContainerInterface $container, HttpResponse $response, RequestInterface $request,Jwt $JWT)
  27. {
  28. $this->container = $container;
  29. $this->response = $response;
  30. $this->request = $request;
  31. $this->JWT = $JWT;
  32. }
  33. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  34. {
  35. $header = $request->getHeaders();
  36. var_dump("==============header:",$header);
  37. try {
  38. if($header && isset($header['siteid']) && $header['siteid'][0]!='null' && isset($header['siteid'][0])){
  39. Context::set("SiteId",intval($header['siteid'][0]));
  40. if ($header['siteid'][0]) {
  41. return $handler->handle($request);
  42. }
  43. }
  44. elseif($header && isset($header['origin']) && $header['origin'][0]!='null' && isset($header['origin'][0])){
  45. $origin = $header['origin'][0];
  46. $logindevice = explode("//", $origin);
  47. $data = [
  48. 'website_url'=>$logindevice[1]
  49. ];
  50. // var_dump("222:",$data);
  51. $result = $this->websiteServiceClient->getWebsiteId($data);
  52. // var_dump("3333333:",$result);
  53. if($result['code']==0 || !isset($result['data']['id']) || !$result['data']['id']){
  54. return $this->response->json(
  55. [
  56. 'code' => -1,
  57. 'data' => [],
  58. 'message' => '网站不存在',
  59. ]
  60. );
  61. }
  62. // var_dump("获取站点id:",$result);
  63. Context::set("SiteId",$result['data']['id']);
  64. if ($result) {
  65. return $handler->handle($request);
  66. }
  67. }else{
  68. return $this->response->json(
  69. [
  70. 'code' => -1,
  71. 'data' => [],
  72. 'message' => 'origin:必填',
  73. ]
  74. );
  75. }
  76. }catch (\Exception $e){
  77. var_dump("错误消息:",$e->getMessage(),$e->getCode());
  78. return $this->response->json(
  79. [
  80. 'code' => $e->getCode(),
  81. 'data' => [],
  82. 'message' => '网址必填:'.$e->getMessage(),
  83. ]
  84. );
  85. }
  86. return false;
  87. }
  88. }