Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ApiCsrfBypassMiddleware
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 process
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace App\Shared\Security;
6
7use Psr\Http\Message\ResponseInterface;
8use Psr\Http\Message\ServerRequestInterface;
9use Psr\Http\Server\MiddlewareInterface;
10use Psr\Http\Server\RequestHandlerInterface;
11use Yiisoft\Csrf\CsrfTokenInterface;
12
13 class ApiCsrfBypassMiddleware implements MiddlewareInterface
14{
15    public function __construct(private  CsrfTokenInterface $csrfToken) {}
16
17    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
18    {
19        $path = $request->getUri()->getPath();
20        if (str_starts_with($path, '/api/v1/') || $request->hasHeader('X-Api-Signature')) {
21            $request = $request->withHeader('X-CSRF-Token', $this->csrfToken->getValue());
22        }
23
24        return $handler->handle($request);
25    }
26}