guava/simple-permissions

为 Laravel 提供的简单权限和角色系统。支持枚举。

1.1.1 2024-06-18 10:04 UTC

This package is auto-updated.

Last update: 2024-09-18 10:41:00 UTC


README

simple-permissions Banner

为 Laravel 提供的简单权限和角色系统。支持枚举。

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

这是一个针对 Laravel 的有见地的简单权限和角色系统。它允许您直接在代码库中定义角色和权限作为 PHP 类和枚举。这提供了开箱即用的自动完成支持和卓越的开发者体验。

展示

这里应该放置您的截图和视频。请记得添加它们,以便人们看到您的插件能做什么。

支持我们

您的支持是我们插件持续进步的关键。我们感谢每一位至今为止为我们旅程做出贡献的用户。

虽然我们的插件对所有人开放,但如果您将其用于商业用途并且认为它为您的业务增添了显著的价值,我们恳请您考虑通过 GitHub Sponsors 支持我们。这种赞助将帮助我们持续开发和维护,以保持我们的插件强大和最新。您捐赠的任何金额都将极大地帮助我们实现目标。加入我们,使这个插件变得更好,推动进一步的创新。

安装

您可以通过 composer 安装此包

composer require guava/simple-permissions

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

php artisan vendor:publish --tag="simple-permissions-migrations"

您必须重命名迁移: 0000_00_00_000000_create_permissions_table.php

php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="simple-permissions-config"

这是已发布配置文件的内容

return [
    'tables' => [
        'roles' => 'model_has_role',
        'permissions' => 'model_has_permission',
    ],
];

用法

模型设置

您需要将 HasAccessControl 特性添加到您想要添加角色和权限的模型中。

这将添加所有必要的关联和方法,以便开始使用访问控制。

use Guava\SimplePermissions\Concerns\HasAccessControl;

public class User extends Model
{
    use HasAccessControl;
    
    // ...
}

创建权限

您可以使用 artisan 命令创建权限。假设您有一个 Post 模型,并希望为处理 Post 资源的访问创建权限。

只需运行

php artisan make:permission PostPermissions

这将创建一个新枚举,在 App\Auth\Permissions\PostPermissions 中具有一些预定义的 CRUD 权限

public enum PostPermissions: string implements \Guava\SimplePermissions\Contracts\Permission 
{
    case VIEW = 'view';
    // ...Other redefined permissions
}

创建角色

您可以使用 artisan 命令创建角色。

只需运行

php artisan make:role SuperAdmin

这将创建一个新的角色,在 App\Auth\Roles\SuperAdmin

public class SuperAdmin implements \Guava\SimplePermissions\Contracts\Role
{

    public function permissions() : array
    {
        return [
            // Add permissions here
            // Either one by one, such as:
            PostPermissions::VIEW,
            
            // or all at once:
           ...PostPermissions::cases()
        ];
    }
}

检查用户是否有权限

您可以使用 Laravel 内置方法来检查权限

例如,如果用户有查看帖子的权限,您可以这样操作

$user->can(PostPermissions::VIEW)

FilamentPHP 集成

为了将访问控制添加到您的 filament 资源中,您只需在您的资源中实现 HasAuthorization 特性并定义权限枚举。

use Guava\SimplePermissions\Concerns\HasAuthorization;
use App\Auth\Permissions\PostPermissions;

public class PostResource extends Resource
{
    use HasAuthorization;
    
    protected static string $permissions = PostPermissions::class;
    
    // ...
}

测试

composer test

更新日志

请参阅 更新日志 了解最近更改的详细信息。

贡献

请参阅 贡献指南 了解详细信息。

安全漏洞

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

致谢

许可

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