diff --git a/application/Acl.php b/application/Acl.php new file mode 100644 index 0000000..a2f1953 --- /dev/null +++ b/application/Acl.php @@ -0,0 +1,70 @@ +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); + } + } + } + +} \ No newline at end of file diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 30ec274..2710a77 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -1,4 +1,7 @@ loadRoles(); - - // Add resources - $this->loadResources(); - - // Set accessrights - $this->loadAccess(); - } - - - protected function loadRoles() - { - // "Public" roles - $this->addRole(new Zend_Acl_Role('visitor')); - $this->addRole(new Zend_Acl_Role('member'), 'visitor'); - - // Blog roles - $this->addRole(new Zend_Acl_Role('blogWriter'), 'member'); - $this->addRole(new Zend_Acl_Role('blogManager'), 'blogWriter'); - - // "Projects" roles (for future use) - $this->addRole(new Zend_Acl_Role('projectUser'), 'member'); - $this->addRole(new Zend_Acl_Role('projectManager'), 'projectUser'); - - // ... - $this->addRole(new Zend_Acl_Role('team'), array('blogManager', 'projectManager')); - } - - - protected function loadResources() - { - $this->add(new Zend_Acl_Resource('blog')); - } - - - protected function loadAccess() - { - // Blog - $this->allow('visitor', 'blog', 'readBlog'); - $this->allow('visitor', 'blog', 'readComment'); - - $this->allow('blogWriter', 'blog', 'writeBlog'); - $this->allow('member', 'blog', 'writeComment'); - - } -} \ No newline at end of file