SimpleAcl   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 112
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 112
rs 10
c 0
b 0
f 0
wmc 9
lcom 2
cbo 1

6 Methods

Rating   Name   Duplication   Size   Complexity  
A allow() 0 4 1
A parents() 0 4 1
A user() 0 4 1
A _getUserRoles() 0 8 2
A _getRoleResources() 0 8 2
A _getRoleParents() 0 8 2
1
<?php
2
/**
3
 * KumbiaPHP web & app Framework
4
 *
5
 * LICENSE
6
 *
7
 * This source file is subject to the new BSD license that is bundled
8
 * with this package in the file LICENSE.
9
 *
10
 * @category   Kumbia
11
 * @package    Acl
12
 *
13
 * @copyright  Copyright (c) 2005 - 2019 KumbiaPHP Team (http://www.kumbiaphp.com)
14
 * @license    https://github.com/KumbiaPHP/KumbiaPHP/blob/master/LICENSE   New BSD License
15
 */
16
17
/**
18
 * Implementacion de ACL con definicion de reglas en PHP
19
 *
20
 * @category   Kumbia
21
 * @package    Acl
22
 */
23
class SimpleAcl extends Acl2
24
{
25
26
    /**
27
     * Definicion de Roles con sus respectivos padres y recursos a los que pueden acceder
28
     *
29
     * @var array
30
     *
31
     * @example SimpleAcl-roles
32
     *   protected $_roles = array(
33
     *       'rol1' => array(
34
     *           'resources' => array('recurso1', 'recurso2')
35
     *       ),
36
     *       'rol2' => array(
37
     *           'resources' => array('recurso2'),
38
     *           'parents' => array('rol1')
39
     *       )
40
     *   );
41
     */
42
    protected $_roles = array();
43
    /**
44
     * Usuarios del sistema con sus respectivos roles
45
     *
46
     * @var array
47
     *
48
     * @example SimpleAcl-users
49
     * protected $_users = array(
50
     *     'usuario1' => array('rol1', 'rol2'),
51
     *     'usuario2' => array('rol3')
52
     * );
53
     */
54
    protected $_users = array();
55
56
    /**
57
     * Establece los recursos a los que el rol puede acceder
58
     *
59
     * @param string $role nombre de rol
60
     * @param array $resources recursos a los que puede acceder el rol
61
     */
62
    public function allow($role, $resources)
63
    {
64
        $this->_roles[$role]['resources'] = $resources;
65
    }
66
67
    /**
68
     * Establece los padres del rol
69
     *
70
     * @param string $role nombre de rol
71
     * @param array $parents padres del rol
72
     */
73
    public function parents($role, $parents)
74
    {
75
        $this->_roles[$role]['parents'] = $parents;
76
    }
77
78
    /**
79
     * Adiciona un usuario a la lista con sus respectivos roles
80
     *
81
     * @param string $user
82
     * @param array $roles
83
     */
84
    public function user($user, $roles)
85
    {
86
        $this->_users[$user] = $roles;
87
    }
88
89
    /**
90
     * Obtiene los roles del usuario al que se le valida si puede acceder al recurso
91
     *
92
     * @param string $user usuario al que se le valida acceso
93
     * @return array roles de usuario
94
     */
95
    protected function _getUserRoles($user)
96
    {
97
        if (isset($this->_users[$user])) {
98
            return $this->_users[$user];
99
        }
100
101
        return array();
102
    }
103
104
    /**
105
     * Obtiene los recursos al cual el rol puede acceder
106
     *
107
     * @param string $role nombre de rol
108
     * @return array recursos al cual el rol puede acceder
109
     */
110
    protected function _getRoleResources($role)
111
    {
112
        if (isset($this->_roles[$role]['resources'])) {
113
            return $this->_roles[$role]['resources'];
114
        }
115
116
        return array();
117
    }
118
119
    /**
120
     * Obtiene los padres del rol
121
     *
122
     * @param string $role nombre de rol
123
     * @return array padres del rol
124
     */
125
    protected function _getRoleParents($role)
126
    {
127
        if (isset($this->_roles[$role]['parents'])) {
128
            return $this->_roles[$role]['parents'];
129
        }
130
131
        return array();
132
    }
133
134
}
135