Multi User Authentication in laravel?

User Model

File name : index.php

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
use Notifiable;

protected $fillable = [
'name', 'email', 'password', 'is_admin'
];
protected $hidden = [
'password', 'remember_token',
];

protected $casts = [
'email_verified_at' => 'datetime',
];
}

User table

File name : index.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->boolean('is_admin')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}

Create IsAdmin Middleware

File name : index.php

php artisan make:middleware IsAdmin

File name : index.php

<?php

namespace App\Http\Middleware;

use Closure;

class IsAdmin
{

public function handle($request, Closure $next)
{
//return $next($request);

if(auth()->user()->is_admin == 1){
return $next($request);
}

return redirect('home')->with('error',"You don't have admin access.");
}
}

kernel.php

File name : index.php

protected $routeMiddleware = [

'is_admin' => \App\Http\Middleware\IsAdmin::class,
];

Create Route

File name : index.php

Route::get('admin/home', 'HomeController@adminHome')->name('admin.home')->middleware('is_admin');
Route::get('/home', 'HomeController@index')->name('home');

Add Method on HomeController

File name :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{

public function __construct()
{
//$this->middleware('auth');
$this->middleware(['auth', 'verified']);
}


public function index()
{
return view('admin.user-dashboard');
}

public function adminHome()
{
return view('admin.dashboard');
}

}

Create blade file user-dashboard.php

File name : admin.user-dashboard.blade.php

@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">
You are normal user.
</div>
</div>
</div>
</div>
</div>
@endsection

Admin Dashboard

File name : admin.dashboard.blade.php

@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">
You are Admin.
</div>
</div>
</div>
</div>
</div>
@endsection

Update on LoginController

File name : app/Http/Controllers/Auth/LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

class LoginController extends Controller
{

use AuthenticatesUsers;


protected $redirectTo = '/home';


public function __construct()
{
$this->middleware('guest')->except('logout');
}

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()->is_admin == 1) {
return redirect()->route('admin.home');
}else{
return redirect()->route('home');
}
}else{
return redirect()->route('login')
->with('error','Email-Address And Password Are Wrong.');
}

}
}

Create Seeder

php artisan make:seeder CreateUsersSeeder

File name : database/seeds/CreateUsersSeeder.php

<?php

use Illuminate\Database\Seeder;
use App\User;

class CreateUsersSeeder extends Seeder
{

public function run()
{
$user = [
[
'name'=>'Sana',
'email'=>'sana@gmail.com',
'is_admin'=>'1',
'password'=> bcrypt('sana'),
],
[
'name'=>'mahtab',
'email'=>'mahtab.habib@gmail.com',
'is_admin'=>'0',
'password'=> bcrypt('mahtab'),
],
];

foreach ($user as $key => $value) {
User::create($value);
}
}
}

File name :

php artisan db:seed --class=CreateUsersSeeder





Previous Next


Trending Tutorials




Review & Rating

0.0 / 5

0 Review

5
(0)

4
(0)

3
(0)

2
(0)

1
(0)

Write Review Here


Ittutorial