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.

AjaxOnlyMiddleware.php 1.1KB

12345678910111213141516171819202122232425262728
  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\Controller\Responder;
  7. use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
  8. use Tqdev\PhpCrudApi\Record\ErrorCode;
  9. use Tqdev\PhpCrudApi\RequestUtils;
  10. class AjaxOnlyMiddleware extends Middleware
  11. {
  12. public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
  13. {
  14. $method = $request->getMethod();
  15. $excludeMethods = $this->getArrayProperty('excludeMethods', 'OPTIONS,GET');
  16. if (!in_array($method, $excludeMethods)) {
  17. $headerName = $this->getProperty('headerName', 'X-Requested-With');
  18. $headerValue = $this->getProperty('headerValue', 'XMLHttpRequest');
  19. if ($headerValue != RequestUtils::getHeader($request, $headerName)) {
  20. return $this->responder->error(ErrorCode::ONLY_AJAX_REQUESTS_ALLOWED, $method);
  21. }
  22. }
  23. return $next->handle($request);
  24. }
  25. }