Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.08.2018 15:53:39

Laravel 5.6 ограничение доступа в routes

У меня есть таблички `users` и `user_groups`, и в `user_groups` есть колонка `access_level`

Сейчас у меня `routes/web.php` выглядит вот так:

    Route::group(['middleware' => 'auth'], function()
    {
       Route::get('/points', 'PagesController@points');
       Route::get('/users', 'PagesController@users');
       Route::get('/users/groups', 'PagesController@user_groups');
       Route::resource('point', 'PointController');
       Route::resource('user', 'UserController');
       Route::resource('users/group', 'UserGroupController');
    });

    Auth::routes();

    Route::get('/logout', 'Auth\LoginController@logout')->name('logout');

Как можно в `routes/web.php` распределить доступ к роутам в зависимости от значения `access_level` конкретного пользователя (залогиненного)?

Я хотел получить `access_level` перед группой роутов в middleware, но взять это значение не получается в связи с особенностями Laravel:

    use App\UserGroup;

    $access_level = UserGroup::find( auth()->user()->group_id )->access_level;

    Route::group(['middleware' => 'auth'], function($access_level)
    {
       if ($access_level == 1) {
          Route::get('/points', 'PagesController@points');
          Route::get('/users', 'PagesController@users');
          Route::get('/users/groups', 'PagesController@user_groups');
          Route::resource('point', 'PointController');
          Route::resource('user', 'UserController');
          Route::resource('users/group', 'UserGroupController');
       }
     });

В таком случае выдает ошибку: `Trying to get property 'group_id' of non-object`

Можно ли как-то взять значение `access_level` из таблички перед группой роутов или может в Laravel есть какой-то другой метод специально для этого?

Не в сети

Подвал раздела