只有一个用户可以打开admin.ctp文件

时间:2015-01-06 08:48:18

标签: php cakephp

我想要一个页面,此页面只能打开一个用户。我想做类似这样的事情:如果用户id = 1,那么它的开头就是抛出错误。

我已经尝试过了:

if (in_array($this->action, array('controller' => 'users', 'action' => 'admin'))) {
        $postId = (int) $this->request->params['pass'][0];
        if ($this->User->isOwnedBy($postId, $users['id'] = 1)) {

            return true;
        }else{echo "You are not admin!";}

    }

然后我想,也许这有点容易?

public function admin($id = null) {

            $this->User->id = $id;
                if ($id == 1) {
                    echo 'You are admin';
                }
                else {
                    throw new NotFoundException(__('You are not admin !'));
                }
        }

但它没有用,如何将此用户ID添加到此if。第二个解决方案只抛出此错误,但我不想要它,如果用户ID为1,我想要访问。

这是用户图片

enter image description here

感谢您提供任何线索或解决方案。

4 个答案:

答案 0 :(得分:2)

试试这个 -

public function admin($id = null) {
   $currentUserId = $this->Auth->user(id);
   //$isAdmin       = $this->User->hasAny(
      //array('User.id' => $currentUserId)
   //);
   //if ($isAdmin) {
   if ($currentUserId == 1)
       echo 'You are admin';
   } else {
       throw new NotFoundException(__('You are not admin !'));
   }
}

对于已登录的用户。

答案 1 :(得分:0)

登录用户数据的推荐方法是通过AuthComponent本身:

// in any controller
$userId = $this->Auth->user('id');

请参阅Accessing the logged in user的身份验证部分中的CakePHP Book访问登录用户。

答案 2 :(得分:0)

更好的选择: -

为管理员使用角色ID,这将为多个管理员提供帮助。并给管理员否定ID: - 比如在用户表中添加role_id列并为-1

赋值
public function admin($id = null) {
   $role = $this->Session->read('Auth.User.role_id');
   if ($role < 0)
       echo 'You are admin';
   } else {
       throw new NotFoundException(__('You are not admin !'));
   }
}

答案 3 :(得分:-1)

所以你要检查用户ID是否为1 ??

//Fetch the user informations from database and stock it into $user

if(is_admin($user[id])){
    echo 'You are admin';
}
else{
    echo 'You are not admin';
}

function is_admin($id = NULL){
    if($id == 1){
        return true;
    }
    else{
        return false;
    }
}

告诉我,如果我误解了

编辑: 根据我们的聊天,试试这个:

//Fetch the ID of the user and stock it in $user_id

if($user_id == 1){
    echo 'You are admin';
}
else{
    echo 'You are not admin';
}