Laravel 5.4 Проблема с проверкой прав в сервис-провайдере

154
20 ноября 2017, 21:02

Делаю учебный проект - корпоративный сайт. В курсе версия фреймворка 5.2, но я опрометчиво решил делать тоже самое на 5.4

В сервис-провайдере app/Providers/AuthServiceProvider.php в методе boot() следующий код:

public function boot()
    {
        $this->registerPolicies();
        Gate::define('VIEW_ADMIN', function ($user){
            return $user->canDo('VIEW_ADMIN');
        });
    }

Метод canDo() не определен в провайдере и если код выполнялся бы, то я бы видел соответствующее исключение, но его нет. Он просто игнорируется. Хотя в документации такая же конструкция используется (https://laravel.com/docs/5.4/authorization). Подскажите, где я допустил оплошность?

Answer 1

В сервис-провайдере вы только устанавливаете права, но не проверяете, в вашем случае просто записалось правило с названием VIEW_ADMIN и анонимная функция, но она не выполняется.

Вот если бы вы потом где то обратились к этому правилу:

if (Gate::allows('VIEW_ADMIN')) {
    // Ваше действие
}

Вот тогда бы вызвалась ваша анонимная функция и отработал код:

$user->canDo('VIEW_ADMIN');

Не дочитали вы немного документацию, остановились на определении правил.

READ ALSO
Отправка файла/фотографии через форму

Отправка файла/фотографии через форму

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

160
Всем привет! Помогите мне пожалуйста с ajax?

Всем привет! Помогите мне пожалуйста с ajax?

Не судите строго, я только изучаю верстку

180
Не могу внести данные в БД из чекбокса

Не могу внести данные в БД из чекбокса

Есть форма из которой берутся данные в бд, работают все строки формы кроме этого чекбокса(html код):

168
Как правильно настроить Route в Laravel проекте?

Как правильно настроить Route в Laravel проекте?

При обращении на http://localhost/about я получаю 404 не найдено , знаком с данной ошибкой но не пойму каких настроек у меня не хватает ?

195