KumbiaPHP  beta2
Framework PHP
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Páginas
acl2.php
Ir a la documentación de este archivo.
1 <?php
31 abstract class Acl2
32 {
33 
39  protected static $_defaultAdapter = 'simple';
40 
48  public function check($resource, $user)
49  {
50  // Itera en los roles de usuario
51  foreach ($this->_getUserRoles($user) as $role) {
52  if ($this->_checkRole($role, $resource)) {
53  return TRUE;
54  }
55  }
56 
57  // Por defecto se niega el acceso
58  return FALSE;
59  }
60 
68  private function _checkRole($role, $resource)
69  {
70  // Verificar si el rol puede acceder al recurso
71  if (in_array($resource, $this->_getRoleResources($role))) {
72  return TRUE;
73  }
74 
75  // Verifica si ha heredado el acceso, verificando los recursos de los padres
76  foreach ($this->_getRoleParents($role) as $parent) {
77  if ($this->_checkRole($parent, $resource)) {
78  return TRUE;
79  }
80  }
81 
82  return FALSE;
83  }
84 
91  abstract protected function _getUserRoles($user);
92 
99  abstract protected function _getRoleResources($role);
100 
107  abstract protected function _getRoleParents($role);
108 
114  public static function factory($adapter = NULL)
115  {
116  if (!$adapter) {
117  $adapter = self::$_defaultAdapter;
118  }
119 
120  require_once CORE_PATH . "libs/acl2/adapters/{$adapter}_acl.php";
121  $class = $adapter . 'acl';
122 
123  return new $class;
124  }
125 
131  public static function setDefault($adapter)
132  {
133  self::$_defaultAdapter = $adapter;
134  }
135 
136 }