Laravel Многократная ошибка аутентификации с условием - PullRequest
0 голосов
/ 23 сентября 2018

мне нужно указать перенаправление, на котором пользователь аутентифицирован.Я добавляю столбец в таблицу пользователей laravel по умолчанию: «is_admin» со значениями «1» и «0»

В моем контроллере я попытался:

 if(Auth::user()->is_admin=1){
  return view('index');
 }
 else {
 return view('auth.login'); 
  };

Но, похоже, мое состояние всегда вернодаже если у auth есть is_admin = 0

Как я могу решить эту проблему?Есть ли лучший способ сделать это условие?спасибо

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Чтобы избежать такого рода проблем, вы управляете способом, которым вы указываете значение, создавая const в вашей User модели.это позволяет вам иметь одинаковые значения, которые все время имеют один и тот же тип

class User extends Model
{
    const ADMIN_USER = "1";
    const REGULAR_USER = "0";

    public function is_admin()
    {
        return $this->attributes['is_admin'] == self::ADMIN_USER;
    }
}

при создании пользователя без прав администратора, вы используете это

User::create([
    // SET OTHER ATTRIBUTE
    'is_admin' => User::REGULAR_USER
]);

при создании пользователя с правами администратора, которым вы пользуетесь

User::create([
    // SET OTHER ATTRIBUTE
    'is_admin' => User::ADMIN_USER
]);

И когда дело доходит до того, чтобы проверить это на ваш взгляд, вам нужно будет просто вызвать метод is_admin для Auth::user()->is_admin()

if(Auth::user()->is_admin()){
    // Your code goes here
} else {
    // And other codes goes here
}
0 голосов
/ 23 сентября 2018

Ваша проблема в том, что вы присваиваете значение в своем выражении if, у вас есть один =, который присваивает значение, а не двойной == (или тройной ===) для сравнениязначения.

То, что происходит, когда у вас есть только один =, это то, что вы присваиваете значение 1 тому, что находится перед =, и это будет оцениваться как "истинное" значениеЭто означает, что if всегда будет истинным, независимо от того, что и else никогда не выполнится.

Вы должны изменить его на следующее:

if (Auth::user()->is_admin == 1){ // Notice the two == here
    return view('index');
} else {
    return view('auth.login'); 
}

Обратите внимание, что я удалилточка с запятой в конце не нужна.

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