Laravel multi (auth) authentication- Today we are going to show you, how to create multi auth system in laravel 5.8. Mulitple auth system means multiple users can login in one application according to roles.
Multiple authentication is very important in the large application of laravel 5.6, 5.7, 5.8. Authentication is the process of recognizing user credentials.
In this laravel multi auth system, we will create a middleware for checking the users role. It is admin or normal user. We will create middleware name admin and configuration in kernal.php file and also in route file.
Laravel Multi Auth System
Contents
- Download Laravel 5.8 Setup
- Setup Database Credentials
- Setting up migration and model
- Define Route
- Create Methods in Controller
- Create Blade View
- Start Development Server
- Conclusion
Download Laravel 5.8 Setup
First We need Download fresh Laravel 5.8 setup. Use the below command to download the laravel 5.8 fresh setup on your system. We will keep the name of folder laravel multi auth
composer create-project --prefer-dist laravel/laravel multi-auth
Setup Database Crendentials
After successfully download laravel 5.8 Application, Go to your project .env file and set up database credential and move next step :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=here your database name here
DB_USERNAME=here database username here
DB_PASSWORD=here database password here
Setting up migration and model
Next we will add new files name is_admin in users table. Open the migration of user in Database/migration/user.php and update the following field for admin.
$table->boolean('is_admin')->nullable();
Next open app/User.php and update the below field name is_admin here.
protected $fillable = [
'name', 'email','avatar','password','mobile_number','is_admin',
];
Now, we will add is_admin filed after that we will use the below command for creating this field into database.
php artisan migrate
Now, we need to create build-in authentication system. Use the below command for creating default auth system in laravel. We will change laravel build-in auth system to multi auth system
php artisan make:auth
Create Middleware and Setting up
In this laravel multi auth system , we need to create a middleware for checking the users. Who can access the admin area or who can access the normal user area.
php artisan make:middleware Admin
After create a middleware go to app/http/middleware. Implement the logic here for checking a loggedin users. Update the code in this handle function.
if(auth()->user()->is_admin == 1){
return $next($request);
}
return redirect(‘home’)->with(‘error’,’You don't have admin access’);
}
We need to register this route in the app/Http/Kernel.php . Update the $routeMiddleware property with :
// Kernel.php
protected $routeMiddleware = [
‘auth’ => \Illuminate\Auth\Middleware\Authenticate::class,
‘auth.basic’ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
‘bindings’ => \Illuminate\Routing\Middleware\SubstituteBindings::class,
‘can’ => \Illuminate\Auth\Middleware\Authorize::class,
‘guest’ => \App\Http\Middleware\RedirectIfAuthenticated::class,
‘throttle’ => \Illuminate\Routing\Middleware\ThrottleRequests::class,
‘admin’ => \App\Http\Middleware\Admin::class,
];.
?>
Create Route
Now We will one routes in web.php file as like below.
Open routes/web.php file
Route::get('admin/routes', 'HomeController@admin')->middleware('admin');
Create Functions in Controller
Now open the controller let’s go to the => app/Http/Controllers/HomeController.php. Now create two methods here.
public function index()
{
return view(‘home’);
}
public function admin()
{
return view(‘admin’);
}
Create Blade View
Now we will create two blade view files first is display home page and second is display after login.
Open the resources/views/home.blade. file and update the below code.
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Dashboard</div> <div class="card-body"> @if(auth()->user()->is_admin == 1) <a href="{{url('admin/routes')}}">Admin</a> @else <div class=”panel-heading”>Normal User</div> @endif </div> </div> </div> </div> </div> @endsection
Now, I checked the user profile. If it is admin,
it will navigate to the admin area. Otherwise, it will redirect to users area.
Create admin.blade.php
Open the resources/views/home.blade.php file and update the following code:
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Dashboard</div> <div class="card-body"> @if(auth()->user()->is_admin == 1) <a href="{{url('admin/routes')}}">Admin</a> @else <div class=”panel-heading”>Normal User</div> @endif </div> </div> </div> </div> </div> @endsection
Start development server
Now we will start developement server using the below command and test our laravel multi auth system:
php artisan serve
After complete all steps, see the last testing steps for laravel multi auth system :
- First register a user through Laravel register.
- Second Change the status is_admin = 1
- Third Login into laravel application
If you want to remove public or public/index.php from URL In laravel, Click Me
Wow!! that was clean and simple to understand for a starter like me. Thank you.
please i dont know how to get to the admin login
Superb tutorial sir
Nice
Thanks to the Laravel Multi auth System. I have confusion on multi auth system. So I found your tutorial and read and learn how to create multiple authentication systems in laravel.
Thanks, again!