diff --git a/library/Fiktiv/Acl.php b/library/Fiktiv/Acl.php new file mode 100644 index 0000000..4efd36f --- /dev/null +++ b/library/Fiktiv/Acl.php @@ -0,0 +1,53 @@ +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