Промежуточное программное обеспечение Laravel с несколькими ролямиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Промежуточное программное обеспечение Laravel с несколькими ролями

Сообщение Anonymous »

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

Зарегистрированные пользователи на сайте будут иметь одну из четырех ролей:
  • Студент (по умолчанию): может получить доступ к «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;
}
}
Я сделал то же самое в файлах промежуточного программного обеспечения Approver и Editor, а также в функциях isApprover и isEditor в модели User, только отредактировал проверенное значение в операторе if на 2 и 3 соответственно.

Наконец, вот что я сделал в своем файле 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»