@blog.justoneplanet.info

日々勉強

ZendFramework Zend_Acl(アクセスコントロール)

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

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment