Completed
Push — odev ( 21e788...b6090c )
by De Cramer
02:32
created

AdminGroupConfiguration::getGroups()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
ccs 2
cts 2
cp 1
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace eXpansion\Framework\AdminGroups\Services;
4
5
/**
6
 * Class AdminGroupConfiguration
7
 *
8
 * @package eXpansion\Bundle\AdminGroupConfiguration\Services;
9
 * @author oliver de Cramer <[email protected]>
10
 */
11
class AdminGroupConfiguration
12
{
13
    protected $config;
14
15
    protected $loginGroups = [];
16
17
    /**
18
     * AdminGroupConfiguration constructor.
19
     * @param $config
20
     */
21 11
    public function __construct($config)
22
    {
23 11
        $this->config = $config;
24
25 11
        foreach ($this->config as $groupName => $groupData)
26
        {
27 11
            if (!empty($groupData['logins'])) {
28 11
                foreach ($groupData['logins'] as $login) {
29 11
                    $this->loginGroups[$login] = $groupName;
30
                }
31
            }
32
        }
33 11
    }
34
35
    /**
36
     * Get the list of all admin groups.
37
     *
38
     * @return string[]
39
     */
40 4
    public function getGroups()
41
    {
42 4
        return array_keys($this->config);
43
    }
44
45
    /**
46
     * Get list of all users in a group (not just connected).
47
     *
48
     * @param $groupName
49
     *
50
     * @return string[]
51
     */
52 1
    public function getGroupLogins($groupName)
53
    {
54 1
        if (!isset($this->config[$groupName])) {
55 1
            return null;
56
        }
57
58 1
        return $this->config[$groupName]['logins'];
59
    }
60
61
    /**
62
     * Get list of all permissions given to a group.
63
     *
64
     * @param $groupName
65
     *
66
     * @return string[]
67
     */
68 3
    public function getGroupPermissions($groupName)
69
    {
70 3
        if (!isset($this->config[$groupName])) {
71 2
            return [];
72
        }
73
74 2
        return $this->config[$groupName]['permissions'];
75
    }
76
77
    /**
78
     * @param string $login
79
     *
80
     * @return string
81
     */
82 6
    public function getLoginGroupName($login)
83
    {
84 6
        return isset($this->loginGroups[$login]) ? $this->loginGroups[$login] : null;
85
    }
86
87
    /**
88
     * @param $login
89
     * @param $permission
90
     *
91
     * @return bool
92
     */
93 3
    public function hasPermission($login, $permission)
94
    {
95 3
        $groupName = $this->getLoginGroupName($login);
96
97 3
        if ($groupName != 'master_admin') {
98 2
            $permissions = $this->getGroupPermissions($groupName);
99 2
            return in_array($permission, $permissions);
100
        } else {
101 3
            return true;
102
        }
103
    }
104
}
105