CakePHP проверить роль пользователя - PullRequest
2 голосов
/ 28 августа 2011

Как проверить, принадлежит ли текущий зарегистрированный пользователь роли администратора.

У меня есть две таблицы, таблица пользователей и ролей.В таблице пользователей у меня есть внешний ключ с именем 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 Ответ

1 голос
/ 28 августа 2011

Один из способов сделать это - установить переменную в функциях вашего контроллера

   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

     }


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...