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.

AuthorizationMiddleware.php 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Tqdev\PhpCrudApi\Middleware;
  3. use Tqdev\PhpCrudApi\Column\ReflectionService;
  4. use Tqdev\PhpCrudApi\Controller\Responder;
  5. use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
  6. use Tqdev\PhpCrudApi\Middleware\Router\Router;
  7. use Tqdev\PhpCrudApi\Record\ErrorCode;
  8. use Tqdev\PhpCrudApi\Request;
  9. use Tqdev\PhpCrudApi\Response;
  10. class AuthorizationMiddleware extends Middleware
  11. {
  12. private $reflection;
  13. public function __construct(Router $router, Responder $responder, array $properties, ReflectionService $reflection)
  14. {
  15. parent::__construct($router, $responder, $properties);
  16. $this->reflection = $reflection;
  17. }
  18. public function handle(Request $request): Response
  19. {
  20. $path = $request->getPathSegment(1);
  21. $tableName = $request->getPathSegment(2);
  22. $database = $this->reflection->getDatabase();
  23. if ($path == 'records' && $database->exists($tableName)) {
  24. $table = $database->get($tableName);
  25. $method = $request->getMethod();
  26. $tableHandler = $this->getProperty('tableHandler', '');
  27. if ($tableHandler !== '') {
  28. $valid = call_user_func($handler, $method, $tableName);
  29. if ($valid !== true && $valid !== '') {
  30. $details[$columnName] = $valid;
  31. }
  32. if (count($details) > 0) {
  33. return $this->responder->error(ErrorCode::INPUT_VALIDATION_FAILED, $tableName, $details);
  34. }
  35. }
  36. }
  37. return $this->next->handle($request);
  38. }
  39. }