사용자와 회사가 가입 할 수있는 포털을 만들고 있습니다. 사용자는 독립적이거나 회사에서 일할 수 있습니다. 유형에 관계없이 모든 사용자가 사용할 수있는 기본 액세스가 있습니다 (독립적이거나 회사와 연결되어 있음). 독립적 인 사용자가 사용할 수있는 몇 가지 기능이 있지만 사용자가 회사 아래에있는 경우 회사 관리자는 특정 기능에 대한 액세스를 허용하거나 거부 할 수 있습니다. Zend_Acl을 사용하여 어떻게 관리 할 수 있습니까?zend acl 다중 액세스 목록/레벨
1
A
답변
1
ACL의 조건이 있습니다.
내 ACL (플러그인을 통해)을 선언 한 파일에서 다음 선언이 있습니다. Acl_AdminCanAccessUsers
은 Zend_Acl_Assert_Interface
이고 TRUE 또는 FALSE을 반환합니다. 여기에서는 Request 객체를 생성자에 전달합니다. 이제
// Complex function to see if the current user can create/edit the desired user account.
$acl->allow('client', 'user', array('edit','create'), new Acl_AdminCanAccessUsers($this->_request));
당신은 그들이 isAdmin이있는 경우 여기에 우리가 사용자 레코드에 대한 DB를 확인하고 요청 매개 변수로 비교 또는 확인되어 볼 수 있듯이 이제 Acl_AdminCanAccessUsers
<?php
class Acl_AdminCanAccessUsers implements Zend_Acl_Assert_Interface
{
public function __construct($request) {
$this->request = $request;
}
public function assert(Zend_Acl $acl,
Zend_Acl_Role_Interface $role = null,
Zend_Acl_Resource_Interface $resource = null,
$privilege = null)
{
/**
* Can only test when trying to edit a user account
*/
if ("edit" != $privilege) {
return TRUE;
}
$identity = Zend_Auth::getInstance()->getIdentity();
/**
* Get the id from the URL request
*/
$id = $this->request->getParam('id');
/**
* Get user account from DB
*/
$user = Doctrine_Core::getTable('User')->find($id);
// Are they editing their own account? Give them a pass
if ($identity->user_id == $user->user_id) {
return TRUE;
}
// If they don't have the isAdmin flag set to yes on their account
// Then we'll just deny them immediately
if ($identity->isAdmin) {
return TRUE;
}
return FALSE;
}
}
살펴 보자 Zend_Auth ID로 설정된 플래그. 역할, 자원 및 권한 이상으로 액세스 할 수있는 경우 ACL에 대한 많은 조건부 검사를 수행 할 수 있습니다.
해피 코딩!
먼저 Zend_Acl 소개를 읽으셨습니까? 그리고 당신은 어떻게하면 당신을 관리 할 수 있는지 모르십니까? http://framework.zend.com/manual/en/zend.acl.introduction.html –
db에 acl (roles, resources & permissions/mode)을 저장하고 있으며 두 개의 테이블 그룹이 있습니다. 하나는 사이트 관련 작업을 처리하는 반면 2 번은 회사 관리자가 제어하는 액세스를 처리하는 것입니다. 그렇다면 두 가지 유형의 ACL을 어떻게 관리 할 수 있습니까? 매뉴얼에 제공된 세부 사항은 데이터베이스를 사용하여 ACL을 관리하는 방법을 다루지 않습니다. 나는 이것을 달성 할 수 있었지만 여러 유형의 ACL에 관한 약간의 지침이 필요하다. – Bryan