TenantAwareListener   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 7
c 2
b 0
f 1
lcom 1
cbo 5
dl 0
loc 40
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
B onKernelController() 0 18 5
A getSubscribedEvents() 0 4 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