ahrengot/laravel-roles-and-permissions

Laravel 的用户角色和权限

1.0.1 2024-07-15 12:46 UTC

This package is auto-updated.

Last update: 2024-09-15 13:11:11 UTC


README

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

laravel 的角色和权限

安装

使用 composer 安装包

composer require ahrengot/laravel-roles-and-permissions

运行安装命令以发布迁移、模板、配置文件和基本测试

php artisan roles-and-permissions:install

运行迁移以向您的用户表添加 role 列。请根据需要修改此迁移。

php artisan migrate

配置您的用户模型

HasPermissions 特性添加到您的用户模型中,并为角色列添加枚举转换。您可以选择使用内置的 $attributes 属性添加角色的默认值。

use \Ahrengot\RolesAndPermissions\Traits\HasPermissions;
use App\Enums\UserRole;

class User extends Authenticatable
{
    use HasPermissions;
    
    protected $casts = [
        'role' => UserRole::class,
    ];
    
    // Optional default role
    protected $attributes = [
        'role' => UserRole::User,
    ]
}

配置角色和权限

您的权限配置在 config/permissions.php 中。

用户角色定义在 App\Enums\UserRole.php 中。更新这些角色以满足您的应用需求。

权限只是简单的字符串,但此包在 App/Permissions/Permission.php 中提供了一个帮助类,用于将每个权限声明为常量。这提供了更好的编辑器支持,并有助于防止输入错误。

配置文件包含为每个用户角色定义各种权限的示例

return [
    'roles' => [
        UserRole::Admin->value => [
            Permission::AccessAdminPanel,
            Permission::CreateApiTokens,
        ],
    ],
];

用法

在 blade 中

<nav>
    @can(Permission::AccessAdminPanel)
        <a href="...">Admin panel</a>
    @endcan
    <a href="...">Other link</a>
</nav>

在策略中

public function create(User $user)
{
    return $user->can(Permission::CreatePosts);
}

比较用户角色

UserRole 枚举有两个比较方法

    $user->role->is(UserRole::Admin);
    
    $user->role->isNot(UserRole::Admin);

测试

composer test

更新日志

请参阅 更新日志 了解最近的变化。

致谢

许可证

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