View Single Post
  #3 (permalink)  
Old 07-24-2007, 03:54 AM
SpotSec's Avatar
SpotSec SpotSec is offline
Senior Member
 
Join Date: Feb 2007
Location: United States
Posts: 121
Default

PHP Code:
class App_Acl extends Zend_Acl{

    
/**
     * Construct
     *
     */
    
public function __construct() {
        
$roles = new Roles();
        
$resources = new Resources();
        
$permissions = new Permissions();

        
// Handle roles
        
foreach ($roles->fetchAll() as $role) {
            
// Handle inherited roles
            
if ($role->parent_id) {
                
$this->addRole(new Zend_Acl_Role($role->name), new Zend_Acl_Role($role->findParentRow('Roles')->name));
            } else {
                
$this->addRole(new Zend_Acl_Role($role->name));
            }
        }

        
// Handle resources
        
foreach ($resources->fetchAll() as $resource) {
            
// Handle inherited resources
            
if ($resource->parent_id) {
                
$this->add(new Zend_Acl_Resource($resource->name), new Zend_Acl_Resource($resource->findParentRow('Resources')->name));
            } else {
                
$this->add(new Zend_Acl_Resource($resource->name));
            }
        }

        
// Handle permissions
        
foreach ($permissions->fetchAll() as $permission) {
            if (
strcasecmp($permission->access'allow') == 0) {
                
$this->allow($permission->findParentRow('Roles')->name$permission->findParentRow('Resources')->name);
            } else { 
// Deny by default
                
$this->deny($permission->findParentRow('Roles')->name$permission->findParentRow('Resources')->name);
            }
        }

        
// Hard-coded acls
        // Layout Controller
        
$this->add(new Zend_Acl_Resource('Default_Layout'));
        
$this->allow(null'Default_Layout');
        
$this->add(new Zend_Acl_Resource('Auth_Index'));
        
$this->allow(null'Auth_Index');
    }

__________________
Zym Framework - A Zend Framework extension library w/ demo app

SpotSec Blog:
http://spotsec.com/blog
Reply With Quote