Только один пользователь может открыть файл admin.ctp

0

Я хочу сделать страницу, и на этой странице можно открыть только одного пользователя. Я хочу сделать что-то вроде этого: если user 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 !'));
                }
        }

Но его не работает. Как я могу получить этот идентификатор пользователя, если. Это второе решение бросает только эту ошибку, но я не хочу этого, я хочу получить доступ, если идентификатор пользователя равен 1.

Вот изображение пользователей

Изображение 174551

Спасибо за любую подсказку или решение.

  • 0
    Какую ошибку вы получаете? Сопоставьте идентификатор с данными сеанса. вы используете компонент аутентификации?
  • 0
    Я получаю эту ошибку: else {throw new NotFoundException(__('You are not admin !'));}
Показать ещё 4 комментария
Теги:
cakephp

4 ответа

2
Лучший ответ

Попробуйте this-

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 !'));
   }
}

Для зарегистрированных пользователей.

  • 0
    Мне нужен пользователь с идентификатором 1, но все зарегистрированные пользователи могут открыть этот файл, но я этого не хочу.
  • 0
    ооооооооооо ... забыл это .. обновил ответ.
Показать ещё 1 комментарий
0

Лучший вариант: -

использовать идентификатор роли для админов, это поможет вам для нескольких админов. и дать отрицательный 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 !'));
   }
}
0

Рекомендуемый подход для входа в пользовательские данные осуществляется через сам AuthComponent:

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

См. Доступ к зарегистрированному пользователю. Доступ к зарегистрированному пользователю в разделе Auth в книге CakePHP.

  • 0
    Да, у меня есть это, если пользователь вошел в систему, то он может открыть это. Но я хочу, только пользователь с идентификатором 1 может открыть это
-1

поэтому вы хотите проверить, является ли идентификатор пользователя 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';
}
  • 0
    А как вы получаете $user ?
  • 0
    выбирая его из базы данных. Я не помещаю детали этого, потому что это не предмет. Он хочет знать, как проверить, является ли пользователь администратором, а не как получать данные из базы данных ... IMO ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню