Custom Login System in Laravel

Custom Login System in Laravel

  1. Create LoginController like this
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use View;

class LoginController extends Controller
{
    function login_view()
    {
        return view('login');
    }

    function login_api(Request $request)
    {
        $login_data = [filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username' => $request->email, 'password' => $request->password];

        if (Auth::attempt($login_data))
        {
            return redirect('/admin/dashboard');
        } 
        else
        {
           echo "Invalid Username Password";
        }
        
    }

    function logout(Request $request) 
    {
        Auth::logout();
        return redirect('/login');
    }
}

2. Create AdminController like this

<?php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller as Controller;
use Illuminate\Http\Request;
use View;

class AdminController extends Controller
{
    function dashboard_view()
    {
        return view('dashboard');
    }
}

3. Create Adminauth middleware like this

<?php
namespace App\Http\Middleware;

use Closure;
Use Auth;
Use Redirect;

class AdminAuth
{
    public function handle($request, Closure $next)
    {
        if(!Auth::check())
        {
            return redirect('/login');
        }
        
        return $next($request);
    }
}

4. Add this middleware in Kernel

protected $routeMiddleware = [
        
        // other Middleware
        
        'AdminAuth' => \App\Http\Middleware\AdminAuth::class,

    ];

5. Add this route in Web.php file

use App\Http\Controllers\LoginController;
use App\Http\Controllers\AdminController;


Route::get('/', [LoginController::class, 'login_view']);
Route::post('/login-api', [LoginController::class, 'login_api']);

Route::group(['prefix' => 'admin'], function ()
{
    Route::group(['middleware' => 'AdminAuth'], function ()
    {
        Route::get('/dashboard', [AdminController::class, 'dashboard_view']);
    });
});

6. Create login.blade.php file and put into view folder

<form action="{{ url('/login-api') }}" method="Post">
  @csrf
        Email : <input type="email" name="email">
        Password : <input type="password" name="password">
        <button> Login </button>
<form>

7. Create dashboard.blade.php file and put into view folder

<!DOCTYPE html>

<html lang="en">
     <body>
         Admin Dashboard
    </body>
</html>

0 Comments

Leave a Reply

You must be logged in to post a comment.