Create Multiple Authentication in Laravel 9
1. update app/Models/User.phpCreate Multiple Authentication in Laravel 9
1. update app/Models/User.php
protected function type(): Attribute
{
return new Attribute(
get: fn ($value) =) ["user", "admin", "manager"][$value],
);
}
2. composer require laravel/ui
php artisan ui bootstrap --auth
npm install
npm run dev
3. Create Middleware
php artisan make:middleware UserAccess
4. app/Http/Kernel.php
Add this rouemiddleware
'user-access' =) \App\Http\Middleware\UserAccess::class,
5. routes/web.php
Open and add these routes
Route::middleware(['auth', 'user-access:user'])-)group(function () {
Route::get('/home', [HomeController::class, 'index'])-)name('home');
});
Route::middleware(['auth', 'user-access:admin'])-)group(function () {
Route::get('/admin/home', [HomeController::class, 'adminHome'])-)name('admin.home');
});
Route::middleware(['auth', 'user-access:manager'])-)group(function () {
Route::get('/manager/home', [HomeController::class, 'managerHome'])-)name('manager.home');
});
6. Update controller
app/Http/Controllers/HomeController.php
public function adminHome()
{
return view('adminHome');
}
public function managerHome()
{
return view('managerHome');
}
7. Create Blade view
resources/views/home.blade.php
resources/views/adminHome.blade.php
resources/views/managerHome.blade.php
8. Update on LoginController
app/Http/Controllers/Auth/LoginController.php
public function login(Request $request)
{
$input = $request-)all();
$this-)validate($request, [
'email' =) 'required|email',
'password' =) 'required',
]);
if(auth()-)attempt(array('email' =) $input['email'], 'password' =) $input['password'])))
{
if (auth()-)user()-)type == 'admin') {
return redirect()-)route('admin.home');
}else if (auth()-)user()-)type == 'manager') {
return redirect()-)route('manager.home');
}else{
return redirect()-)route('home');
}
}else{
return redirect()-)route('login')
-)with('error','Email-Address And Password Are Wrong.');
}
}
9. Create Seeder
php artisan make:seeder CreateUsersSeeder
10. php artisan db:seed --class=CreateUsersSeeder
protected function type(): Attribute
{
return new Attribute(
get: fn ($value) =) ["user", "admin", "manager"][$value],
);
}
2. composer require laravel/ui
php artisan ui bootstrap --auth
npm install
npm run dev
3. Create Middleware
php artisan make:middleware UserAccess
4. app/Http/Kernel.php
Add this rouemiddleware
'user-access' =) \App\Http\Middleware\UserAccess::class,
5. routes/web.php
Open and add these routes
Route::middleware(['auth', 'user-access:admin'])-)group(function () {
Route::get('/admin/home', [HomeController::class, 'adminHome'])-)name('admin.home');
});
Route::middleware(['auth', 'user-access:manager'])-)group(function () {
Route::get('/manager/home', [HomeController::class, 'managerHome'])-)name('manager.home');
});
6. Update controller
app/Http/Controllers/HomeController.php
public function adminHome()
{
return view('adminHome');
}
public function managerHome()
{
return view('managerHome');
}
7. Create Blade view
resources/views/home.blade.php
resources/views/adminHome.blade.php
resources/views/managerHome.blade.php
8. Update on LoginController
app/Http/Controllers/Auth/LoginController.php
public function login(Request $request)
{
$input = $request-)all();
$this-)validate($request, [
'email' =) 'required|email',
'password' =) 'required',
]);
if(auth()-)attempt(array('email' =) $input['email'], 'password' =) $input['password'])))
{
if (auth()-)user()-)type == 'admin') {
return redirect()-)route('admin.home');
}else if (auth()-)user()-)type == 'manager') {
return redirect()-)route('manager.home');
}else{
return redirect()-)route('home');
}
}else{
return redirect()-)route('login')
-)with('error','Email-Address And Password Are Wrong.');
}
}
9. Create Seeder
php artisan make:seeder CreateUsersSeeder
10. php artisan db:seed --class=CreateUsersSeeder