Professional Documents
Culture Documents
HowtousemultiAuthinlaravel5.2
Doesanyoneknowhowtousemultiauthenticateinlaravel5.2!iwanttouseitbutidon'tknowhowtodo?ifanyonehastutorialorproject
settingupmultiauthenticate,pleasehelpmeout
php laravel5
askedDec28'15at9:09
TonTam
23
(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
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
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',
],