Просмотр файла app/middleware.php

Размер файла: 2.02Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. use App\Handlers\HttpErrorHandler;
  6. use App\Middleware\CheckAccessMiddleware;
  7. use App\Middleware\IpAddressMiddleware;
  8. use App\Middleware\StartSessionMiddleware;
  9. use App\Middleware\TrailingSlashMiddleware;
  10. use App\Middleware\UserAuthMiddleware;
  11. use App\Services\Setting;
  12. use Psr\Log\LoggerInterface;
  13. use Slim\App;
  14. use Slim\Middleware\MethodOverrideMiddleware;
  15.  
  16. return function (App $app)
  17. {
  18. /**
  19. * The routing middleware should be added earlier than the ErrorMiddleware
  20. * Otherwise exceptions thrown from it will not be handled by the middleware
  21. */
  22. $app->addRoutingMiddleware();
  23.  
  24. // Add MethodOverride middleware
  25. $app->add(MethodOverrideMiddleware::class);
  26.  
  27. // Trailing slash middleware
  28. $app->add(TrailingSlashMiddleware::class);
  29.  
  30. // Check access middleware
  31. $app->add(CheckAccessMiddleware::class);
  32.  
  33. // UserAuth middleware
  34. $app->add(UserAuthMiddleware::class);
  35.  
  36. // Session middleware
  37. $app->add(StartSessionMiddleware::class);
  38.  
  39. // Ip address middleware
  40. $app->add(IpAddressMiddleware::class);
  41.  
  42. // Define Custom Error Handler
  43. $errorHandler = new HttpErrorHandler($app->getCallableResolver(), $app->getResponseFactory());
  44.  
  45. /**
  46. * Add Error Middleware
  47. *
  48. * @param bool $displayErrorDetails -> Should be set to false in production
  49. * @param bool $logErrors -> Parameter is passed to the default ErrorHandler
  50. * @param bool $logErrorDetails -> Display error details in error log
  51. * @param LoggerInterface|null $logger -> Optional PSR-3 Logger
  52. *
  53. * Note: This middleware should be added last. It will not handle any exceptions/errors
  54. * for middleware added after it.
  55. */
  56. $setting = $app->getContainer()->get(Setting::class);
  57.  
  58. $errorMiddleware = $app->addErrorMiddleware(
  59. $setting->get('displayErrorDetails'),
  60. $setting->get('logError'),
  61. $setting->get('logErrorDetails'),
  62. );
  63. $errorMiddleware->setDefaultErrorHandler($errorHandler);
  64. };