42phoenix42/nova-permission-tool

一个Laravel Nova权限工具。

v1.6.1 2019-09-02 15:13 UTC

This package is auto-updated.

Last update: 2024-09-29 05:55:26 UTC


README

此工具允许您创建和管理nova资源的规则和权限。安装后,将为所有可用资源及其操作生成默认的nova资源权限。

要求与依赖

此工具使用Spatie Permission包。

安装

您可以通过composer安装此包

composer require digitalcloud/nova-permission-tool

您可以使用以下命令发布迁移

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

迁移发布后,您可以通过运行迁移来创建角色和权限表

php artisan migrate

用法

您必须在Nova中注册此工具。通常在app/Providers/NovaServiceProvider.php中的tools方法中完成此操作。

use DigitalCloud\PermissionTool\PermissionTool;
// ....

public function tools()
{
    return [
        // ...
        new PermissionTool(),
        // ...
    ];
}

要允许工具生成权限操作,您需要设置操作名称。没有名称的操作将不会自动生成。

<?php

namespace App\Nova\Actions;

use Laravel\Nova\Actions\Action;

class YourAction extends Action {
    
    // ...

    public $name = 'send email';
    
    // ...

}

然后在资源中您可以授权操作

<?php

namespace App\Nova;

use App\Nova\Actions\YourAction;
use Illuminate\Support\Facades\Gate;
use Illuminate\Http\Request;


class Quotation extends Resource {
    
    // ...
    
    public function actions(Request $request) {
        return [
            (new YourAction())->canSee(function ($request) {
                return Gate::check('send email'); // the same name of the action
            })->canRun(function ($request) {
                return Gate::check('send email'); // the same name of the action
            })
        ];
    }
    
    // ...
}

图片

per