2011-08-28 80 views
2

如何检查当前登录的用户是否属于管理员角色。CakePHP检查用户角色

我有两个表,一个用户和角色表。在用户表中,我有一个名为role_id的外键。管理员的角色在角色表中的ID为1。

1)我怎么会做这种检查在视图中显示的管理员联系

2)我怎么会做这种检查在app_controller阻止访问具有管理员前缀的所有动作?

我已经试过类似:

public function beforeRender() 
{ 
    $user = $this->Auth->user(); 

    if (!empty($user)) 
    { 
     $user = $user[$this->Auth->getModel()->alias]; 
    } 
    $this->set(compact('user')); 


    if($user['Role']['id'] == 1) 
    { 
     $is_admin = true; 
    } 
} 

,然后我尝试使用is_admin变量来检查周围的应用

感谢

回答

1

这样做的一个方法是在设置变量您的控制器功能

function beforeFilter() 
    { 
    if($this->Auth->user('role_id')==1){ 
    $this->set("role",$this->Auth->user('role_id'));//it will set a variable role for your view 
    } 
else 
{ 
$this->set("role",2);//2 is the role of normal users 

} 

    } 

在您的查看您测试像下面

<?php if($role==1){ ?> 
     echo $html->link('view registered users',array('controller'=>'users','action'=>'admin_check_users'),array('title'=>'Users'));/provide a link for admin using html helper; } 
    else{ 
    echo $html->link('logout',array('controller'=>'users','action'=>'logout'),array('title'=>'Logout...'));//provide a link for normal users using html helper; 

} 
?> 

你的第二个答案...你可以做同样的这个变量...

 function beforeFilter() 
    { 
    if($this->Auth->user('role_id')==1){ 
    $this->Auth->allow('admin_view','admin_controls');//put your all admin actions separated by comma 

    } 


    }