Позвольте мне рассказать вам основную идею того, чего я пытаюсь достичь:
Зарегистрированные пользователи на сайте будут иметь одну из четырех ролей:
- Студент (по умолчанию): может получить доступ к «index» и «show». просмотры
- Утверждающий: доступ к предыдущим, а также «обзор», «обновление»
- Редактор: доступ к предыдущим, а также «создание», «редактирование» и «сохранение».
- Администратор: доступ к всем
Как бы вы, ребята, посоветовали лучший способ сделать это? Это то, что я делал до сих пор, но, похоже, это не работает:
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;
}
}
Наконец, вот что я сделал в своем файле Routes\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');
В общем, такое ощущение, что я работаю слишком хаотично и совсем неправильно, может кто-нибудь дать мне совет, как это сделать более эффективно?
Спасибо. очень заранее!
Подробнее здесь: https://stackoverflow.com/questions/439 ... iple-roles
Мобильная версия