z3d0x/filament-simple-permissions

此包已被弃用且不再维护。未建议替代包。

只需在 filament 资源中定义权限。

v1.0.1 2023-06-09 18:48 UTC

This package is auto-updated.

Last update: 2023-08-13 04:38:31 UTC


README

警告
此包不再维护

只需在 filament 资源中定义权限。

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

轻松定义 Filament 资源 & 关系管理器的权限

安装

您可以通过 composer 安装此包

composer require z3d0x/filament-simple-permissions

安装后无需任何额外配置

使用方法

此包包含两个特质 HasResourcePermissionsHasRelationManagerPermissions,分别可用于 Filament 的资源和关系管理器。

要使用,只需在您的资源/关系管理器中使用特质并定义您的权限。

资源示例

//UserResource.php
use Z3d0X\FilamentSimplePermissions\Concerns\HasResourcePermissions;

class UserResource extends Resource
{
    use HasResourcePermissions;

    protected static array $permissions = [
        'viewAny' => 'access-users',
        'view' => 'access-users',
        'create' => 'create-users',
        'update' => 'update-users',
        'delete' => ['update-users', 'delete-stuff'], //use an array if multiple permissions are needed
        'deleteAny' => false, //also supports boolean, to allow/disallow for all users
    ];
}

关系管理器示例

//PostsRelationManager.php
use Z3d0X\FilamentSimplePermissions\Concerns\HasRelationManagerPermissions;

class PostsRelationManager extends HasManyRelationManager
{
    use HasRelationManagerPermissions;

    protected static array $permissions = [
        'create' => 'create-posts',
        'update' => 'update-posts',
        'delete' => ['update-posts', 'delete-stuff'], //use an array if multiple permissions are needed
        'deleteAny' => false, //also supports boolean, to allow/disallow for all users

        //Supports relation manager specific actions.
        'viewForRecord' => 'access-posts',
        'associate' => 'update-posts',
        'dissociate' => 'update-posts',
        'dissociateAny' => false,
    ];
}

高级使用

对于高级使用,您可以定义一个静态的 getPermissions() 方法,而不是 $permissions 属性

//PostsRelationManager.php
use Z3d0X\FilamentSimplePermissions\Concerns\HasRelationManagerPermissions;
use Illuminate\Database\Eloquent\Model;

class PostsRelationManager extends HasManyRelationManager
{
    use HasRelationManagerPermissions;

    protected static function getPermissions(): array
    {
        return [
            'viewForRecord' => fn (Model $ownerRecord) => $ownerRecord->user_id === auth()->id(),
            'update' => function (Model $record) {
                return $record->user_id === auth()->id();
            },
        ];
    }
}

变更日志

请参阅 CHANGELOG 了解最近的变化。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。