So where do you assign these middleware?
Jan 8, 2022
39
Level 8
Middelware dosent trigger
Hi!
Have this strange thing, i am using Middelware when user login to system But it dosent use my middelware ???
LoginController (working fine)
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
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;
public function redirectTo()
{
//$rollen = Auth()->user();
$redirects = [
'Superadmin' => '/admin/dashboard',
'player' => '/admin/player',
'EasyflowAdmin' => '/admin/easyflowadmin',
'Judge' => '/admin/judge',
'Marshal' => '/admin/marshal',
'Starts' => '/admin/starts',
'Federation' => '/admin/federation',
'Admin' => '/admin/admin',
'Trackcrew' => '/admin/trackcrew'
];
$roles = Auth()->user()->roles->map->title;
foreach ($redirects as $role => $url) {
if ($roles->contains($role)) {
return $url;
}
}
return '/login';
}
/**
* Create a new controller instance.
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* The user has logged out of the application.
*
* @return mixed
*/
protected function loggedOut(Request $request)
{
if ($request->wantsJson()) {
return response(null, Response::HTTP_NO_CONTENT);
}
}
}
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\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::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,
\App\Http\Middleware\AuthGates::class,
\App\Http\Middleware\LastUserActivity::class,
// \App\Http\Middleware\SetPreferredLocale::class,
],
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
// 'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\AuthGates::class,
\App\Http\Middleware\SetPreferredLocale::class,
],
];
/**
* 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,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'admin' => \App\Http\Middleware\Admin::class,
'player' => \App\Http\Middleware\Player::class,
'trackcrew' => \App\Http\Middleware\Trackcrew::class,
'superadmin' => \App\Http\Middleware\Superadmin::class,
'federation' => \App\Http\Middleware\Federation::class,
'starts' => \App\Http\Middleware\Starts::class,
'marshal' => \App\Http\Middleware\Marshal::class,
'judge' => \App\Http\Middleware\Judge::class,
'easyflowAdmin' => \App\Http\Middleware\EasyflowAdmin::class,
'dashboard' => \App\Http\Middleware\Dashboard::class,
];
}
Player.php ->middelware
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class Player
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$currentrole = Auth()->user()->roles->map->title;
if (!Auth::check()) {
return redirect()->route('login');
}
if ($currentrole == 'Superadmin') {
return redirect()->route('dashboard');
}
if ($currentrole == 'player') {
return redirect()->route('player');
}
return redirect()->route('login');
}
}
Dashboard.php -> middelware
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Auth;
class Dashboard
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$currentrole = Auth()->user()->roles->map->title;
if (!Auth::check()) {
return redirect()->route('login');
}
if ($currentrole == 'Superadmin') {
return $next($request);
}
if ($currentrole == 'player') {
return redirect()->route('player');
}
return redirect()->route('login');
}
}
Route files:
api.php routes
<?php
Route::group(['prefix' => 'v1', 'as' => 'api.', 'namespace' => 'Api\V1\Admin', 'middleware' => ['auth:sanctum']], function () {
// Abilities
Route::apiResource('abilities', 'AbilitiesController', ['only' => ['index']]);
// Locales
Route::get('locales/languages', 'LocalesController@languages')->name('locales.languages');
Route::get('locales/messages', 'LocalesController@messages')->name('locales.messages');
// Permissions
Route::resource('permissions', 'PermissionsApiController');
// Roles
Route::resource('roles', 'RolesApiController');
// Users
Route::resource('users', 'UsersApiController');
// Content Category
Route::resource('content-categories', 'ContentCategoryApiController');
// Content Tag
Route::resource('content-tags', 'ContentTagApiController');
// Content Page
Route::post('content-pages/media', 'ContentPageApiController@storeMedia')->name('content-pages.storeMedia');
Route::resource('content-pages', 'ContentPageApiController');
// Country
Route::resource('countries', 'CountryApiController');
// Golfclub
Route::resource('golfclubs', 'GolfclubApiController');
// Grad
Route::resource('grads', 'GradApiController');
// Dommereb
Route::resource('dommerebs', 'DommerebApiController');
// Startliste
Route::resource('startlistes', 'StartlisteApiController');
// Lokaleregler
Route::resource('lokalereglers', 'LokalereglerApiController');
// Walkie Talkie
Route::apiResource('walkie-talkies', 'WalkieTalkieApiController', ['only' => ['index']]);
// Location GPS
Route::apiResource('places', 'LocationController', ['only' => ['index']]);
// Chat
Route::apiResource('chats', 'ChatApiController', ['only' => ['index']]);
// Settings
Route::apiResource('settings', 'SettingsApiController', ['only' => ['index']]);
// Testing
Route::apiResource('testings', 'TestingApiController', ['only' => ['index']]);
// Turnements
Route::resource('turnements', 'TurnementsApiController');
// Flightdata
Route::resource('Flightdata', 'FlightdataApiController');
// Gpstrackerclub
Route::resource('gpstrackerclubs', 'GpstrackerclubApiController');
// Testing
Route::apiResource('timeusedflights', 'TimeusedflightsApiController', ['only' => ['index']]);
// Golfclubfeedback
Route::resource('golfclubfeedbacks', 'GolfclubfeedbackApiController');
// Investor
Route::post('investors/media', 'InvestorApiController@storeMedia')->name('investors.storeMedia');
Route::resource('investors', 'InvestorApiController');
// Profile Index
// Route::apiResource('profilen', 'ProfilesApiController', ['only' => ['index']]);
Route::resource('profilen', 'ProfilesApiController');
Route::resource('Timer','Timetracking');
// Configuration
Route::resource('configurations', 'ConfigurationApiController');
});
web.php routes
<?php
Route::redirect('/', '/login');
//Route::redirect('/dashboard', '/admin/dashboard');
//Auth::routes(['register' => true]);
// Check if users is online or offline
Route::get('/check', 'UserController@userOnlineStatus');
Route::group([
'prefix' => 'admin',
'as' => 'admin.',
'namespace' => 'Admin',
'middleware' => ['auth'],
], function () {
Route::view('/{any?}', 'layouts.admin.app')->name('dashboard')->where('any', '.*');
});
Route::get('/roller','Auth\SelectroleController@index')->name('roller');
Route::post('/roller','Auth\SelectroleController@selectrole')->name('roller');
// Dashboards
Auth::routes();
// Dasboard - superadmin
Route::get('dashboard', 'DashboardApiController@index')->name('dashboard')->middleware('dashboard');
// Dashboard - admin
Route::get('admin', 'AdminApiController@index')->name('admin')->middleware('admin');;
// Dashboard - player
Route::get('player', 'PlayerApiController@index')->name('player')->middleware('player');;
// Dashboard - Trackcrew
Route::get('trackcrew', 'TrackcrewApiController@index')->name('trackcrew')->middleware('trackcrew');;
// Dashboard - Superadmin
Route::get('superadmin', 'SuperadminApiController@index')->name('superadmin')->middleware('superadmin');;
// Dashboard - Federation
Route::get('federation', 'FederationApiController@index')->name('federation')->middleware('federation');;
// Dashboard - Starter
Route::get('starts', 'StartsApiController@index')->name('starts')->middleware('starts');;
// Dashboard - Marshal
Route::get('marshal', 'MarshalApiController@index')->name('marshal')->middleware('marshal');;
// Dashboard - Judge
Route::get('judge', 'JudgeApiController@index')->name('judge')->middleware('judge');;
// Dashboard - Easyflowadmin
Route::get('easyflowAdmin', 'EasyflowAdminApiController@index')->name('easyflowAdmin')->middleware('easyflowAdmin');
When i try to login with role -> player it show player dashboard. OK But if i try dashboard, it supose to redirect to player dashboard. But it dosent do that ?????
Please or to participate in this conversation.