Я хочу сделать страницу, и на этой странице можно открыть только одного пользователя. Я хочу сделать что-то вроде этого: если 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.
Вот изображение пользователей
Спасибо за любую подсказку или решение.
Попробуйте 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 !'));
}
}
Для зарегистрированных пользователей.
Лучший вариант: -
использовать идентификатор роли для админов, это поможет вам для нескольких админов. и дать отрицательный 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 !'));
}
}
Рекомендуемый подход для входа в пользовательские данные осуществляется через сам AuthComponent:
// in any controller
$userId = $this->Auth->user('id');
См. Доступ к зарегистрированному пользователю. Доступ к зарегистрированному пользователю в разделе Auth в книге CakePHP.
поэтому вы хотите проверить, является ли идентификатор пользователя 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';
}
$user
?
else {throw new NotFoundException(__('You are not admin !'));}