Рюкзак Laravel ограничивает доступ пользователей к панели администратора

Я пытаюсь изменить метод checkIfUserIsAdmin () в промежуточном программном обеспечении CheckIfAdmin для отключения доступа для всех пользователей без роли администратора

Что произошло: ничего. Backpack_user () -> can (...) или backpack_user () -> role (...) не работают ... Это правильный способ ограничить доступ пользователей к панели администратора?

bp - 3.5

ларавел - 5,7

php - 7.2


person user137    schedule 22.01.2019    source источник


Ответы (2)


Сначала создайте промежуточное ПО:

php artisan make:middleware AdminMiddleware

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

<?php
namespace App\Http\Middleware;
use Closure;
class AdminMiddleware
{
    public function handle($request, Closure $next)
    {
        if (! \Auth::user()->hasRole('admin')) 
            return response(trans('backpack::base.unauthorized'),401);
        return $next($request);
    }
}

Теперь добавьте это промежуточное ПО в /config/backpack/base.php

(не удаляйте промежуточное ПО CheckIfAdmin, просто добавьте его)

'middleware_class' => [
    \Backpack\Base\app\Http\Middleware\CheckIfAdmin::class,
    \App\Http\Middleware\AdminMiddleware::class
],
person merdan    schedule 14.02.2019
comment
Я пробовал это решение, но, похоже, промежуточное ПО не было выполнено. - person Kezern; 06.06.2019
comment
@Kezern, вы очистили кеш конфигурации после добавления промежуточного слоя в конфигурацию рюкзаков? если не пробовать конфигурацию php artisan: кеш - person merdan; 06.06.2019

Один из способов - создать промежуточное ПО в Http \ Middleware, например CheckIfAdmin.php, с функцией ниже.

private function checkIfUserIsAdmin($user)
    {
        return ($user->is_admin == 1);
    }

Затем добавьте это промежуточное ПО в массив $ routeMiddleware Http \ Kernel.php. Как показано ниже.

'admin' => \App\Http\Middleware\checkIfUserIsAdmin::class,
person Rudolph    schedule 25.01.2019