Я пытаюсь реализовать 3 пользовательских типа в своем приложении, я использую Auth of Laravel по умолчанию.
Я создал 2 дополнительных промежуточных программного обеспечения для обеспечения условий для дополнительного пользователя (admin & Districtlogin) вместе с промежуточным программным обеспечением для одобрения пользователя и с использованием значения по умолчанию для пользователя laravel
Администратор промежуточного программного обеспечения
class Admin
{
tion handle($request, Closure $next)
{
if( Auth::check() && Auth::user()->isAdmin == 1)
{
return $next($request);
}
Auth::logout();
return redirect('login')->with('error','You have not admin access');
}
}
Middlelogin Middleware
class Districtlogin
{
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::user()->isAdmin == 2) {
return $next($request);
}
Auth::logout();
return redirect('login')->with('error', 'You have not admin access');
}
}
Еще одно промежуточное ПО для проверки, одобрен ли пользователь
class ApproveUser
{
public function handle($request, Closure $next)
{
if( Auth::check() && Auth::user()->row_status == 1)
{
return $next($request);
}
return redirect('/userapprove');
}
Я могу перенаправить их на основании логина
Auth / LoginController
public function redirectPath()
{
if (Auth::user()->isAdmin == 1 && Auth::user()->row_status == 1) {
return '/adminindex';
} elseif (Auth::user()->row_status == 0) {
return '/userapprove';
} elseif (Auth::user()->isAdmin == 2 && Auth::user()->row_status == 1) {
return '/districtindex';
}
return '/engineerdashboard';
}
Вот мой
kernel.php
запись
'admin' => \App\Http\Middleware\Admin::class,
'districtlogin' => \App\Http\Middleware\Districtlogin::class,
'userapprove' => \App\Http\Middleware\ApproveUser::class,
Я бы хотел сгруппировать промежуточное ПО admin и Districtlogin.
Я использую CRUD, я бы хотел, чтобы Districtlogin имел доступ к нескольким контроллерам - индекс, магазин, обновление
Когда я пытаюсь сгруппировать промежуточное ПО, меня перенаправляют обратно на экран входа в систему. Ни одно из промежуточного программного обеспечения не работает
Вот что я попробовал,
1)
Route::middleware(['admin'])->group(function () {
//Admin Dashboard
Route::resource('adminindex', 'AdminindexController')->middleware('districtlogin');
Route::get('adminindex/new', 'AdminindexController@admindashboard');
});
2)
Route::middleware(['admin','districtlogin'])->group(function () {
//Admin Dashboard
Route::resource('adminindex', 'AdminindexController');
Route::get('adminindex/new', 'AdminindexController@admindashboard');
});
3)
Route::middleware(['admin',''])->group(function () {
//Admin Dashboard
Route::resource('adminindex', 'AdminindexController');
Route::get('adminindex/new', 'AdminindexController@admindashboard');
Route::middleware(['districtlogin'])->group(function () {
Route::resource('adminindex', 'AdminindexController');
});
});
Но когда я использую условие «ИЛИ», я могу получить доступ к страницам
Route::group(['middleware' => ['admin' OR 'districtlogin']], function () {
//Admin Dashboard
Route::resource('adminindex', 'AdminindexController');
Route::get('adminindex/new', 'AdminindexController@admindashboard');
});
Контроллеры доступны обоим промежуточным программам. Но как мне ограничить функции Crud на основе промежуточного программного обеспечения.
Я совершенно не знаю, как этого добиться.