Laravel Mein Multi Authentication Setup Kaise Karein

Published: May 31, 2025 4 min read
Laravel Multi Auth Laravel Framework Laravel Development Php Laravel Development Authentication

🔧 Prerequisites

  • Basic knowledge of Laravel

  • Composer installed

  • Laravel installed


1. Laravel Project Setup

bash

composer create-project --prefer-dist laravel/laravel multi_auth cd multi_auth

2. Authentication Scaffolding Install Karein (Using Breeze)

bash

composer require laravel/breeze --dev php artisan breeze:install npm install && npm run dev php artisan migrate

3. Admin aur Branch Guards Setup Karein

3.1 Admin Model Banayein

bash

php artisan make:model Admin -m

Admin migration update karein:

php

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

3.2 Branch Model Banayein

bash

php artisan make:model Branch -m

Branch migration:

php
Schema::create('branches', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });

Run migration:

bash

php artisan migrate

3.3 Update Auth Configuration (config/auth.php)

php

'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], 'branch' => [ 'driver' => 'session', 'provider' => 'branches', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class, ], 'branches' => [ 'driver' => 'eloquent', 'model' => App\Models\Branch::class, ], ],

3.4 Admin Middleware

bash

php artisan make:middleware AdminMiddleware

Update AdminMiddleware:

php

public function handle(Request $request, Closure $next) { if (!Auth::guard('admin')->check()) { return redirect('/admin/login'); } return $next($request); }

Register in Kernel.php:

php

'admin' => \App\Http\Middleware\AdminMiddleware::class,

3.5 Branch Middleware

bash

php artisan make:middleware BranchMiddleware

Update BranchMiddleware:

php

public function handle(Request $request, Closure $next) { if (!Auth::guard('branch')->check()) { return redirect('/branch/login'); } return $next($request); }

Register in Kernel.php:

php

'branch' => \App\Http\Middleware\BranchMiddleware::class,

4. Authentication Routes aur Controllers Setup

4.1 Routes in web.php

php

use App\Http\Controllers\AdminAuthController; use App\Http\Controllers\BranchAuthController; Route::prefix('admin')->group(function () { Route::get('login', [AdminAuthController::class, 'showLoginForm'])->name('admin.login'); Route::post('login', [AdminAuthController::class, 'login'])->name('admin.login.submit'); Route::post('logout', [AdminAuthController::class, 'logout'])->name('admin.logout'); Route::middleware('admin')->group(function () { Route::get('dashboard', [AdminAuthController::class, 'dashboard'])->name('admin.dashboard'); }); }); Route::prefix('branch')->group(function () { Route::get('login', [BranchAuthController::class, 'showLoginForm'])->name('branch.login'); Route::post('login', [BranchAuthController::class, 'login'])->name('branch.login.submit'); Route::post('logout', [BranchAuthController::class, 'logout'])->name('branch.logout'); Route::middleware('branch')->group(function () { Route::get('dashboard', [BranchAuthController::class, 'dashboard'])->name('branch.dashboard'); }); });

4.2 AdminAuthController

bash

php artisan make:controller AdminAuthController
php

public function showLoginForm() { return view('admin.login'); } public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::guard('admin')->attempt($credentials)) { return redirect()->intended(route('admin.dashboard')); } return back()->withErrors(['email' => 'Credentials do not match.']); } public function logout() { Auth::guard('admin')->logout(); return redirect()->route('admin.login'); } public function dashboard() { return view('admin.dashboard'); }

4.3 BranchAuthController

bash

php artisan make:controller BranchAuthController
php
public function showLoginForm() { return view('branch.login'); } public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::guard('branch')->attempt($credentials)) { return redirect()->intended(route('branch.dashboard')); } return back()->withErrors(['email' => 'Credentials do not match.']); } public function logout() { Auth::guard('branch')->logout(); return redirect()->route('branch.login'); } public function dashboard() { return view('branch.dashboard'); }

✅ Conclusion

Aaj humne dekha kaise Laravel mein multi-authentication setup kiya ja sakta hai jisme multiple user roles (Admin aur Branch) use ho rahe hain. Aap is setup ko aur enhance kar sakte ho by:

  • Role-based access control (RBAC)

  • Email verification

  • Profile management

Laravel development ko aur explore karne ke liye official documentation zaroor padhein.

Author
Paramjeet Yogi

Web Developer & Blogger passionate about Laravel and modern web development.