मैं स्व-सिखाया Laravel हूँ। मैं कस्टम संदेशों के साथ लार्वा लॉगिन के लिए और शर्तें जोड़ने की कोशिश कर रहा हूं, लेकिन त्रुटि कभी नहीं फेंकी जाती है! मैं यह जांचने की कोशिश कर रहा हूं कि उपयोगकर्ता लॉक नहीं है और ईमेल सत्यापित है या नहीं। यहाँ लॉगिन नियंत्रक में मेरा कोड है:

protected function attemptLogin(Request $request)
{
    $valid = $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    ); // this will return true or false.
    if ($valid) { //if credentials are valid, check additional conditions.
        $user = $this->guard()->user();
        if ($user->email_verified_at == null || $user->locked == true) {
            $valid = false;
            return $valid;
        } else {
            $this->createUserFolder(); // if the login is successfull.
            $valid = true;
            return $valid;
        }
    }
    $valid = false;
    return $valid;
}

protected function sendFailedLoginResponse(Request $request)//this will get triggered if the method above (attemptLogin(Request $request))  returns false.
{
    $credentials = [
        'email' => $request['email'],
        'password' => $request['password'],
    ];
    $valid= Auth::attempt($credentials);
    if ($valid== false) { //if user credentials are incorrect
        $errors = [$this->username() => trans('auth.failed')];
        return redirect()->back()
            ->withInput($request->only($this->username(), 'remember'))
            ->withErrors($errors);
    } else { // //if user credentials are correct
        $user = User::where('email', $request->input('email'))->first();

        if ($user->locked == '1') {
            throw ValidationException::withMessages([
                $this->username() => [trans('auth.locked')],
            ])->redirectTo('login');
        } else {
            throw ValidationException::withMessages([
                $this->username() => [trans('auth.notactivated')],
            ])->redirectTo('login');
        }
    }
}

public function logout(Request $request)
{
    Auth::logout();
    \Artisan::call('cache:clear');
    $this->guard()->logout();
    \Session::flush();
    return redirect(\URL::previous());
}

क्या उपरोक्त के रूप में कई स्थितियों के लिए sendFailedLoginResponse का उपयोग करना संभव है? मेरे कोड में क्या गलत है? मदद के लिए धन्यवाद।

0
Naim R. 24 मई 2021, 09:33
सुनिश्चित नहीं है कि कोई इसे हल करने में सक्षम था, लेकिन मैं नहीं कर सका, किसी भी मदद की वास्तव में सराहना की जाएगी। धन्यवाद।
 – 
Naim R.
11 जून 2021, 19:31

1 उत्तर

सबसे बढ़िया उत्तर
I find the answer as below:

protected function sendFailedLoginResponse(Request $request)//this will get triggered if the method above (attemptLogin(Request $request))  returns false.
{
    $credentials = [
        'email' => $request['email'],
        'password' => $request['password'],
    ];
    $valid = Auth::attempt($credentials);

    if ($valid == false) { //if user credentials are incorrect
        $errors = [$this->username() => trans('auth.failed')];
         Auth::logout();
        return redirect()->back()
            ->withInput($request->only($this->username(), 'remember'))
            ->withErrors($errors);
    } else { // //if user credentials are correct check additional conditions
        $user = User::where('email', $request->input('email'))->first();`enter code here`
        if ($user->locked == 1) {
            $errors = [$this->username() => trans('auth.locked')];
            Auth::logout();
            throw ValidationException::withMessages([
                $this->username() => [trans('auth.locked')],
            ]);
        } else {
            $errors = [$this->username() => trans('auth.notactivated')];
            Auth::logout();
            return redirect()->back()
                ->withInput($request->only($this->username(), 'remember'))
                ->withErrors($errors);
        }
    }
}
0
Naim R. 17 जून 2021, 17:35