본문 바로가기
FrameWork/ZendFrameWork

Zend_Acl_Assert

by 백룡화검 2008. 8. 13.

class Local_Acl extends Zend_Acl
{
 public function __construct()
 {
  $this->addRole(new Zend_Acl_Role('guest')); // 기본 롤
  $this->addRole(new Zend_Acl_Role('member'), 'guest');
  $this->addRole(new Zend_Acl_Role('admin'), 'member');
 
  $this->add(new Zend_Acl_Resource('admin'));
  $this->add(new Zend_Acl_Resource('member'), 'admin');
  $this->add(new Zend_Acl_Resource('default'), 'member'); // 기본 리소스
  $this->add(new Zend_Acl_Resource('programArticle'), 'member');
 
  //$this->allow('member', 'admin', array('index', 'read'));
  $this->allow('guest', 'default');
  $this->allow('guest', 'programArticle', 'add', new Local_Acl_Assert_ProgramArticleAdd());
  $this->allow('member', 'member');
  $this->allow('admin', 'admin', null);
 }
}



class Local_Acl_Assert_ProgramArticleAdd implements Zend_Acl_Assert_Interface
{
 public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $roll = null,
 Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
  return $this->isTrue();
 }

 private function isTrue()

 {

  return true;

 }
}



$this->allow('guest', 'programArticle', 'add', new Local_Acl_Assert_ProgramArticleAdd());
guest 롤은 programArticle 리소스에 대해 add 권한을 가짐. Local_Acl_Assert_ProgramArticleAdd() 가 true 일 경우.

assert에서 일반적인 환경(시간, 아이피, 브라우저 변수 등)에 대한 조건을 판별할 수는 있지만,

구체적인 상황(게시판 번호, 게시물 번호, 비밀번호 등)에 대한 조건을 판별할 수는 없는 듯.


acl은 전체적인 그룹단위의 권한에 대한 사항만 명시하고

게시물 권한 등의 개별적인 권한은 따로 처리해야 하는가?

'FrameWork > ZendFrameWork' 카테고리의 다른 글

Zend_Layout  (0) 2008.08.13
response named segment  (0) 2008.08.13
ErrorHandler, ViewRenderer 사용않기  (0) 2008.08.13
Zend_Translate - array 사용  (0) 2008.08.13
Zend_View Helper - form element 태그 생성하기  (0) 2008.08.13