Я подумал, что делаю это слишком сложно :) Кажется, это работает нормально, большое спасибо!

лкнулся с некоторыми проблемами с промежуточным программным обеспечением Laravel. Позвольте мне рассказать вам основную идею того, чего я пытаюсь достичь:

Зарегистрированные пользователи на сайте будут иметь одну из четырех ролей:

Студент (по умолчанию): может получить доступиндекс' а также 'шоу' ПросмотрыУтверждающий: может получить доступ к предыдущему, плюс 'обзор','Обновить'Редактор: может получить доступ к предыдущему, плюсСоздайте','редактировать' а также 'хранить'Администратор: может получить доступвсе

К вашему сведению: «обзор» является своего рода индексным представлением, но только для роли утверждающего и выше

Что бы вы, ребята, предложили, это лучший способ сделать это? Это то, что я сделал до сих пор, но, похоже, это не работает:

Kernel.php

protected $middlewareGroups = [
...
    'approver+' => [
        \App\Http\Middleware\Approver::class,
        \App\Http\Middleware\Editor::class,
        \App\Http\Middleware\Admin::class,
    ],
];

protected $routeMiddleware = [
...
    'student' => \App\Http\Middleware\Student::class,
    'approver' => \App\Http\Middleware\Approver::class,
    'editor' => \App\Http\Middleware\Editor::class,
    'admin' => \App\Http\Middleware\Admin::class,
];

Http \ Middleware \ admin.php

public function handle($request, Closure $next)
{
   if (Auth::check())
   {

        if(Auth::user()->isAdmin())
        {
            return $next($request);
        }
   }

    return redirect('login');
}

Модель «Пользователь» Eloquent:

public function isAdmin()
{
    if($this->role_id === 4)
    { 
        return true; 
    } 
    else 
    { 
        return false; 
    }
}

Я сделал то же самое в файлах промежуточного программного обеспечения Approver и Editor, а также в функциях isApprover и isEditor в модели User, только отредактировал проверенное значение в операторе if до 2 и 3 соответственно.

Наконец, вот что я сделал в моем файле rout \ web:

Route::get('scholen', 'SchoolsController@index');
Route::get('admin/scholen/overzicht', 'SchoolsController@overview')->middleware('approver+');
Route::get('admin/scholen/maken', 'SchoolsController@create')->middleware('approver+');
Route::post('scholen', 'SchoolsController@store')->middleware('approver+');
Route::get('scholen/{id}', 'SchoolsController@show');
Route::get('admin/scholen/{id}/bewerken', 'SchoolsController@edit')->middleware('admin');
Route::patch('admin/scholen/{id}', 'SchoolsController@update')->middleware('admin');
Route::delete('admin/scholen/{id}', 'SchoolsController@destroy')->middleware('admin');

Это еще не все точно, но я застрял, поскольку, когда я вхожу в систему как пользователь с правами утверждающего и пытаюсь получить доступ к обзору школ, он перенаправляет меня обратно на домашнюю страницу.

В общем, мне кажется, что я работаю слишком хаотично и совсем не правильно, может кто-нибудь дать мне совет, как сделать это более эффективно?

Заранее большое спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос