Multi Authentication Role in Laravel 6

STEP 1
First you have to create the middleware that how much you have role .
I have two role User and Admin ,

Admin Middleware:

Code:
<?php
namespace App\Http\Middleware;
use Closure;use Illuminate\Support\Facades\Auth;
class AdminMiddleware{    /**     * Handle an incoming request.     *     * @param  \Illuminate\Http\Request  $request     * @param  \Closure  $next     * @return mixed     */    public function handle($request, Closure $next)    {        if (Auth::check() && Auth::user()->role->id==1) {            return $next($request);
        }else{            return redirect()->route('login');        }    }}

UserMiddleware:

Code:
<?php
namespace App\Http\Middleware;
use Closure;use Illuminate\Support\Facades\Auth;
class UserMiddleware{    /**     * Handle an incoming request.     *     * @param  \Illuminate\Http\Request  $request     * @param  \Closure  $next     * @return mixed     */    public function handle($request, Closure $next)    {        if (Auth::check() && Auth::user()->role->id==2) {            return $next($request);
        }else{            return redirect()->route('login');        }    }}


STEP 2

RedirrectIfAuthenticate:


<?php
namespace App\Http\Middleware;
use Closure;use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated{    /**     * Handle an incoming request.     *     * @param  \Illuminate\Http\Request  $request     * @param  \Closure  $next     * @param  string|null  $guard     * @return mixed     */    public function handle($request, Closure $next, $guard = null)    {        if (Auth::guard($guard)->check() && Auth::user()->role->id==1) {            return redirect()->route('admin.dashboard');        } elseif (Auth::guard($guard)->check() && Auth::user()->role->id==2){            return redirect()->route('user.dashboard');        } else {            return $next($request);        }
    }}



STEP 3

Kernel.php



<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel{    /**     * The application's global HTTP middleware stack.     *     * These middleware are run during every request to your application.     *     * @var array     */    protected $middleware = [        \App\Http\Middleware\TrustProxies::class,        \App\Http\Middleware\CheckForMaintenanceMode::class,        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,        \App\Http\Middleware\TrimStrings::class,        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];
    /**     * The application's route middleware groups.     *     * @var array     */    protected $middlewareGroups = [        'web' => [            \App\Http\Middleware\EncryptCookies::class,            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,            \Illuminate\Session\Middleware\StartSession::class,            // \Illuminate\Session\Middleware\AuthenticateSession::class,            \Illuminate\View\Middleware\ShareErrorsFromSession::class,            \App\Http\Middleware\VerifyCsrfToken::class,            \Illuminate\Routing\Middleware\SubstituteBindings::class,        ],
        'api' => [            'throttle:60,1',            'bindings',        ],    ];
    /**     * The application's route middleware.     *     * These middleware may be assigned to groups or used individually.     *     * @var array     */    protected $routeMiddleware = [        'auth' => \App\Http\Middleware\Authenticate::class,        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,        'can' => \Illuminate\Auth\Middleware\Authorize::class,        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,        'admin' => \App\Http\Middleware\AdminMiddleware::class,        'user' => \App\Http\Middleware\UserMiddleware::class,    ];
    /**     * The priority-sorted list of middleware.     *     * This forces non-global middleware to always be in the given order.     *     * @var array     */    protected $middlewarePriority = [        \Illuminate\Session\Middleware\StartSession::class,        \Illuminate\View\Middleware\ShareErrorsFromSession::class,        \App\Http\Middleware\Authenticate::class,        \Illuminate\Session\Middleware\AuthenticateSession::class,        \Illuminate\Routing\Middleware\SubstituteBindings::class,        \Illuminate\Auth\Middleware\Authorize::class,    ];}


STEP 4

Login Controller :



<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\AuthenticatesUsers;use Illuminate\Support\Facades\Auth;
class LoginController extends Controller{    /*    |--------------------------------------------------------------------------    | Login Controller    |--------------------------------------------------------------------------    |    | This controller handles authenticating users for the application and    | redirecting them to your home screen. The controller uses a trait    | to conveniently provide its functionality to your applications.    |    */
    use AuthenticatesUsers;
    /**     * Where to redirect users after login.     *     * @var string     */    protected $redirectTo = '/home';


    protected function redirectTo()    {        if (auth()->user()->role_id == 1) {            return view('admin/dashboard');
        }
        elseif (auth()->user()->role_id == 2) {            return view('user/dashboard');        }

    }    /**     * Create a new controller instance.     *     * @return void     */    public function __construct()    {        $this->middleware('guest')->except('logout');    }}

0 Comments:

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More