api de gestion de ticket, basé sur php-crud-api. Le but est de décorrélé les outils de gestion des données, afin
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CustomizationMiddleware.php 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace Tqdev\PhpCrudApi\Middleware;
  3. use Psr\Http\Message\ResponseInterface;
  4. use Psr\Http\Message\ServerRequestInterface;
  5. use Psr\Http\Server\RequestHandlerInterface;
  6. use Tqdev\PhpCrudApi\Column\ReflectionService;
  7. use Tqdev\PhpCrudApi\Controller\Responder;
  8. use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
  9. use Tqdev\PhpCrudApi\Middleware\Router\Router;
  10. use Tqdev\PhpCrudApi\RequestUtils;
  11. class CustomizationMiddleware extends Middleware
  12. {
  13. private $reflection;
  14. public function __construct(Router $router, Responder $responder, array $properties, ReflectionService $reflection)
  15. {
  16. parent::__construct($router, $responder, $properties);
  17. $this->reflection = $reflection;
  18. }
  19. public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
  20. {
  21. $operation = RequestUtils::getOperation($request);
  22. $tableName = RequestUtils::getPathSegment($request, 2);
  23. $beforeHandler = $this->getProperty('beforeHandler', '');
  24. $environment = (object) array();
  25. if ($beforeHandler !== '') {
  26. $result = call_user_func($beforeHandler, $operation, $tableName, $request, $environment);
  27. $request = $result ?: $request;
  28. }
  29. $response = $next->handle($request);
  30. $afterHandler = $this->getProperty('afterHandler', '');
  31. if ($afterHandler !== '') {
  32. $result = call_user_func($afterHandler, $operation, $tableName, $response, $environment);
  33. $response = $result ?: $response;
  34. }
  35. return $response;
  36. }
  37. }