所以我想隐藏某些未登录的人的视图,并希望允许某个用户角色进行编辑/删除等。
但是使用Auth-> allow和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 :(得分: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
}
?>
答案 1 :(得分:0)
$this->Auth->allow('index', 'view');
您必须在isAuthorized()中执行测试,并在那里测试操作是否可以由用户执行。如果当前用户可以执行操作($ this-&gt;操作),则返回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;
}