2014-04-25 21 views
1

我最近安裝了ZfcUser和BjyAuthorize,並希望使用它們來顯示或隱藏layout.phtml文件的各個部分。使用ZfcUser和BjyAuthorize顯示或隱藏視圖

據我所知,BjyAuthorize是一種防火牆,來自git hub的流程圖表明它應該有可能獲得當前許可狀態並使用它來隱藏或顯示特定的代碼段。

因此,例如:

<ul> 
    <li>Admin Menu item</li> 
    <li>Affiliate menu item</li> 
    <li>Guest Menu item</li> 
</ul> 

如果管理員用戶登錄時,他將顯示所有三個項目,該子公司將只能看到聯盟和客人和來賓將只能看到客人。

我怎麼想這樣做的是這樣的:

<?php 
    //Get array of permissions for current user *not certain how to do this* 
    $permissionArray = $this->GetBjyPermissions($current->user); 
?> 
<ul> 
    <?php if in_array('admin',$permissionArray) {?> 
     <li>Admin Menu item</li> 
    <?php } ?> 

    <?php if in_array('affiliate',$permissionArray) {?> 
     <li>Affiliate Menu item</li> 
    <?php } ?> 

    <li>Guest Menu item</li> 
</ul> 

本質上講,這將讓我隱藏的代碼,用戶不允許使用的章節。

如果無法通過Bjy或Zfc獲取權限,我想我的選擇是簡單地查詢數據庫並直接從該數據庫構建權限數組。

有沒有其他人不得不這樣做?這種方法是一種很好的方法,還是有另一種實現方法?

非常感謝您的任何意見。

回答

3

您可以使用BjyAuthorizeIsAllowed視圖助手。它知道當前用戶的身份,所以你只需要檢查規則。它的工作原理是:

$isMenuAdmin = $this->isAllowed('menu', 'menu_admin'); 
$isMenuAffiliate = $this->isAllowed('menu', 'menu_affiliate'); 
$isMenuGuest = $this->isAllowed('menu', 'menu_guest'); 

菜單是一種資源,menu_ *的規則。您必須在bjyauthorize.global.php中定義它們。我會做這種方式:

(...) 
'resource_providers' => array(
    'BjyAuthorize\Provider\Resource\Config' => array(
     'menu' => array(), 
    ), 
), 
'rule_providers' => array(
    'BjyAuthorize\Provider\Rule\Config' => array(
     'allow' => array(
      /* 
      [0] -> role 
      [1] -> resource 
      [2] -> rule 
      */ 
      array(array('admin'), 'menu', array('menu_admin')), 
      array(array('affiliate'), 'menu', array('menu_affiliate')), 
      array(array('guest'), 'menu', array('menu_guest')), 
     ), 
    ), 
), 
(...) 

順便說一句,好像是你試圖建立一個菜單。我建議你到check this post關於集成Zend導航和BjyAutorize。

+0

謝謝,這真的說明了如何使用幫手。非常感謝! – HappyCoder