You are on page 1of 3

1

HowtousemultiAuthinlaravel5.2
Doesanyoneknowhowtousemultiauthenticateinlaravel5.2!iwanttouseitbutidon'tknowhowtodo?ifanyonehastutorialorproject
settingupmultiauthenticate,pleasehelpmeout
php laravel5
askedDec28'15at9:09

TonTam
23

Here'showtouse BasheerAhmed Dec28'15at9:26


Doyoueventriedtomakeamoreauthentications?Thebaseforauthenticationis Auth::attempt method

(readmore:laravel.com/docs/5.2/authentication#authenticatingusers ).GrzegorzGajdaDec28'15at9:29
@BasheerAhmedimeaniwanttouseinlaravel5.2 TonTam Dec28'15at10:01
Thatwillgiveyouabasicideaofhowtostartwith.. BasheerAhmed Dec28'15at10:04
@GrzegorzGajdaiamanewbieinlaravel!ijustknowhowtousedefaultuserauthentication!ifyouhave

donemultiauthenticate,canyougivemesomeexampleproject? TonTam Dec28'15at10:10

3Answers

Youneedtwotables

users

and

admins

Runcommandfollowingcommandtocreatebuiltinauth

phpartisanmake:auth

TwomodelsUsers(Alreadyexist)andAdmin

<?php
namespaceApp;
useIlluminate\Foundation\Auth\UserasAuthenticatable;
classAdminextendsAuthenticatable
{

Runcodesnippet

Copysnippettoanswer

Nowopenconfig/auth.phpandmakethefollowingchanges

'guards'=>[
'web'=>[
'driver'=>'session',
'provider'=>'users',
],
'admin'=>[
'driver'=>'session',
'provider'=>'admins',
],
],
'providers'=>[
'users'=>[
'driver'=>'eloquent',
'model'=>App\User::class,
],
'admins'=>[
'driver'=>'eloquent',
'model'=>App\Admin::class,
],
],
'passwords'=>[
'users'=>[
'provider'=>'users',
'email'=>'auth.emails.password',
'table'=>'password_resets',
'expire'=>60,
],

'admins'=>[
'provider'=>'admins',
'email'=>'auth.emails.password',
'table'=>'password_resets',
'expire'=>60,
],
],

Runcodesnippet

CreateanewMiddleware

Copysnippettoanswer

RedirectIfNotAdmin

<?php
namespaceApp\Http\Middleware;
useClosure;
useIlluminate\Support\Facades\Auth;
classRedirectIfNotAdmin
{
/**
*Handleanincomingrequest.

help

*
*@param\Illuminate\Http\Request$request
*@param\Closure$next
*@paramstring|null$guard
*@returnmixed
*/
publicfunctionhandle($request,Closure$next,$guard='admin')

if(!Auth::guard($guard)>check()){

returnredirect('/admin/login');

return$next($request);

}
}

Runcodesnippet

Copysnippettoanswer

ChangesinKernel.php

protected$middleware=[
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,

\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,

];

protected$middlewareGroups=[
'web'=>[
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
//\Illuminate\Session\Middleware\StartSession::class,
//\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],

'api'=>[
'throttle:60,1',
],
];

protected$routeMiddleware=[
'auth'=>\App\Http\Middleware\Authenticate::class,
'auth.basic'=>\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest'=>\App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle'=>\Illuminate\Routing\Middleware\ThrottleRequests::class,

'admin'=>\App\Http\Middleware\RedirectIfNotAdmin::class,
];

Runcodesnippet

Copysnippettoanswer

CreateanewfolderHttp/Controller/AdminauthandcopythefilesfromHttp/Controller/Authfolder
OpenthefileHttp/Controller/Adminauth/AuthController.phpandmakethefollowingchanges

<?php
namespaceApp\Http\Controllers\Adminauth;
useApp\Admin;
useValidator;
useApp\Http\Controllers\Controller;
useIlluminate\Foundation\Auth\ThrottlesLogins;
useIlluminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
useAuth;
classAuthControllerextendsController
{
useAuthenticatesAndRegistersUsers,ThrottlesLogins;
protected$redirectTo='/admin';

protected$guard='admin';

publicfunctionshowLoginForm()

if(Auth::guard('admin')>check())

returnredirect('/admin');

returnview('admin.auth.login');

publicfunctionshowRegistrationForm()

returnview('admin.auth.register');

publicfunctionresetPassword()

returnview('admin.auth.passwords.email');

publicfunctionlogout(){

Auth::guard('admin')>logout();

returnredirect('/admin/login');

}
}

Runcodesnippet

Copysnippettoanswer

CreatenewfolderHttp/Controller/admin,copyController.phpfileinthefolderfromHttp/Controller/
createnewfileHttp/Controller/admin/employee.php

<?php
namespaceApp\Http\Controllers\admin;

useIlluminate\Http\Request;
useIlluminate\Routing\Controller;
useAuth;
useApp\Admin;
classEmployeeextendsController
{

publicfunction__construct(){
$this>middleware('admin');
}

publicfunctionindex(){

returnview('admin.home');
}
}

Runcodesnippet

Copysnippettoanswer

movetoresources/viewscreatenewfolderresources/views/admincopy
resources/views/auth,resources/views/layouts&resources/views/home.blade.php

andpostinto resources/views/admin andopentheeachfileinadminfolderandaddadminbefore


eachpath,Nowthepathshouldlooklike
@extends('admin.layouts.app')

andyourHttp/routes.phplooklike

<?php
Route::get('/',function(){
returnview('welcome');
});
Route::get('/admin/login','Adminauth\AuthController@showLoginForm');
Route::post('/admin/login','Adminauth\AuthController@login');
Route::get('/admin/password/reset','Adminauth\PasswordController@resetPassword');
Route::group(['middleware'=>['admin']],function(){
//LoginRoutes...
Route::get('/admin/logout','Adminauth\AuthController@logout');

//RegistrationRoutes...
Route::get('admin/register','Adminauth\AuthController@showRegistrationForm');
Route::post('admin/register','Adminauth\AuthController@register');
Route::get('/admin','Admin\Employee@index');
});

Route::group(['middleware'=>'web'],function(){
Route::auth();

Route::get('/home','HomeController@index');

});

Runcodesnippet

Copysnippettoanswer

Thatsitopenyoursiteinbrowserandcheckandforadminyoursiteurl/admin
Enjoy....
answeredMar3at12:53

ShoaibRehan
179

Thanksforthis,itwasgreat,onethingIamfindingthoughisthatthe"/admin/logout"routeisbeing

overriddenbymy"/"routein'web'.Sothatitredirectsstraightto"/"insteadofcarryingouttheworkin
"/admin/logout".Isthereareasonforthatbehaviour?DavidGApr2at15:00
Thanksforgreattutorial.TheonlyproblemisthattheroutesAuthdefaultuserarevisiblealthoughthislog

withtheadmin.Example:I'mloggedinasadministratorthroughtherouteadmins/login,butevenIcansee
thepath/loginofthedefaultuserofLaravelandviceversa.AsIcanfixthat?GreetingsfromChile
CristianMezaApr18at9:08
iamgettingthiserrorwhencalling/admin/password/reset"ErrorExceptioninResetsPasswords.phpline252:

Missingargument1forApp\Http\Controllers\Adminauth\PasswordController::resetPassword()"
KhanMuhammadMay18at8:15

First,wecreatetwomodels:userandadmin
Then,weupdatetheconfig/auth.phpfile:
return[
'defaults'=>[
'guard'=>'user',
'passwords'=>'user',
],
'guards'=>[
'user'=>[
'driver'=>'session',
'provider'=>'user',
],
'admin'=>[
'driver'=>'session',
'provider'=>'admin',
],
],
'providers'=>[
'user'=>[
'driver'=>'eloquent',
'model'=>'App\User',
],

You might also like