Laravel по-русски

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

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

#1 Laravel 5.x » Laravel 5.6 ограничение доступа в routes » 01.08.2018 15:53:39

Laravelist
Ответов: 0

У меня есть таблички `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 есть какой-то другой метод специально для этого?

#2 Re: Laravel 5.x » Laravel 5.6 проблема с shared variable » 31.07.2018 15:11:58

почитай уже доку

В доках описание общее и примеров почти нет, бесполезное занятие (написано ленивыми разработчиками)
Вот тут все мужик грамотно объяснил, все теперь получилось! Спасибо smile

#3 Re: Laravel 5.x » Laravel 5.6 проблема с shared variable » 31.07.2018 12:01:56

Пользователи-то зарегистрированные есть?

Конечно есть smile

#4 Re: Laravel 5.x » Laravel 5.6 проблема с shared variable » 30.07.2018 22:14:58

А в общем виде, для этого служит View Composer.

А как его во view отлавливать? В доках не упомянули..
Shared variable не совсем то, что нужно в этом случае?

#5 Re: Laravel 5.x » Laravel 5.6 проблема с shared variable » 30.07.2018 22:13:24

Auth::user()

Auth::user()->id выдает ошибку: "Trying to get property 'id' of non-object"

#6 Laravel 5.x » Laravel 5.6 проблема с shared variable » 30.07.2018 18:50:38

Laravelist
Ответов: 8

Лару начал осваивать не так давно, но вот никак не могу найти рабочий пример для последней версии, чтобы задать переменную с данными аутентифицированного пользователя для всех blade шаблонов sad Примеров много, но везде какой-то фарш или костыли или для старых версий, а нормального рабочего примера с нормальным пояснением я еще не нашел.
у меня есть табличка `users` и `user_groups`, и я хочу задать переменную с данными залогиненного пользователя и юзать везде в шаблонах, и не прописывать это в каждом контроллере отдельно.
Помогите пожалуйста!

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