Laravel 9 Multi Auth Create Multiple Authentication in Laravel | Laravel Auth Step by step tutorial

Опубликовано: 02 Январь 2023
на канале: Easy Programing
3,543
34

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