Laravel 7/6 Multi Auth( Authentication) Example Tutorial

Laravel 7/6 Multi Auth( Authentication) Example Tutorial

Laravel multi (auth) authentication- Today we are going to show you, how to create multi auth system in laravel 7/6. Multiple auth system means multiple users can log in in one application according to roles.

Multiple authentications are very important in the large application of laravel. Authentication is the process of recognizing user credentials.

In this laravel multi auth system, we will create a middleware for checking the user’s role. It is an admin or normal user. We will create middleware name admin and configuration in the kernal.php file and also in the route file.

Laravel Multi Auth System

  • Install Laravel New Fresh
  • Setup Database Credentials
  • Setting up migration and model
  • Define Route
  • Create Methods in Controller
  • Create Blade View
  • Start Development Server
  • Conclusion

1. Install Laravel New Fresh

First We need to Download fresh Laravel setup. Use the below command to download the laravel fresh setup on your system. We will keep the name of folder laravel multi auth

composer create-project --prefer-dist laravel/laravel LaraMulti

2. Setup Database Credentials

After successfully download laravel 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

3. Setting up migration and model

Next, we will add new file name is_admin in the 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 the database.

php artisan migrate

Now, we need to create a build-in authentication system. Use the below command for creating the default auth system in laravel. We will change laravel build-in auth system to multi auth system

This command will create routes, controllers and views files for Laravel Login Authentication and registration. It means to provide a basic laravel login authentication and registration Complete system. Let’s open the command prompt and type the below command.

first install laravel 6 UI in your project using the below command:

 composer require laravel/ui 
 composer laravel ui

Second use the below command for creating login, registration, forget password and reset password blade files:

  php artisan ui bootstrap --auth 

After that run

npm install

4. 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 creating a middleware go-to app/Http/middleware. Implement the logic here for checking a logged in 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,
 ];.
 ?>

5. 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');

6. 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’);
}

7. 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.

7. Create admin.blade.php

Open the resources/views/admin.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

8. Run development server

Now we will start the development 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 the Laravel register.
  • Second Change the status is_admin = 1
  • Third Login into a laravel application

You may like

  1. Laravel 6 Twitter Login Example Using Socialite Package
  2. Laravel 6 Linkedin Login Tutorial With Live Demo
  3. Login with Facebook In Laravel 6 -Example
  4. Laravel 6 Socialite Google Login Example
  5. Laravel 6 Github Login Example
  6. Laravel 6 Custom Login Registration Example Tutorial
  7. Laravel 6 REST API (Login & Registration) Authentication

AuthorAdmin

My name is Devendra Dode. I am a full-stack developer, entrepreneur, and owner of Tutsmake.com. I like writing tutorials and tips that can help other developers. I share tutorials of PHP, Python, Javascript, JQuery, Laravel, Livewire, Codeigniter, Node JS, Express JS, Vue JS, Angular JS, React Js, MySQL, MongoDB, REST APIs, Windows, Xampp, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL and Bootstrap from a starting stage. As well as demo example.

Leave a Reply

Your email address will not be published. Required fields are marked *