public function testBuildRoleException() { $_SERVER['REQUEST_URI'] = '/first'; $this->setExpectedException('Pop\\Nav\\Exception'); $page = new Auth\Resource('page'); $user = new Auth\Resource('user'); $basic = Auth\Role::factory('basic')->addPermission('add'); $editor = Auth\Role::factory('editor')->addPermission('add')->addPermission('edit'); $acl = new Auth\Acl(); $acl->addRoles(array($basic, $editor)); $acl->addResources(array($page, $user)); $acl->allow('basic', 'page', array('add'))->allow('editor', 'page')->allow('editor', 'user'); $tree = array(array('name' => 'Pages', 'href' => '/pages', 'children' => array(array('name' => 'Add Page', 'href' => 'add', 'acl' => array('resource' => 'page', 'permission' => 'add')), array('name' => 'Edit Page', 'href' => 'edit', 'acl' => array('resource' => 'page', 'permission' => 'edit')))), array('name' => 'Users', 'href' => '/users', 'acl' => array('resource' => 'user'), 'children' => array(array('name' => 'Add User', 'href' => 'add'), array('name' => 'Edit User', 'href' => 'edit')))); $n = new Nav($tree); $n->setAcl($acl); $r = $n->render(true); }
<?php require_once '../../bootstrap.php'; use Pop\Auth; use Pop\Nav\Nav; try { $page = new Auth\Resource('page'); $user = new Auth\Resource('user'); $basic = Auth\Role::factory('basic')->addPermission('add'); $editor = Auth\Role::factory('editor')->addPermission('add')->addPermission('edit'); $acl = new Auth\Acl(); $acl->addRoles(array($basic, $editor)); $acl->addResources(array($page, $user)); $acl->allow('basic', 'page', array('add'))->allow('editor', 'page')->allow('editor', 'user'); $tree = array(array('name' => 'Pages', 'href' => '/pages', 'children' => array(array('name' => 'Add Page', 'href' => 'add', 'acl' => array('resource' => 'page', 'permission' => 'add')), array('name' => 'Edit Page', 'href' => 'edit', 'acl' => array('resource' => 'page', 'permission' => 'edit')))), array('name' => 'Users', 'href' => '/users', 'acl' => array('resource' => 'user'), 'children' => array(array('name' => 'Add User', 'href' => 'add'), array('name' => 'Edit User', 'href' => 'edit')))); $config = array('top' => array('id' => 'main-nav')); $nav = new Nav($tree, $config); $nav->setAcl($acl)->setRole($editor); echo $nav; } catch (\Exception $e) { echo $e->getMessage(); }
<?php require_once '../../bootstrap.php'; use Pop\Auth\Acl; use Pop\Auth\Role; use Pop\Auth\Resource; try { // Create some resources $page = new Resource('page'); $template = new Resource('template'); // Create some roles with permissions $reader = Role::factory('reader')->addPermission('read'); $editor = Role::factory('editor')->addPermission('edit'); $publisher = Role::factory('publisher')->addPermission('publish'); $admin = Role::factory('admin')->addPermission('admin'); // Add roles as child roles to demonstrate inheritance $reader->addChild($editor->addChild($publisher->addChild($admin))); $acl = new Acl(); $acl->addRoles(array($reader, $editor, $publisher, $admin)); $acl->addResources(array($page, $template)); $acl->allow('reader', 'page', 'read')->allow('editor', 'page', array('read', 'edit'))->allow('publisher', 'page')->allow('publisher', 'template', 'read')->allow('admin'); $acl->deny('editor', 'page', 'read'); $user = $editor; if ($acl->isAllowed($user, 'page', 'edit')) { echo 'Yes.<br /><br />'; } else { echo 'No.<br /><br />'; } } catch (\Exception $e) { echo $e->getMessage() . PHP_EOL . PHP_EOL; }