Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
BaseController
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
2 / 2
3
100.00% covered (success)
100.00%
1 / 1
 getRefererString
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getInternalReferer
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace App\Controller;
6
7use App\Entity\User;
8use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
9use Symfony\Component\HttpFoundation\Request;
10
11use Symfony\Component\Routing\RouterInterface;
12use Symfony\Component\String\UnicodeString;
13use function Symfony\Component\String\u;
14
15/**
16 * @method User|null getUser()
17 */
18class BaseController extends AbstractController
19{
20    protected function getRefererString(Request $request): UnicodeString
21    {
22        $referer = (string)$request->headers->get('referer');
23
24        return u($referer);
25    }
26
27    protected function getInternalReferer(
28        Request $request,
29        RouterInterface $router
30    ): string
31    {
32        $referer = $this->getRefererString($request);
33        if ($referer->isEmpty()) {
34            return '';
35        }
36
37        $refererPathInfo = Request::create($referer->toString())->getPathInfo();
38
39        $routeInfos = $router->match($refererPathInfo);
40
41        /** @var string $route */
42        $route = $routeInfos['_route'] ?? '';
43
44        return $route;
45    }
46}