2012-03-27 87 views
0

所以我想隱藏那些沒有登錄的人一定的看法,並希望允許某個用戶角色編輯/刪除等限制索引視圖,但允許在CakePHP中編輯?

但使用Auth->允許和isAuthorized是混亂一點點。有沒有簡化以下的方法?

我想允許某個角色(教練和管理員)查看索引和視圖,並將其完全隱藏起來。

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('index', 'view'); 
} 

public function isAuthorized($user) { 
    if (in_array($this->action, array('edit', 'delete'))) { 
     if ($user['id'] != $this->request->params['pass'][0]) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

ACL可能是要走的路:http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application /simple-acl-controlled-application.html – nIcO 2012-03-27 06:39:28

回答

0
$this->Auth->allow('index', 'view'); 
在beforeFilter

()告訴蛋糕是任何人允許查看索引&查看操作,而不管它們是否已登錄或未登錄。

您必須在isAuthorized()中執行測試並在那裏測試該操作是否可以由用戶執行。如果動作($ this-> action)可以由當前用戶執行,則返回true,否則返回false。

public isAuthorized($user = null) { 

    switch($this->action) { 

    case "index": 
    case "view": 

     if ($user['role'] == 'admin') { 

     return true; 

     } 

     break; 

    case "edit": 
    case "delete": 

     if ($user['id'] == $this->request->params['pass'][0]) { 
     return true; 
     } 

     break; 

    } 

    return false; 

} 

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#using-controllerauthorize更多細節

0

您可以從會議

獲取當前用戶

渲染某些局部元素在你的視圖(* .ctp)

<?php 
$user = $this->session->read('Auth.User') 

if(!$user){ 
    echo $this->element('logmein'); 
}else{ 
    echo $this->element('logmeout') 
?> 
<h2>Here is member section</h2> 
<?php 
//... do some thing for member 
} 
?>