jhonoryza/filament-simple-role-permission

角色和权限的filament脚手架

0.0.4 2024-08-27 06:50 UTC

This package is auto-updated.

Last update: 2024-09-27 06:55:57 UTC


README

Total Downloads Latest Stable Version License

此包是简单的角色和权限的filament脚手架,提供filament资源、模型、迁移、seeder和政策生成器

截图

ERD

需求

  • PHP >= 8.2
  • Laravel >= 10.0
  • Filament >= 3.0

安装

您可以通过composer安装此包

composer require --dev jhonoryza/filament-simple-role-permission

然后运行以下命令以发布脚手架

php artisan filament-simple-role-permission:install

然后您可以迁移数据库

php artisan migrate

编辑 app\Models\User.php 添加 HasRole 特性和 预定义角色

use App\Models\Concern\HasRole;
class User extends Authenticatable
{
    use HasRole;

    const SUPER = 'super-admin';

    const ADMIN = 'admin';

    public static function getPredefined(): array
    {
        return [
            self::SUPER,
            self::ADMIN,
        ];
    }

    protected $fillable = [
        // ... etc

        'role_id',
    ]
}

const SUPERUserSeeder 类中使用

然后使用一些默认的角色和权限进行种子

php artisan db:seed --class=PermissionSeeder
php artisan db:seed --class=RoleSeeder
php artisan db:seed --class=UserSeeder

然后根据Permission模型中的预定义权限在app\Policies目录中生成所有策略文件

php artisan policy:generate

配置

您可以通过调整Permission模型类中的function getPredefined()function match()来配置预定义权限

public static function getPredefined(): array
{
    return [
        'users' => [
            'view-any',
            'view',
            'create',
            'update',
            'delete',
            'bulk-delete',
        ],
        'roles' => [
            'view-any',
            'view',
            'create',
            'update',
            'delete',
            'bulk-delete',
        ],
        'permissions' => [
            'view-any',
            'view',
            'create',
            'update',
            'delete',
            'bulk-delete',
        ],
    ];
}

public static function match($permission): string
{
    return match ($permission) {
        'view-any' => 'viewAnyPermission',
        'view' => 'viewPermission',
        'create' => 'createPermission',
        'update' => 'updatePermission',
        'delete' => 'deletePermission',
        'bulk-delete' => 'bulkDeletePermission',
        default => '',
    };
}

发布策略存根

自定义策略类模板

php artisan vendor:publish --tag="simple-role-permission-stubs"

安全

如果您发现任何与安全相关的问题,请创建一个问题。

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件