Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
У меня есть такой Gate который проверяет есть ли этот пользователь или удален.
Gate::define('login',function($user){
if($user->status == 1) {
return true;
}
return false;
});
а вот тут я проверяю его когда пользователь хочет залогиниться
$user = User::where('email',$request->get("email"))->first();
if(Gate::allows('login',$user)) {
if (Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password'),
])) {
return redirect('/');
} else {
return redirect()->back()->with('error', 'Incorrect Login or Password');
}
}
return redirect()->back()->with('error','No Such User');
}
у меня всегда выдается последний Error что такого пользователя нет. то есть Gate - не работает.
что не так у меня?
Не в сети
Логично предположить, что $user->status не равен 1 для этого пользователя Надо проверять в отладчике.
Кстати, ты не предусмотрел случай, когда пользователь вообще не найден. Система не должна вываливаться с ошибкой при неправильном email.
Изменено artoodetoo (06.03.2020 17:27:58)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
В сети
у пользователя статус был 1,проблема была в том что Gate хотел проверить уже Auth::user() ,поэтому и выдавал ошибку так как не мог найти этого user-а,
решением был просто перед Gate-ом залогинить пользователя патом уж проверять его:
спс за ответ!)
Не в сети
Страницы 1