xchopin /
LAWA-UL
| 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
|
|||
| 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 | } |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.