Пытаясь понять Laravel Рюкзак Spat ie разрешения - PullRequest
1 голос
/ 08 января 2020

Я установил рюкзак 4 и Spat ie. https://github.com/spatie/laravel-permission

Я создал 2 роли: Admin и Users в моей административной панели (CRUD, поставляемый с Backpack).

Затем я добавил 2 разрешения: 1 называется «чтение ссылки администратора» 1 называется «чтение ссылки пользователя»

Я назначил разрешения для каждой роли: чтение ссылки администратора = роль администратора чтение ссылки пользователя = роль пользователя

Я вижу разрешения, правильно назначенные для ролей внутри панели администратора.

Теперь на левой навигационной панели я хотел бы видеть 1 меню, когда он зарегистрирован как администратор, или видеть другое меню, когда он зарегистрирован как пользователь.

Но я не могу заставить его работать:

<li> 
<ul>
@if(auth()->backpack_user()->can('read admin link'))
<li class="nav-item"><a class="nav-link" href=""><i class="nav-icon fa fa-user"></i> <span>Can only 
be seen by admins</span></a></li>
@endif
@if(auth()->backpack_user()->can('read user link'))
<li class="nav-item"><a class="nav-link" href=""><i class="nav-icon fa fa-user"></i> <span>Can only 
be seen by users</span></a></li>
@endif
</ul>
</li>

Кажется, что эта проверка прав доступа (при входе в систему):

@if(auth()->backpack_user()->can('xxxxxxxxxxx'))
@endif

Причина этой ошибки:

Facade\Ignition\Exceptions\ViewException
Method Illuminate\Auth\SessionGuard::backpack_user does not exist. (View: 
C:\laragon\www\demo\resources\views\vendor\backpack\base\inc\sidebar_content.blade.php)

Это моя база. php setup:

'middleware_class' => [
    App\Http\Middleware\CheckIfAdmin::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    // \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],

Любая идея, почему это происходит, пожалуйста?

Спасибо

1 Ответ

1 голос
/ 10 января 2020

Хорошо, вот исправление:

Вам необходимо добавить последнюю строку (класс)

        'middleware_class' => [
            App\Http\Middleware\CheckIfAdmin::class,
           \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],

Затем необходимо удалить текущие роли в базе данных, или они сохранят старые настройки веб-охраны. Удалите их и создайте заново с помощью этой новой защиты рюкзака, и все будет хорошо.

...