Maurits van der Schee 5 years ago
parent
commit
bd1af34bdf

+ 53
- 54
api.php View File

247
     public function __toString();
247
     public function __toString();
248
 }
248
 }
249
 
249
 
250
+// file: src/Psr/Http/Server/MiddlewareInterface.php
251
+
252
+interface MiddlewareInterface
253
+{
254
+    
255
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface;
256
+}
257
+
258
+// file: src/Psr/Http/Server/RequestHandlerInterface.php
259
+
260
+interface RequestHandlerInterface
261
+{
262
+    
263
+    public function handle(ServerRequestInterface $request): ResponseInterface;
264
+}
265
+
250
 // file: src/Nyholm/Psr7/Factory/Psr17Factory.php
266
 // file: src/Nyholm/Psr7/Factory/Psr17Factory.php
251
 
267
 
252
 final class Psr17Factory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface
268
 final class Psr17Factory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface
4419
     }
4435
     }
4420
 }
4436
 }
4421
 
4437
 
4422
-// file: src/Tqdev/PhpCrudApi/Middleware/Base/Handler.php
4423
-
4424
-interface Handler
4425
-{
4426
-    public function handle(ServerRequestInterface $request): ResponseInterface;
4427
-}
4428
-
4429
 // file: src/Tqdev/PhpCrudApi/Middleware/Base/Middleware.php
4438
 // file: src/Tqdev/PhpCrudApi/Middleware/Base/Middleware.php
4430
 
4439
 
4431
-abstract class Middleware implements Handler
4440
+abstract class Middleware implements MiddlewareInterface
4432
 {
4441
 {
4433
     protected $next;
4442
     protected $next;
4434
     protected $responder;
4443
     protected $responder;
4441
         $this->properties = $properties;
4450
         $this->properties = $properties;
4442
     }
4451
     }
4443
 
4452
 
4444
-    public function setNext(Handler $handler) /*: void*/
4445
-    {
4446
-        $this->next = $handler;
4447
-    }
4448
-
4449
     protected function getArrayProperty(string $key, string $default): array
4453
     protected function getArrayProperty(string $key, string $default): array
4450
     {
4454
     {
4451
         return array_filter(array_map('trim', explode(',', $this->getProperty($key, $default))));
4455
         return array_filter(array_map('trim', explode(',', $this->getProperty($key, $default))));
4479
 
4483
 
4480
 // file: src/Tqdev/PhpCrudApi/Middleware/Router/Router.php
4484
 // file: src/Tqdev/PhpCrudApi/Middleware/Router/Router.php
4481
 
4485
 
4482
-interface Router extends Handler
4486
+interface Router extends RequestHandlerInterface
4483
 {
4487
 {
4484
     public function register(string $method, string $path, array $handler);
4488
     public function register(string $method, string $path, array $handler);
4485
 
4489
 
4538
 
4542
 
4539
     public function load(Middleware $middleware) /*: void*/
4543
     public function load(Middleware $middleware) /*: void*/
4540
     {
4544
     {
4541
-        if (count($this->middlewares) > 0) {
4542
-            $next = $this->middlewares[0];
4543
-        } else {
4544
-            $next = $this;
4545
-        }
4546
-        $middleware->setNext($next);
4547
-        array_unshift($this->middlewares, $middleware);
4545
+        array_push($this->middlewares, $middleware);
4548
     }
4546
     }
4549
 
4547
 
4550
     public function route(ServerRequestInterface $request): ResponseInterface
4548
     public function route(ServerRequestInterface $request): ResponseInterface
4553
             $data = gzcompress(json_encode($this->routes, JSON_UNESCAPED_UNICODE));
4551
             $data = gzcompress(json_encode($this->routes, JSON_UNESCAPED_UNICODE));
4554
             $this->cache->set('PathTree', $data, $this->ttl);
4552
             $this->cache->set('PathTree', $data, $this->ttl);
4555
         }
4553
         }
4556
-        $obj = $this;
4557
-        if (count($this->middlewares) > 0) {
4558
-            $obj = $this->middlewares[0];
4559
-        }
4560
-        return $obj->handle($request);
4554
+        return $this->handle($request);
4561
     }
4555
     }
4562
 
4556
 
4563
     private function getRouteNumbers(ServerRequestInterface $request): array
4557
     private function getRouteNumbers(ServerRequestInterface $request): array
4570
 
4564
 
4571
     public function handle(ServerRequestInterface $request): ResponseInterface
4565
     public function handle(ServerRequestInterface $request): ResponseInterface
4572
     {
4566
     {
4567
+        if (count($this->middlewares)) {
4568
+            $handler = array_pop($this->middlewares);
4569
+            return $handler->process($request, $this);
4570
+        }
4571
+
4573
         $routeNumbers = $this->getRouteNumbers($request);
4572
         $routeNumbers = $this->getRouteNumbers($request);
4574
         if (count($routeNumbers) == 0) {
4573
         if (count($routeNumbers) == 0) {
4575
             return $this->responder->error(ErrorCode::ROUTE_NOT_FOUND, $request->getRequestTarget());
4574
             return $this->responder->error(ErrorCode::ROUTE_NOT_FOUND, $request->getRequestTarget());
4599
 
4598
 
4600
 class AjaxOnlyMiddleware extends Middleware
4599
 class AjaxOnlyMiddleware extends Middleware
4601
 {
4600
 {
4602
-    public function handle(ServerRequestInterface $request): ResponseInterface
4601
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4603
     {
4602
     {
4604
         $method = $request->getMethod();
4603
         $method = $request->getMethod();
4605
         $excludeMethods = $this->getArrayProperty('excludeMethods', 'OPTIONS,GET');
4604
         $excludeMethods = $this->getArrayProperty('excludeMethods', 'OPTIONS,GET');
4610
                 return $this->responder->error(ErrorCode::ONLY_AJAX_REQUESTS_ALLOWED, $method);
4609
                 return $this->responder->error(ErrorCode::ONLY_AJAX_REQUESTS_ALLOWED, $method);
4611
             }
4610
             }
4612
         }
4611
         }
4613
-        return $this->next->handle($request);
4612
+        return $next->handle($request);
4614
     }
4613
     }
4615
 }
4614
 }
4616
 
4615
 
4673
         }
4672
         }
4674
     }
4673
     }
4675
 
4674
 
4676
-    public function handle(ServerRequestInterface $request): ResponseInterface
4675
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4677
     {
4676
     {
4678
         $path = RequestUtils::getPathSegment($request, 1);
4677
         $path = RequestUtils::getPathSegment($request, 1);
4679
         $operation = RequestUtils::getOperation($request);
4678
         $operation = RequestUtils::getOperation($request);
4688
             VariableStore::set('authorization.tableHandler', $this->getProperty('tableHandler', ''));
4687
             VariableStore::set('authorization.tableHandler', $this->getProperty('tableHandler', ''));
4689
             VariableStore::set('authorization.columnHandler', $this->getProperty('columnHandler', ''));
4688
             VariableStore::set('authorization.columnHandler', $this->getProperty('columnHandler', ''));
4690
         }
4689
         }
4691
-        return $this->next->handle($request);
4690
+        return $next->handle($request);
4692
     }
4691
     }
4693
 }
4692
 }
4694
 
4693
 
4761
         return base64_decode(strtr($parts[1], '-_', '+/'));
4760
         return base64_decode(strtr($parts[1], '-_', '+/'));
4762
     }
4761
     }
4763
 
4762
 
4764
-    public function handle(ServerRequestInterface $request): ResponseInterface
4763
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4765
     {
4764
     {
4766
         if (session_status() == PHP_SESSION_NONE) {
4765
         if (session_status() == PHP_SESSION_NONE) {
4767
             session_start();
4766
             session_start();
4791
                 return $response;
4790
                 return $response;
4792
             }
4791
             }
4793
         }
4792
         }
4794
-        return $this->next->handle($request);
4793
+        return $next->handle($request);
4795
     }
4794
     }
4796
 }
4795
 }
4797
 
4796
 
4813
         return $found;
4812
         return $found;
4814
     }
4813
     }
4815
 
4814
 
4816
-    public function handle(ServerRequestInterface $request): ResponseInterface
4815
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4817
     {
4816
     {
4818
         $method = $request->getMethod();
4817
         $method = $request->getMethod();
4819
         $origin = count($request->getHeader('Origin')) ? $request->getHeader('Origin')[0] : '';
4818
         $origin = count($request->getHeader('Origin')) ? $request->getHeader('Origin')[0] : '';
4843
                 $response = $response->withHeader('Access-Control-Expose-Headers', $exposeHeaders);
4842
                 $response = $response->withHeader('Access-Control-Expose-Headers', $exposeHeaders);
4844
             }
4843
             }
4845
         } else {
4844
         } else {
4846
-            $response = $this->next->handle($request);
4845
+            $response = $next->handle($request);
4847
         }
4846
         }
4848
         if ($origin) {
4847
         if ($origin) {
4849
             $allowCredentials = $this->getProperty('allowCredentials', 'true');
4848
             $allowCredentials = $this->getProperty('allowCredentials', 'true');
4868
         $this->reflection = $reflection;
4867
         $this->reflection = $reflection;
4869
     }
4868
     }
4870
 
4869
 
4871
-    public function handle(ServerRequestInterface $request): ResponseInterface
4870
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4872
     {
4871
     {
4873
         $operation = RequestUtils::getOperation($request);
4872
         $operation = RequestUtils::getOperation($request);
4874
         $tableName = RequestUtils::getPathSegment($request, 2);
4873
         $tableName = RequestUtils::getPathSegment($request, 2);
4878
             $result = call_user_func($beforeHandler, $operation, $tableName, $request, $environment);
4877
             $result = call_user_func($beforeHandler, $operation, $tableName, $request, $environment);
4879
             $request = $result ?: $request;
4878
             $request = $result ?: $request;
4880
         }
4879
         }
4881
-        $response = $this->next->handle($request);
4880
+        $response = $next->handle($request);
4882
         $afterHandler = $this->getProperty('afterHandler', '');
4881
         $afterHandler = $this->getProperty('afterHandler', '');
4883
         if ($afterHandler !== '') {
4882
         if ($afterHandler !== '') {
4884
             $result = call_user_func($afterHandler, $operation, $tableName, $response, $environment);
4883
             $result = call_user_func($afterHandler, $operation, $tableName, $response, $environment);
4917
         return false;
4916
         return false;
4918
     }
4917
     }
4919
 
4918
 
4920
-    public function handle(ServerRequestInterface $request): ResponseInterface
4919
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4921
     {
4920
     {
4922
         $reverseProxy = $this->getProperty('reverseProxy', '');
4921
         $reverseProxy = $this->getProperty('reverseProxy', '');
4923
         if ($reverseProxy) {
4922
         if ($reverseProxy) {
4931
         if (!$this->isIpAllowed($ipAddress, $allowedIpAddresses)) {
4930
         if (!$this->isIpAllowed($ipAddress, $allowedIpAddresses)) {
4932
             $response = $this->responder->error(ErrorCode::TEMPORARY_OR_PERMANENTLY_BLOCKED, '');
4931
             $response = $this->responder->error(ErrorCode::TEMPORARY_OR_PERMANENTLY_BLOCKED, '');
4933
         } else {
4932
         } else {
4934
-            $response = $this->next->handle($request);
4933
+            $response = $next->handle($request);
4935
         }
4934
         }
4936
         return $response;
4935
         return $response;
4937
     }
4936
     }
4967
         return (object) $context;
4966
         return (object) $context;
4968
     }
4967
     }
4969
 
4968
 
4970
-    public function handle(ServerRequestInterface $request): ResponseInterface
4969
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
4971
     {
4970
     {
4972
         $operation = RequestUtils::getOperation($request);
4971
         $operation = RequestUtils::getOperation($request);
4973
         if (in_array($operation, ['create', 'update', 'increment'])) {
4972
         if (in_array($operation, ['create', 'update', 'increment'])) {
4990
                 }
4989
                 }
4991
             }
4990
             }
4992
         }
4991
         }
4993
-        return $this->next->handle($request);
4992
+        return $next->handle($request);
4994
     }
4993
     }
4995
 }
4994
 }
4996
 
4995
 
5006
         $this->reflection = $reflection;
5005
         $this->reflection = $reflection;
5007
     }
5006
     }
5008
 
5007
 
5009
-    public function handle(ServerRequestInterface $request): ResponseInterface
5008
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5010
     {
5009
     {
5011
         $operation = RequestUtils::getOperation($request);
5010
         $operation = RequestUtils::getOperation($request);
5012
         $params = RequestUtils::getParams($request);
5011
         $params = RequestUtils::getParams($request);
5035
             $request = RequestUtils::setParams($request, $params);
5034
             $request = RequestUtils::setParams($request, $params);
5036
             VariableStore::set("joinLimits.maxRecords", $maxRecords);
5035
             VariableStore::set("joinLimits.maxRecords", $maxRecords);
5037
         }
5036
         }
5038
-        return $this->next->handle($request);
5037
+        return $next->handle($request);
5039
     }
5038
     }
5040
 }
5039
 }
5041
 
5040
 
5154
         return $parts[1];
5153
         return $parts[1];
5155
     }
5154
     }
5156
 
5155
 
5157
-    public function handle(ServerRequestInterface $request): ResponseInterface
5156
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5158
     {
5157
     {
5159
         if (session_status() == PHP_SESSION_NONE) {
5158
         if (session_status() == PHP_SESSION_NONE) {
5160
             session_start();
5159
             session_start();
5176
                 return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
5175
                 return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
5177
             }
5176
             }
5178
         }
5177
         }
5179
-        return $this->next->handle($request);
5178
+        return $next->handle($request);
5180
     }
5179
     }
5181
 }
5180
 }
5182
 
5181
 
5237
         return $request->withParsedBody($multi ? $records : $records[0]);
5236
         return $request->withParsedBody($multi ? $records : $records[0]);
5238
     }
5237
     }
5239
 
5238
 
5240
-    public function handle(ServerRequestInterface $request): ResponseInterface
5239
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5241
     {
5240
     {
5242
         $handler = $this->getProperty('handler', '');
5241
         $handler = $this->getProperty('handler', '');
5243
         if ($handler !== '') {
5242
         if ($handler !== '') {
5260
                 }
5259
                 }
5261
             }
5260
             }
5262
         }
5261
         }
5263
-        return $this->next->handle($request);
5262
+        return $next->handle($request);
5264
     }
5263
     }
5265
 }
5264
 }
5266
 
5265
 
5276
         $this->reflection = $reflection;
5275
         $this->reflection = $reflection;
5277
     }
5276
     }
5278
 
5277
 
5279
-    public function handle(ServerRequestInterface $request): ResponseInterface
5278
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5280
     {
5279
     {
5281
         $operation = RequestUtils::getOperation($request);
5280
         $operation = RequestUtils::getOperation($request);
5282
         if ($operation == 'list') {
5281
         if ($operation == 'list') {
5300
             }
5299
             }
5301
             $request = RequestUtils::setParams($request, $params);
5300
             $request = RequestUtils::setParams($request, $params);
5302
         }
5301
         }
5303
-        return $this->next->handle($request);
5302
+        return $next->handle($request);
5304
     }
5303
     }
5305
 }
5304
 }
5306
 
5305
 
5329
         return (object) $context;
5328
         return (object) $context;
5330
     }
5329
     }
5331
 
5330
 
5332
-    public function handle(ServerRequestInterface $request): ResponseInterface
5331
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5333
     {
5332
     {
5334
         $operation = RequestUtils::getOperation($request);
5333
         $operation = RequestUtils::getOperation($request);
5335
         if (in_array($operation, ['create', 'update', 'increment'])) {
5334
         if (in_array($operation, ['create', 'update', 'increment'])) {
5352
                 }
5351
                 }
5353
             }
5352
             }
5354
         }
5353
         }
5355
-        return $this->next->handle($request);
5354
+        return $next->handle($request);
5356
     }
5355
     }
5357
 }
5356
 }
5358
 
5357
 
5388
         return null;
5387
         return null;
5389
     }
5388
     }
5390
 
5389
 
5391
-    public function handle(ServerRequestInterface $request): ResponseInterface
5390
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5392
     {
5391
     {
5393
         $operation = RequestUtils::getOperation($request);
5392
         $operation = RequestUtils::getOperation($request);
5394
         if (in_array($operation, ['create', 'update', 'increment'])) {
5393
         if (in_array($operation, ['create', 'update', 'increment'])) {
5416
                 }
5415
                 }
5417
             }
5416
             }
5418
         }
5417
         }
5419
-        return $this->next->handle($request);
5418
+        return $next->handle($request);
5420
     }
5419
     }
5421
 }
5420
 }
5422
 
5421
 
5439
         return $token;
5438
         return $token;
5440
     }
5439
     }
5441
 
5440
 
5442
-    public function handle(ServerRequestInterface $request): ResponseInterface
5441
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
5443
     {
5442
     {
5444
         $token = $this->getToken();
5443
         $token = $this->getToken();
5445
         $method = $request->getMethod();
5444
         $method = $request->getMethod();
5450
                 return $this->responder->error(ErrorCode::BAD_OR_MISSING_XSRF_TOKEN, '');
5449
                 return $this->responder->error(ErrorCode::BAD_OR_MISSING_XSRF_TOKEN, '');
5451
             }
5450
             }
5452
         }
5451
         }
5453
-        return $this->next->handle($request);
5452
+        return $next->handle($request);
5454
     }
5453
     }
5455
 }
5454
 }
5456
 
5455
 

+ 2
- 5
src/Nyholm/Psr7/ServerRequest.php View File

1
 <?php
1
 <?php
2
 
2
 
3
-declare (strict_types = 1);
3
+declare(strict_types=1);
4
 
4
 
5
 namespace Nyholm\Psr7;
5
 namespace Nyholm\Psr7;
6
 
6
 
7
-use Psr\Http\Message\ServerRequestInterface;
8
-use Psr\Http\Message\StreamInterface;
9
-use Psr\Http\Message\UploadedFileInterface;
10
-use Psr\Http\Message\UriInterface;
7
+use Psr\Http\Message\{ServerRequestInterface, StreamInterface, UploadedFileInterface, UriInterface};
11
 
8
 
12
 /**
9
 /**
13
  * @author Michael Dowling and contributors to guzzlehttp/psr7
10
  * @author Michael Dowling and contributors to guzzlehttp/psr7

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/AjaxOnlyMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
10
 
11
 
11
 class AjaxOnlyMiddleware extends Middleware
12
 class AjaxOnlyMiddleware extends Middleware
12
 {
13
 {
13
-    public function handle(ServerRequestInterface $request): ResponseInterface
14
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
14
     {
15
     {
15
         $method = $request->getMethod();
16
         $method = $request->getMethod();
16
         $excludeMethods = $this->getArrayProperty('excludeMethods', 'OPTIONS,GET');
17
         $excludeMethods = $this->getArrayProperty('excludeMethods', 'OPTIONS,GET');
21
                 return $this->responder->error(ErrorCode::ONLY_AJAX_REQUESTS_ALLOWED, $method);
22
                 return $this->responder->error(ErrorCode::ONLY_AJAX_REQUESTS_ALLOWED, $method);
22
             }
23
             }
23
         }
24
         }
24
-        return $this->next->handle($request);
25
+        return $next->handle($request);
25
     }
26
     }
26
 }
27
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/AuthorizationMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
9
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
68
         }
69
         }
69
     }
70
     }
70
 
71
 
71
-    public function handle(ServerRequestInterface $request): ResponseInterface
72
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
72
     {
73
     {
73
         $path = RequestUtils::getPathSegment($request, 1);
74
         $path = RequestUtils::getPathSegment($request, 1);
74
         $operation = RequestUtils::getOperation($request);
75
         $operation = RequestUtils::getOperation($request);
83
             VariableStore::set('authorization.tableHandler', $this->getProperty('tableHandler', ''));
84
             VariableStore::set('authorization.tableHandler', $this->getProperty('tableHandler', ''));
84
             VariableStore::set('authorization.columnHandler', $this->getProperty('columnHandler', ''));
85
             VariableStore::set('authorization.columnHandler', $this->getProperty('columnHandler', ''));
85
         }
86
         }
86
-        return $this->next->handle($request);
87
+        return $next->handle($request);
87
     }
88
     }
88
 }
89
 }

+ 0
- 10
src/Tqdev/PhpCrudApi/Middleware/Base/Handler.php View File

1
-<?php
2
-namespace Tqdev\PhpCrudApi\Middleware\Base;
3
-
4
-use Psr\Http\Message\ResponseInterface;
5
-use Psr\Http\Message\ServerRequestInterface;
6
-
7
-interface Handler
8
-{
9
-    public function handle(ServerRequestInterface $request): ResponseInterface;
10
-}

+ 2
- 6
src/Tqdev/PhpCrudApi/Middleware/Base/Middleware.php View File

1
 <?php
1
 <?php
2
 namespace Tqdev\PhpCrudApi\Middleware\Base;
2
 namespace Tqdev\PhpCrudApi\Middleware\Base;
3
 
3
 
4
+use Psr\Http\Server\MiddlewareInterface;
4
 use Tqdev\PhpCrudApi\Controller\Responder;
5
 use Tqdev\PhpCrudApi\Controller\Responder;
5
 use Tqdev\PhpCrudApi\Middleware\Router\Router;
6
 use Tqdev\PhpCrudApi\Middleware\Router\Router;
6
 
7
 
7
-abstract class Middleware implements Handler
8
+abstract class Middleware implements MiddlewareInterface
8
 {
9
 {
9
     protected $next;
10
     protected $next;
10
     protected $responder;
11
     protected $responder;
17
         $this->properties = $properties;
18
         $this->properties = $properties;
18
     }
19
     }
19
 
20
 
20
-    public function setNext(Handler $handler) /*: void*/
21
-    {
22
-        $this->next = $handler;
23
-    }
24
-
25
     protected function getArrayProperty(string $key, string $default): array
21
     protected function getArrayProperty(string $key, string $default): array
26
     {
22
     {
27
         return array_filter(array_map('trim', explode(',', $this->getProperty($key, $default))));
23
         return array_filter(array_map('trim', explode(',', $this->getProperty($key, $default))));

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/BasicAuthMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
75
         return base64_decode(strtr($parts[1], '-_', '+/'));
76
         return base64_decode(strtr($parts[1], '-_', '+/'));
76
     }
77
     }
77
 
78
 
78
-    public function handle(ServerRequestInterface $request): ResponseInterface
79
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
79
     {
80
     {
80
         if (session_status() == PHP_SESSION_NONE) {
81
         if (session_status() == PHP_SESSION_NONE) {
81
             session_start();
82
             session_start();
105
                 return $response;
106
                 return $response;
106
             }
107
             }
107
         }
108
         }
108
-        return $this->next->handle($request);
109
+        return $next->handle($request);
109
     }
110
     }
110
 }
111
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/CorsMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
24
         return $found;
25
         return $found;
25
     }
26
     }
26
 
27
 
27
-    public function handle(ServerRequestInterface $request): ResponseInterface
28
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
28
     {
29
     {
29
         $method = $request->getMethod();
30
         $method = $request->getMethod();
30
         $origin = count($request->getHeader('Origin')) ? $request->getHeader('Origin')[0] : '';
31
         $origin = count($request->getHeader('Origin')) ? $request->getHeader('Origin')[0] : '';
54
                 $response = $response->withHeader('Access-Control-Expose-Headers', $exposeHeaders);
55
                 $response = $response->withHeader('Access-Control-Expose-Headers', $exposeHeaders);
55
             }
56
             }
56
         } else {
57
         } else {
57
-            $response = $this->next->handle($request);
58
+            $response = $next->handle($request);
58
         }
59
         }
59
         if ($origin) {
60
         if ($origin) {
60
             $allowCredentials = $this->getProperty('allowCredentials', 'true');
61
             $allowCredentials = $this->getProperty('allowCredentials', 'true');

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/CustomizationMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
9
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
19
         $this->reflection = $reflection;
20
         $this->reflection = $reflection;
20
     }
21
     }
21
 
22
 
22
-    public function handle(ServerRequestInterface $request): ResponseInterface
23
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
23
     {
24
     {
24
         $operation = RequestUtils::getOperation($request);
25
         $operation = RequestUtils::getOperation($request);
25
         $tableName = RequestUtils::getPathSegment($request, 2);
26
         $tableName = RequestUtils::getPathSegment($request, 2);
29
             $result = call_user_func($beforeHandler, $operation, $tableName, $request, $environment);
30
             $result = call_user_func($beforeHandler, $operation, $tableName, $request, $environment);
30
             $request = $result ?: $request;
31
             $request = $result ?: $request;
31
         }
32
         }
32
-        $response = $this->next->handle($request);
33
+        $response = $next->handle($request);
33
         $afterHandler = $this->getProperty('afterHandler', '');
34
         $afterHandler = $this->getProperty('afterHandler', '');
34
         if ($afterHandler !== '') {
35
         if ($afterHandler !== '') {
35
             $result = call_user_func($afterHandler, $operation, $tableName, $response, $environment);
36
             $result = call_user_func($afterHandler, $operation, $tableName, $response, $environment);

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/FirewallMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
34
         return false;
35
         return false;
35
     }
36
     }
36
 
37
 
37
-    public function handle(ServerRequestInterface $request): ResponseInterface
38
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
38
     {
39
     {
39
         $reverseProxy = $this->getProperty('reverseProxy', '');
40
         $reverseProxy = $this->getProperty('reverseProxy', '');
40
         if ($reverseProxy) {
41
         if ($reverseProxy) {
48
         if (!$this->isIpAllowed($ipAddress, $allowedIpAddresses)) {
49
         if (!$this->isIpAllowed($ipAddress, $allowedIpAddresses)) {
49
             $response = $this->responder->error(ErrorCode::TEMPORARY_OR_PERMANENTLY_BLOCKED, '');
50
             $response = $this->responder->error(ErrorCode::TEMPORARY_OR_PERMANENTLY_BLOCKED, '');
50
         } else {
51
         } else {
51
-            $response = $this->next->handle($request);
52
+            $response = $next->handle($request);
52
         }
53
         }
53
         return $response;
54
         return $response;
54
     }
55
     }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/IpAddressMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
9
 use Tqdev\PhpCrudApi\Controller\Responder;
38
         return (object) $context;
39
         return (object) $context;
39
     }
40
     }
40
 
41
 
41
-    public function handle(ServerRequestInterface $request): ResponseInterface
42
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
42
     {
43
     {
43
         $operation = RequestUtils::getOperation($request);
44
         $operation = RequestUtils::getOperation($request);
44
         if (in_array($operation, ['create', 'update', 'increment'])) {
45
         if (in_array($operation, ['create', 'update', 'increment'])) {
61
                 }
62
                 }
62
             }
63
             }
63
         }
64
         }
64
-        return $this->next->handle($request);
65
+        return $next->handle($request);
65
     }
66
     }
66
 }
67
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/JoinLimitsMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
9
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
20
         $this->reflection = $reflection;
21
         $this->reflection = $reflection;
21
     }
22
     }
22
 
23
 
23
-    public function handle(ServerRequestInterface $request): ResponseInterface
24
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
24
     {
25
     {
25
         $operation = RequestUtils::getOperation($request);
26
         $operation = RequestUtils::getOperation($request);
26
         $params = RequestUtils::getParams($request);
27
         $params = RequestUtils::getParams($request);
49
             $request = RequestUtils::setParams($request, $params);
50
             $request = RequestUtils::setParams($request, $params);
50
             VariableStore::set("joinLimits.maxRecords", $maxRecords);
51
             VariableStore::set("joinLimits.maxRecords", $maxRecords);
51
         }
52
         }
52
-        return $this->next->handle($request);
53
+        return $next->handle($request);
53
     }
54
     }
54
 }
55
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/JwtAuthMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
121
         return $parts[1];
122
         return $parts[1];
122
     }
123
     }
123
 
124
 
124
-    public function handle(ServerRequestInterface $request): ResponseInterface
125
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
125
     {
126
     {
126
         if (session_status() == PHP_SESSION_NONE) {
127
         if (session_status() == PHP_SESSION_NONE) {
127
             session_start();
128
             session_start();
143
                 return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
144
                 return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
144
             }
145
             }
145
         }
146
         }
146
-        return $this->next->handle($request);
147
+        return $next->handle($request);
147
     }
148
     }
148
 }
149
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/MultiTenancyMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
9
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
68
         return $request->withParsedBody($multi ? $records : $records[0]);
69
         return $request->withParsedBody($multi ? $records : $records[0]);
69
     }
70
     }
70
 
71
 
71
-    public function handle(ServerRequestInterface $request): ResponseInterface
72
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
72
     {
73
     {
73
         $handler = $this->getProperty('handler', '');
74
         $handler = $this->getProperty('handler', '');
74
         if ($handler !== '') {
75
         if ($handler !== '') {
91
                 }
92
                 }
92
             }
93
             }
93
         }
94
         }
94
-        return $this->next->handle($request);
95
+        return $next->handle($request);
95
     }
96
     }
96
 }
97
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/PageLimitsMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
9
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
20
         $this->reflection = $reflection;
21
         $this->reflection = $reflection;
21
     }
22
     }
22
 
23
 
23
-    public function handle(ServerRequestInterface $request): ResponseInterface
24
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
24
     {
25
     {
25
         $operation = RequestUtils::getOperation($request);
26
         $operation = RequestUtils::getOperation($request);
26
         if ($operation == 'list') {
27
         if ($operation == 'list') {
44
             }
45
             }
45
             $request = RequestUtils::setParams($request, $params);
46
             $request = RequestUtils::setParams($request, $params);
46
         }
47
         }
47
-        return $this->next->handle($request);
48
+        return $next->handle($request);
48
     }
49
     }
49
 }
50
 }

+ 2
- 2
src/Tqdev/PhpCrudApi/Middleware/Router/Router.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
-use Tqdev\PhpCrudApi\Middleware\Base\Handler;
6
+use Psr\Http\Server\RequestHandlerInterface;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 
8
 
9
-interface Router extends Handler
9
+interface Router extends RequestHandlerInterface
10
 {
10
 {
11
     public function register(string $method, string $path, array $handler);
11
     public function register(string $method, string $path, array $handler);
12
 
12
 

+ 7
- 12
src/Tqdev/PhpCrudApi/Middleware/Router/SimpleRouter.php View File

58
 
58
 
59
     public function load(Middleware $middleware) /*: void*/
59
     public function load(Middleware $middleware) /*: void*/
60
     {
60
     {
61
-        if (count($this->middlewares) > 0) {
62
-            $next = $this->middlewares[0];
63
-        } else {
64
-            $next = $this;
65
-        }
66
-        $middleware->setNext($next);
67
-        array_unshift($this->middlewares, $middleware);
61
+        array_push($this->middlewares, $middleware);
68
     }
62
     }
69
 
63
 
70
     public function route(ServerRequestInterface $request): ResponseInterface
64
     public function route(ServerRequestInterface $request): ResponseInterface
73
             $data = gzcompress(json_encode($this->routes, JSON_UNESCAPED_UNICODE));
67
             $data = gzcompress(json_encode($this->routes, JSON_UNESCAPED_UNICODE));
74
             $this->cache->set('PathTree', $data, $this->ttl);
68
             $this->cache->set('PathTree', $data, $this->ttl);
75
         }
69
         }
76
-        $obj = $this;
77
-        if (count($this->middlewares) > 0) {
78
-            $obj = $this->middlewares[0];
79
-        }
80
-        return $obj->handle($request);
70
+        return $this->handle($request);
81
     }
71
     }
82
 
72
 
83
     private function getRouteNumbers(ServerRequestInterface $request): array
73
     private function getRouteNumbers(ServerRequestInterface $request): array
90
 
80
 
91
     public function handle(ServerRequestInterface $request): ResponseInterface
81
     public function handle(ServerRequestInterface $request): ResponseInterface
92
     {
82
     {
83
+        if (count($this->middlewares)) {
84
+            $handler = array_pop($this->middlewares);
85
+            return $handler->process($request, $this);
86
+        }
87
+
93
         $routeNumbers = $this->getRouteNumbers($request);
88
         $routeNumbers = $this->getRouteNumbers($request);
94
         if (count($routeNumbers) == 0) {
89
         if (count($routeNumbers) == 0) {
95
             return $this->responder->error(ErrorCode::ROUTE_NOT_FOUND, $request->getRequestTarget());
90
             return $this->responder->error(ErrorCode::ROUTE_NOT_FOUND, $request->getRequestTarget());

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/SanitationMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
9
 use Tqdev\PhpCrudApi\Controller\Responder;
33
         return (object) $context;
34
         return (object) $context;
34
     }
35
     }
35
 
36
 
36
-    public function handle(ServerRequestInterface $request): ResponseInterface
37
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
37
     {
38
     {
38
         $operation = RequestUtils::getOperation($request);
39
         $operation = RequestUtils::getOperation($request);
39
         if (in_array($operation, ['create', 'update', 'increment'])) {
40
         if (in_array($operation, ['create', 'update', 'increment'])) {
56
                 }
57
                 }
57
             }
58
             }
58
         }
59
         }
59
-        return $this->next->handle($request);
60
+        return $next->handle($request);
60
     }
61
     }
61
 }
62
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/ValidationMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\ReflectionService;
7
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Column\Reflection\ReflectedTable;
8
 use Tqdev\PhpCrudApi\Controller\Responder;
9
 use Tqdev\PhpCrudApi\Controller\Responder;
41
         return null;
42
         return null;
42
     }
43
     }
43
 
44
 
44
-    public function handle(ServerRequestInterface $request): ResponseInterface
45
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
45
     {
46
     {
46
         $operation = RequestUtils::getOperation($request);
47
         $operation = RequestUtils::getOperation($request);
47
         if (in_array($operation, ['create', 'update', 'increment'])) {
48
         if (in_array($operation, ['create', 'update', 'increment'])) {
69
                 }
70
                 }
70
             }
71
             }
71
         }
72
         }
72
-        return $this->next->handle($request);
73
+        return $next->handle($request);
73
     }
74
     }
74
 }
75
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Middleware/XsrfMiddleware.php View File

3
 
3
 
4
 use Psr\Http\Message\ResponseInterface;
4
 use Psr\Http\Message\ResponseInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
5
 use Psr\Http\Message\ServerRequestInterface;
6
+use Psr\Http\Server\RequestHandlerInterface;
6
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Controller\Responder;
7
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
8
 use Tqdev\PhpCrudApi\Record\ErrorCode;
9
 use Tqdev\PhpCrudApi\Record\ErrorCode;
24
         return $token;
25
         return $token;
25
     }
26
     }
26
 
27
 
27
-    public function handle(ServerRequestInterface $request): ResponseInterface
28
+    public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
28
     {
29
     {
29
         $token = $this->getToken();
30
         $token = $this->getToken();
30
         $method = $request->getMethod();
31
         $method = $request->getMethod();
35
                 return $this->responder->error(ErrorCode::BAD_OR_MISSING_XSRF_TOKEN, '');
36
                 return $this->responder->error(ErrorCode::BAD_OR_MISSING_XSRF_TOKEN, '');
36
             }
37
             }
37
         }
38
         }
38
-        return $this->next->handle($request);
39
+        return $next->handle($request);
39
     }
40
     }
40
 }
41
 }

+ 10
- 0
src/clone.sh View File

8
 cp -R http-factory/src/* Psr/Http/Message
8
 cp -R http-factory/src/* Psr/Http/Message
9
 rm -Rf http-factory
9
 rm -Rf http-factory
10
 
10
 
11
+git clone git@github.com:php-fig/http-server-handler
12
+mkdir -p Psr/Http/Server
13
+cp -R http-server-handler/src/* Psr/Http/Server
14
+rm -Rf http-server-handler
15
+
16
+git clone git@github.com:php-fig/http-server-middleware
17
+mkdir -p Psr/Http/Server
18
+cp -R http-server-middleware/src/* Psr/Http/Server
19
+rm -Rf http-server-middleware
20
+
11
 git clone git@github.com:Nyholm/psr7.git
21
 git clone git@github.com:Nyholm/psr7.git
12
 mkdir -p Nyholm/Psr7
22
 mkdir -p Nyholm/Psr7
13
 cp -R psr7/src/* Nyholm/Psr7
23
 cp -R psr7/src/* Nyholm/Psr7

Loading…
Cancel
Save