TenantAwareListener::onKernelController()   B
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 18
rs 8.8571
cc 5
eloc 10
nc 4
nop 1
1
<?php
2
3
4
namespace Tahoe\Bundle\MultiTenancyBundle\EventListener;
5
6
use Doctrine\ORM\EntityManager;
7
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
8
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
9
use Symfony\Component\HttpKernel\HttpKernelInterface;
10
use Symfony\Component\HttpKernel\KernelEvents;
11
use Tahoe\Bundle\MultiTenancyBundle\Service\TenantResolver;
12
13
class TenantAwareListener implements EventSubscriberInterface {
14
    /**
15
     * @var EntityManager
16
     */
17
    protected $entityManager;
18
    /**
19
     * @var TenantResolver
20
     */
21
    protected $tenantResolver;
22
23
    public function __construct($entityManager, $tenantResolver)
24
    {
25
        $this->entityManager = $entityManager;
26
        $this->tenantResolver = $tenantResolver;
27
    }
28
29
    public function onKernelController(FilterControllerEvent $event)
30
    {
31
        if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
32
            return;
33
        }
34
35
        if ($this->tenantResolver->getStrategy() === TenantResolver::STRATEGY_TENANT_AWARE_SUBDOMAIN &&
36
            false === $this->tenantResolver->isSubdomain()) {
37
            return;
38
        }
39
40
        $tenantId = $this->tenantResolver->getTenantId();
41
42
        if ($tenantId) {
43
            $this->entityManager->getFilters()->enable('tenantAware')
44
                ->setParameter('tenantId', $tenantId);
45
        }
46
    }
47
48
    public static function getSubscribedEvents()
49
    {
50
        return array(KernelEvents::CONTROLLER => array('onKernelController'));
51
    }
52
}
53