ComponentsFactory::createUserIdExtractor()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
dl 0
loc 17
rs 9.9332
c 1
b 0
f 0
cc 4
nc 4
nop 1
1
<?php
2
3
namespace Potievdev\SlimRbac\Component;
4
5
use Doctrine\ORM\EntityManager;
6
use Doctrine\ORM\Tools\Setup;
7
use Potievdev\SlimRbac\Component\Config\RbacConfig;
8
use Potievdev\SlimRbac\Component\UserIdExtractor\AttributeUserIdExtractor;
9
use Potievdev\SlimRbac\Component\UserIdExtractor\CookieUserIdExtractor;
10
use Potievdev\SlimRbac\Component\UserIdExtractor\HeaderUserIdExtractor;
11
use Potievdev\SlimRbac\Component\UserIdExtractor\UserIdExtractor;
12
13
class ComponentsFactory
14
{
15
    public static function createEntityManager(RbacConfig $rbacConfig): EntityManager
16
    {
17
        $dbParams = [
18
            'driver'   => $rbacConfig->getDatabaseDriver(),
19
            'host'     => $rbacConfig->getDatabaseHost(),
20
            'user'     => $rbacConfig->getDatabaseUser(),
21
            'password' => $rbacConfig->getDatabasePassword(),
22
            'dbname'   => $rbacConfig->getDatabaseName(),
23
            'port'     => $rbacConfig->getDatabasePort(),
24
        ];
25
26
        $config = Setup::createAnnotationMetadataConfiguration([], false, null, null, false);
27
28
        return EntityManager::create($dbParams, $config);
29
    }
30
31
    public static function createUserIdExtractor(RbacConfig $rbacConfig): UserIdExtractor
32
    {
33
        $userIdFieldName = $rbacConfig->getUserIdFieldName();
34
        $storageType = $rbacConfig->getUserIdResourceType();
35
36
        /** @var integer $userId */
37
        switch ($storageType) {
38
39
            case RbacConfig::HEADER_RESOURCE_TYPE:
40
                return new HeaderUserIdExtractor($userIdFieldName);
41
42
            case RbacConfig::COOKIE_RESOURCE_TYPE:
43
                return new CookieUserIdExtractor($userIdFieldName);
44
45
            case RbacConfig::ATTRIBUTE_RESOURCE_TYPE:
46
            default:
47
                return new AttributeUserIdExtractor($userIdFieldName);
48
        }
49
    }
50
51
}