Я подумал, что делаю это слишком сложно :) Кажется, это работает нормально, большое спасибо!
лкнулся с некоторыми проблемами с промежуточным программным обеспечением 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');
Это еще не все точно, но я застрял, поскольку, когда я вхожу в систему как пользователь с правами утверждающего и пытаюсь получить доступ к обзору школ, он перенаправляет меня обратно на домашнюю страницу.
В общем, мне кажется, что я работаю слишком хаотично и совсем не правильно, может кто-нибудь дать мне совет, как сделать это более эффективно?
Заранее большое спасибо!