Laravel Авторизация
У меня есть проект на laravel с админкой в orchid, я переделал авторизацию, но столкнулся с проблемой. Мне нужно что бы при авторизации я получал конкретные ошибки, но как это сделать?? Код выглядит так:
public function login(Request $request)
{
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required', 'string'],
]);
$auth = $this->guard->attempt([
'email' => $credentials['email'],
'password' => $credentials['password'],
'status' => User::$status['active']
], $request->filled('remember'));
if ($auth) {
return $this->sendLoginResponse($request);
}
throw ValidationException::withMessages([
'email' => __('The details you entered did not match our records. Please double-check and try again.'),
'password' => __('auth.password'),
'status' => __('auth.status')
]);
}
Сейчас если есть какая-то ошибка, то я получаю все 3 ошибки. Как мне узнать в чем конкретно ошибка, через метод attemp? Или мне как-то по другому надо авторизировать ??
Ответы (1 шт):
Автор решения: Moonwolf45
→ Ссылка
Вообщем решил сделать так:
public function login(Request $request)
{
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required', 'string'],
]);
$user = User::where('email', $credentials['email'])->first();
if (!$user || !Hash::check($credentials['password'], $user->password)) {
throw ValidationException::withMessages([
'email' => __('The details you entered did not match our records. Please double-check and try again.'),
]);
}
if ($user->status !== User::$status['active']) {
throw ValidationException::withMessages([
'status' => __('auth.status')
]);
}
Auth::login($user, $request->filled('remember'));
return $this->sendLoginResponse($request);
}
Вроде работает