AuthManager   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 0
dl 0
loc 48
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setConfig() 0 4 1
A isDefaultAllow() 0 4 1
A getAccountManager() 0 4 1
A getLoginManager() 0 4 1
A getPermissionManager() 0 4 1
A getManagerInstance() 0 9 2
1
<?php
2
3
namespace App\Auth;
4
5
class AuthManager
6
{
7
    private static $config = [];
8
9
    public static function setConfig(array $config)
10
    {
11
        self::$config = $config;
12
    }
13
14
    public static function isDefaultAllow()
15
    {
16
        return self::$config['defaultAllow'];
17
    }
18
19
    /**
20
     * @return AccountManagerInterface
21
     */
22
    public static function getAccountManager($accountManagerName = null)
23
    {
24
        return self::getManagerInstance('account', $accountManagerName);
25
    }
26
27
    /**
28
     * @return LoginManagerInterface
29
     */
30
    public static function getLoginManager($loginManagerName = null)
31
    {
32
        return self::getManagerInstance('login', $loginManagerName);
33
    }
34
35
    /**
36
     * @return PermissionManagerAbstract
37
     */
38
    public static function getPermissionManager($loginManagerName = null)
39
    {
40
        return self::getManagerInstance('permission', $loginManagerName);
41
    }
42
43
    private static function getManagerInstance($managerType, $managerName = null)
44
    {
45
        $managerInstanceName = $managerName ?: self::$config['default' . ucfirst($managerType) . 'Manager'];
46
47
        $className = self::$config[$managerType . 'Managers'][$managerInstanceName]['class'];
48
        $settings = self::$config[$managerType . 'Managers'][$managerInstanceName]['settings'];
49
50
        return new $className($settings);
51
    }
52
}
53