Многоуровневая маршрутизация Laravel - PullRequest
0 голосов
/ 03 мая 2019

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

У меня есть 3 роли: superadmin, admin и member. Я хочу, чтобы superadmin и admin могли получить доступ к странице добавления.

вот мой код:

Route::group(['prefix' => 'staff', 'middleware' => 'auth'], function () {


    Route::GET('/add', [
        'uses'       => 'StaffController@page_add',
        'middleware' => 'rule:superadmin', ???
    ]);

});

Я пытался поставить 'middleware' => 'rule:superadmin|rule:admin', но не будет работать

спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Эй, вы можете поместить столбец с именем "role" в таблицу пользователей, а затем проверить его с условием.

 Route::get('/add', function() {
    if (Auth::user()->role == 'superadmin' || Auth::user()->role == 'admin') {
      return view('add-page');
    } 
    else {
      return view('error-page');
    } 
  });
0 голосов
/ 03 мая 2019

Создайте файл промежуточного программного обеспечения, например, Role.php

public function handle($request, Closure $next, ... $roles)
{
    if (!Auth::check()) // I included this check because you have it, but it really should be part of your 'auth' middleware, most likely added as part of a route group.
        return redirect('login');

    $user = Auth::user();

    if($user->isAdmin())
        return $next($request);

    foreach($roles as $role) {
        // Check if user has the role This check will depend on how your roles are set up
        if($user->hasRole($role))
            return $next($request);
    }

    return redirect('login');
}

Наконец-то в ваших веб-маршрутах

Route::get('admin/scholen/overzicht', 'SchoolsController@overview')->middleware('role:editor,approver');
Route::get('admin/scholen/{id}/bewerken', 'SchoolsController@edit')->middleware('role:admin');

Проверьте этот лучший ответ для более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...