■Zend_Acl
- リソース
- アクセス制御対象オブジェクト
- ロール
- リソースにアクセスを要求するオブジェクト
ロールの定義
require_once 'Zend/Acl.php'; require_once 'Zend/Acl/Role.php'; $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); $acl->addRole(new Zend_Acl_Role('member'), 'guest'); $acl->addRole(new Zend_Acl_Role('admin'), 'member');
アクセス制御の定義
以下のようにしてロールにアクセス制御
$acl->allow('guest', null, 'view'); $acl->allow('member', null, 'entry'); $acl->allow('admin', null, array('edit', 'delete'));
アクセス制御
if($acl->isAllowed('guest', null, 'view')){ //code } else{ //code } if($acl->isAllowed('member', null, 'delete')){ //code } else{ //code }
実例
require_once 'Zend/Acl.php'; require_once 'Zend/Acl/Role.php'; require_once 'Zend/Acl/Resource.php'; $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role('guest')); $acl->addRole(new Zend_Acl_Role('member'), 'guest'); $acl->addRole(new Zend_Acl_Role('admin'), 'member'); $acl->add(new Zend_Acl_Resource('myPage')); $acl->allow('guest', null, 'view'); $acl->allow('member', null, 'entry'); $acl->allow('admin', null, array('edit', 'delete')); $acl->deny('guest', 'myPage', 'view'); $acl->allow('member', 'myPage', 'view'); if($acl->isAllowed('guest', 'myPage', 'view')){ //allow } else{ //deny } if($acl->isAllowed('member', 'myPage', 'view')){ //allow } else{ //deny }
各メソッドについて
- Zend_Acl::addRole(new Zend_Acl_Role(string $rolename)[, string $inheritance])
- 第一引数で指定したロール名でロールを定義する。第二引数があった場合はそのロールを継承する。
- Zend_Acl::allow(string $rolename, string $resource, string $restrict)
- 第一引数のロールに対して第三引数のアクセス制御を定義する。
- bool Zend_Acl::isAllowed(string $rolename, string $resourcename, string $restrict)
- 第一引数のロールに対して第三引数のアクセス制御名でアクセス許可があるかをbool値で返す。