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

Размер файла: 840B
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Middleware;
  6.  
  7. use App\Services\Str;
  8. use Psr\Http\Message\ResponseInterface as Response;
  9. use Psr\Http\Message\ServerRequestInterface as Request;
  10. use Psr\Http\Server\MiddlewareInterface as Middleware;
  11. use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
  12.  
  13. final class StartSessionMiddleware implements Middleware
  14. {
  15. public function process(
  16. Request $request,
  17. RequestHandler $handler
  18. ): Response {
  19. if (session_status() === PHP_SESSION_NONE) {
  20. session_name(setting('session.cookie_name'));
  21. session_start();
  22. }
  23.  
  24. if (empty($_SESSION['csrf'])) {
  25. $_SESSION['csrf'] = Str::random();
  26. }
  27.  
  28. $request = $request->withAttribute('session', $_SESSION);
  29.  
  30. return $handler->handle($request);
  31. }
  32. }