Home > OS >  Can't login using Laravel with correct credentials
Can't login using Laravel with correct credentials

Time:04-04

Good day, I've been having a hard time solving this problem for almost a week now. I'm trying to login my Laravel project, the problem is it doesn't login even though the email and password (hashed in db) input is correct. Any help will be greatly appreciated. Below are the code of my files for LoginController.php, login.blade.php, and web.php

LoginController.php


namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Auth;
use DB;
use App\Models\Distributor;
use Carbon\Carbon;
use Session;
use Brian2694\Toastr\Facades\Toastr;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except([
            'logout',
            'locked',
            'unlock'
        ]);
    }

    public function login()
    {

    return view('auth.login');
    }

    public function username(){ return 'email_address'; 
     }


    public function authenticate(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
        ]);

        $email    = $request->email;
        $password = $request->password;
        
        
        if (Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {
   
            Toastr::success('Login successfully :)','Success');
            return redirect()->intended('orders.sellload');
        }elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password])) {
          
            Toastr::success('Login successfully :)','Success');
            return redirect()->intended('orders.sellload');
        }elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {
          
            Toastr::success('Login successfully :)','Success');
            return redirect()->intended('admin.distributor');
        }
        elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password])) {
          
            Toastr::success('Login successfully :)','Success');
            return redirect()->intended('admin.distributor');
        }else{
            Toastr::error('fail, WRONG USERNAME OR PASSWORD :)','Error');
            return redirect('login');
        }

    }

    public function logout()
    {
        Auth::logout();
        Toastr::success('Logout successfully :)','Success');
        return redirect('login');
    }

}

login.blade.php

@extends('layouts.app')
@section('content')
    <div id="auth">
        <div >
        <div >
        </div>

            <div >
                <div id="auth-left">
                <p style="text-align:center;"><img src="assets/images/logo/icon.png" width="300" align>
                </p>
                   
                    {{-- message --}}
                    {!! Toastr::message() !!}
                   
                    <p style="text-align:center;">Welcome to John Doe Portal</p>
                    @if(session()->has('error'))
                        <div >
                            {{ session()->get('error') }}
                        </div>
                    @endif
                    <br>
                    <form method="POST" action="{{ route('login') }}" >
                        @csrf
                        <div >
                            <input type="text"  name="email" value="{{ old('email') }}" placeholder="Enter email">
                            <div >
                                <i ></i>
                            </div>
                            @error('email')
                                <span  role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div >
                            <input type="password"  name="password" placeholder="Enter Password">
                            <div >
                                <i ></i>
                            </div>
                            @error('password')
                                <span  role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div >
                            <input  type="checkbox" value="remember_me" id="remember_me" name="remember_me">
                            <label  for="flexCheckDefault">
                                Keep me logged in
                            </label>
                        </div>
                        <button >LOG IN</button>
                    </form>
                    
                </div>
            </div>

        <div >
        </div>
          
        </div>
    </div>
@endsection

web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PhotosController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\ResetPasswordController;
use App\Http\Controllers\FormController;
use App\Http\Controllers\UserManagementController;
use App\Http\Controllers\LockScreen;


Route::get('/', function () {
    return view('auth.login');
});

Route::get('/insert', function () {
    
    $activationCodeParam=123456;
    $idParentParam=1;
    $tierParam=2;
    $store = DB::select('
    call createStore(?,?,?)',
    array(activationCodeParam,idParentParam,tierParam));
   
});


Route::group(['middleware'=>'auth'],function()
{
    Route::get('user',function()
    {
        return view('orders.sellload');
    });
    Route::get('home',function()
    {
        return view('orders.sellload');
    });
   
});

Auth::routes();
Route::get('home',function()
{
    return view('orders.sellload');
});
// ----------------------------- home dashboard ------------------------------//
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

// -----------------------------login----------------------------------------//
Route::get('/login', [App\Http\Controllers\Auth\LoginController::class, 'login'])->name('login');
Route::post('/login', [App\Http\Controllers\Auth\LoginController::class, 'authenticate']);
Route::get('/logout', [App\Http\Controllers\Auth\LoginController::class, 'logout'])->name('logout');

CodePudding user response:

Have you tried changing if (Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {

'emailAddress' to 'email' ?

CodePudding user response:

You are missing the session refresh before your redirect.

// validation here

if(Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {
   
   Toastr::success('Login successfully :)','Success');

   $request->session()->regenerate(); // refresh session

   return redirect()->intended('orders.sellload');
}


// …

This shouldn’t be related, but also your if-conditions don’t make sense — because they are all the same and if one matches, the other never can be reached.

  • Related