■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値で返す。