Issues (32)

src/Event/AdminSubscriber.php (1 issue)

Severity
1
<?php
2
3
namespace App\Event;
4
5
use App\Controller\AdminAuthenticatedInterface;
6
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
7
use Symfony\Component\DependencyInjection\ContainerInterface;
8
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
9
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
10
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
11
use Symfony\Component\HttpKernel\HttpKernel;
12
use Symfony\Component\HttpKernel\KernelEvents;
13
14
class AdminSubscriber implements EventSubscriberInterface
15
{
16
    private $administrators;
17
18
    public function __construct(ContainerInterface $container)
0 ignored issues
show
The parameter $container is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

18
    public function __construct(/** @scrutinizer ignore-unused */ ContainerInterface $container)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
19
    {
20
        $this->administrators = explode(',', env('ADMINISTRATORS'));
21
    }
22
23
    public function onKernelController(FilterControllerEvent $event)
24
    {
25
        $controller = $event->getController();
26
27
        /*
28
         * $controller passed can be either a class or a Closure.
29
         * This is not usual in Symfony but it may happen.
30
         * If it is a class, it comes in array format
31
         */
32
        if (!is_array($controller)) {
33
            return;
34
        }
35
36
        if ($controller[0] instanceof AdminAuthenticatedInterface) {
37
            $isAdmin = false;
38
            if (isset($_SESSION['phpCAS']['user'])) {
39
                if (in_array($_SESSION['phpCAS']['user'], $this->administrators))
40
                    $isAdmin = true;
41
            }
42
            if (!$isAdmin) throw new AccessDeniedHttpException('Access forbidden.');
43
        }
44
    }
45
46
    public function onKernelRequest(GetResponseEvent $event)
47
    {
48
        if (HttpKernel::MASTER_REQUEST != $event->getRequestType())
49
            return;
50
    }
51
52
53
    public static function getSubscribedEvents()
54
    {
55
        return [ KernelEvents::CONTROLLER => 'onKernelController' ];
56
    }
57
}