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: 122
Default

[php]
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');
}
}
[/php]
__________________
Zym Framework - A Zend Framework extension library w/ demo app

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