Ошибка проверки при перезаписи функции входа в систему Laravel - PullRequest
0 голосов
/ 29 марта 2020

Я перезаписываю функцию входа в систему Laravel, чтобы она позволяла аутентифицироваться только при подтверждении пользователя, но у меня возникла проблема при использовании имени входа для электронной почты и имени пользователя, всякий раз, когда я получаю вход в систему, я получаю: «Поле электронной почты обязательно.» Спасибо.

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Validation\ValidationException;


class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/';

    public function __construct()
    {
    $this->middleware('guest')->except('logout');
    }
    public function showLoginForm()
{
    $title= 'Login';   
    return view('auth.login', compact('title')); 
}

    public function login(Request $request)
    {
      $login=$request->email;
              $login_type = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'name';

        $this->validateLogin($request);

        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }
        if($this->guard()->validate($this->credentials($request))) {
            if(Auth::attempt([$login_type => $login, 'password' => $request->input('password'), 'confirmed' => 1])) {
                session()->flash('status', 'Login exitoso!');
                return redirect()->intended('/');
            }  else {
                $this->incrementLoginAttempts($request);
                $title= 'Login';
                return view('auth.verify', compact('title'));

            }
        } else {
            // dd('ok');
            $this->incrementLoginAttempts($request);
            throw ValidationException::withMessages([
            $this->username() => [trans('auth.failed')],
        ]);
            return redirect('/login')->withInput(Input::except('password'))->with('errors', 'Credenciales invalidas.');
        }
    }

}

Обновление: Я решил это с помощью следующего кода:

 public function login(Request $request)
{
    $this->validate($request, [
        'login'    => 'required',
        'password' => 'required',
    ]);

    $login_type = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) 
        ? 'email' 
        : 'name';

    if (Auth::attempt([$login_type => $request->input('login'), 'password' => $request->input('password'),'confirmed' => 1])) {
        return redirect()->intended($this->redirectPath());
    }
      else {
                $this->incrementLoginAttempts($request);
                $title= 'Login';
                return view('auth.verify', compact('title'));

            }

    return redirect()->back()
        ->withInput()
        ->withErrors([
            'login' => 'Las credenciales no estan en nuestros registros',
        ]);
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...