KumbiaPHP beta2-dev
Framework PHP en español
acl2.php
Ir a la documentación de este archivo.
00001 <?php
00028 abstract class Acl2
00029 {
00035         protected static $_defaultAdapter = 'simple';
00036         
00044         public function check($resource, $user)
00045         {
00046                 // Itera en los roles de usuario
00047                 foreach($this->_getUserRoles($user) as $role) {
00048                         if($this->_checkRole($role, $resource)) {
00049                                 return TRUE;
00050                         }
00051                 }
00052                 
00053                 // Por defecto se niega el acceso
00054                 return FALSE;
00055         }
00056 
00064         private function _checkRole($role, $resource)
00065         {
00066                 // Verificar si el rol puede acceder al recurso
00067                 if(in_array($resource, $this->_getRoleResources($role))) {
00068                         return TRUE;
00069                 }
00070                 
00071                 // Verifica si ha heredado el acceso, verificando los recursos de los padres
00072                 foreach($this->_getRoleParents($role) as $parent) {
00073                         if($this->_checkRole($parent, $resource)) {
00074                                 return TRUE;
00075                         }
00076                 }
00077                 
00078                 return FALSE;
00079         }
00080         
00087         abstract protected function _getUserRoles($user);
00088         
00095         abstract protected function _getRoleResources($role);
00096         
00103         abstract protected function _getRoleParents($role);
00104         
00110         public static function factory($adapter = NULL)
00111         {
00112                 if(!$adapter) {
00113                         $adapter = self::$_defaultAdapter;
00114                 }
00115 
00116                 require_once CORE_PATH . "libs/acl2/adapters/{$adapter}_acl.php";
00117                 $class = $adapter.'acl';
00118                 
00119                 return new $class;
00120         }
00121 
00127         public static function setDefault ($adapter)
00128         {
00129                 self::$_defaultAdapter = $adapter;
00130         }
00131 }
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Enumeraciones