Невозможно получить доступ к маршруту для роли и разрешений с помощью разрешений Laravel Backpack

Я пытаюсь реализовать пользовательский интерфейс разрешений Laravel Backpack и маршруты с помощью диспетчера разрешений Laravel Backpack (https://github.com/Laravel-Backpack/PermissionManager).

Мы добавили маршруты ролей и разрешений, используя

<li class="nav-item"><a class="nav-link" href="{{ backpack_url('role') }}"><i class="nav-icon fa fa-group"></i> <span>Roles</span></a></li>
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('permission') }}"><i class="nav-icon fa fa-key"></i> <span>Permissions</span></a></li>

Однако всякий раз, когда мы переходим к одному из этих маршрутов, он просто выдает ошибку 404.

Согласно документации, у нас есть следующий набор в нашем файле config / backpack / base.php.

    // The classes for the middleware to check if the visitor is an admin
// Can be a single class or an array of clases
'middleware_class' => [
    App\Http\Middleware\CheckIfAdmin::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    // \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],


// The guard that protects the Backpack admin panel.
// If null, the config.auth.defaults.guard value will be used.
'guard' => null,

В наших настройках config / auth.php мы устанавливаем только одну охрану, и все наши роли и разрешения, которые были созданы, настроены на использование «веб-защиты».

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],        
],

Это мой файл config / backpack / permissionmanager.php. ** Обратите внимание, что мы намеренно устанавливаем класс пользователя, чтобы мы могли использовать нашу собственную модель, а не режим рюкзака для CRUD.

<?php

return [

/*
|--------------------------------------------------------------------------
| Models
|--------------------------------------------------------------------------
|
| Models used in the User, Role and Permission CRUDs.
|
*/

'models' => [
    'user'       => App\Models\User::class,
    'permission' => Backpack\PermissionManager\app\Models\Permission::class,
    'role'       => Backpack\PermissionManager\app\Models\Role::class,
],

/*
|--------------------------------------------------------------------------
| Disallow the user interface for creating/updating permissions or roles.
|--------------------------------------------------------------------------
| Roles and permissions are used in code by their name
| - ex: $user->hasPermissionTo('edit articles');
|
| So after the developer has entered all permissions and roles, the administrator should either:
| - not have access to the panels
| or
| - creating and updating should be disabled
*/

'allow_permission_create' => true,
'allow_permission_update' => true,
'allow_permission_delete' => true,
'allow_role_create'       => true,
'allow_role_update'       => true,
'allow_role_delete'       => true,

/*
|--------------------------------------------------------------------------
| Multiple-guards functionality
|--------------------------------------------------------------------------
|
*/
'multiple_guards' => false,

'roles_with_admin_access' => ['admin', 'moderator', 'customer service'],

];

Это наш файл-композитор.

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
    "framework",
    "laravel"
],
"license": "MIT",
"type": "project",
"require": {
    "php": "^7.2",
    "algolia/algoliasearch-client-php": "^2.2",
    "aws/aws-sdk-php": "^3.129",
    "backpack/crud": "^4.0.0",
    "backpack/permissionmanager": "^5.0",
    "barryvdh/laravel-elfinder": "^0.4.3",
    "doctrine/dbal": "^2.9",
    "fideloper/proxy": "^4.0",
    "guzzlehttp/guzzle": "~6.3.3",
    "laravel/framework": "^6.18",
    "laravel/passport": "^7.5",
    "laravel/scout": "^7.2",
    "laravel/tinker": "^2.0",
    "league/flysystem-aws-s3-v3": "~1.0",
    "maatwebsite/excel": "^3.1.16",
    "sendgrid/sendgrid": "^7.4",
    "spatie/laravel-permission": "^3.0",
    "vimeo/laravel": "^5.4",
    "webpatser/laravel-uuid": "^3.0"
},
"require-dev": {
    "backpack/generators": "^2.0",
    "barryvdh/laravel-debugbar": "^3.2",
    "fzaninotto/faker": "^1.4",
    "laracasts/generators": "dev-master",
    "mockery/mockery": "^1.0",
    "nunomaduro/collision": "^3.0",
    "phpunit/phpunit": "^8.0",
    "facade/ignition": "^1.4"
},
"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    }
},
"extra": {
    "laravel": {
        "dont-discover": []
    }
},
"scripts": {
    "post-root-package-install": [
        "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "@php artisan key:generate"
    ],
    "post-autoload-dump": [
        "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
        "@php artisan package:discover"
    ]
},
"config": {
    "preferred-install": "dist",
    "sort-packages": true,
    "optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true

}

Я выполнил все команды публикации поставщика. По-прежнему не могу перейти к маршрутам / admin / role или / admin / без получения ошибки 404.


person James Parker    schedule 22.04.2020    source источник


Ответы (1)


У вас должен быть файл с таким содержимым:

маршруты / рюкзак / permissionmanager.php

<?php

/*
|--------------------------------------------------------------------------
| Backpack\PermissionManager Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are
| handled by the Backpack\PermissionManager package.
|
*/

Route::group([
        'namespace'  => 'Backpack\PermissionManager\app\Http\Controllers',
        'prefix'     => config('backpack.base.route_prefix', 'admin'),
        'middleware' => ['web', backpack_middleware()],
], function () {
    Route::crud('permission', 'PermissionCrudController');
    Route::crud('role', 'RoleCrudController');
    // Route::crud('user', 'UserCrudController'); // removed and placed within the backpack/custom routes files
});

это там?

person AlanSmith    schedule 24.06.2020