70 lines
No EOL
1.5 KiB
PHP
70 lines
No EOL
1.5 KiB
PHP
<?php
|
|
|
|
class Acl extends Zend_Acl
|
|
{
|
|
public function __construct()
|
|
{
|
|
// Add roles
|
|
$this->loadRoles();
|
|
|
|
// Add resources
|
|
$this->loadResources();
|
|
|
|
// Set accessrights
|
|
$this->loadAccess();
|
|
}
|
|
|
|
|
|
protected function loadRoles()
|
|
{
|
|
|
|
$this->addRole(new Zend_Acl_Role('visitor'));
|
|
$this->addRole(new Zend_Acl_Role('member'), 'visitor');
|
|
$this->addRole(new Zend_Acl_Role('team'), 'member');
|
|
|
|
}
|
|
|
|
|
|
protected function loadResources()
|
|
{
|
|
$this->add(new Zend_Acl_Resource('blog'));
|
|
$this->add(new Zend_Acl_Resource('profile'));
|
|
$this->add(new Zend_Acl_Resource('admin'));
|
|
}
|
|
|
|
|
|
protected function loadAccess()
|
|
{
|
|
// Set default rules
|
|
$this->_setDefaultAccess();
|
|
|
|
// Blog
|
|
$this->allow('member', 'blog', 'comment');
|
|
|
|
// Profile
|
|
$this->deny('visitor','profile','read');
|
|
|
|
// Admin
|
|
$this->allow('team', 'admin', array('read', 'write', 'delete'));
|
|
|
|
}
|
|
|
|
|
|
protected function _setDefaultAccess()
|
|
{
|
|
$defaults = array(
|
|
'visitor' => array('read'),
|
|
'member' => array('read'),
|
|
'team' => array('read','write', 'delete')
|
|
);
|
|
|
|
foreach ($defaults as $role => $privileges) {
|
|
|
|
foreach ($this->getResources() as $resource) {
|
|
|
|
$this->allow($role,$resource,$privileges);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |