Implementing Multi-Authentication in Laravel (Admin & Users Login)

Implementing Multi-Authentication in Laravel (Admin & Users Login)

Introduction

Multi-authentication allows different user roles (e.g., admin and users) to have separate login systems. In this guide, we will implement multi-auth in Laravel using guards and middleware.

Step 1: Install Laravel Authentication

Laravel provides built-in authentication scaffolding. Install it using:

composer require laravel/ui
php artisan ui bootstrap --auth
npm install && npm run dev

Step 2: Configure Guards in auth.php

Edit config/auth.php to define guards for admin and users.

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],

Step 3: Create an Admin Model and Migration

php artisan make:model Admin -m

Update the migration file:

Schema::create('admins', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->string('password');
    $table->timestamps();
});

Run the migration:

php artisan migrate

Step 4: Create Admin Authentication Routes & Controller

php artisan make:controller AdminController

Define routes in routes/web.php:

Route::prefix('admin')->group(function () {
    Route::get('/login', [AdminController::class, 'showLoginForm'])->name('admin.login');
    Route::post('/login', [AdminController::class, 'login']);
    Route::middleware('auth:admin')->group(function () {
        Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard');
    });
});

Step 5: Implement Admin Login Logic

public function login(Request $request) {
    $credentials = $request->validate([
        'email' => 'required|email',
        'password' => 'required'
    ]);
    
    if (Auth::guard('admin')->attempt($credentials)) {
        return redirect()->route('admin.dashboard');
    }
    return back()->withErrors(['email' => 'Invalid credentials']);
}

Conclusion

With these steps, you can implement multi-authentication in Laravel, allowing admins and users to log in separately.

© 2025 Developer Sahayak. All Rights Reserved.

0 Comments