bdmehedi/laravel-permission

用于管理 Laravel 角色和权限的 Laravel 扩展包

1.0.0 2023-12-17 09:40 UTC

This package is auto-updated.

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


README

Laravel Role & Permission

laravel-permission

这是一个 Laravel 扩展包,允许您通过最少的数据库查询和少量加载的模型来管理任何 Laravel 项目的角色和权限。这是一个高度优化的扩展包。

安装、配置和使用说明

通过 composer 安装

composer require bdmehedi/laravel-permission

服务提供者 将自动注册。如果您愿意,也可以手动添加。

'providers' => [
    // ...
    BdMehedi\LaravelPermission\LaravelPermissionServiceProvider::class,
];

发布 迁移并按需编辑

php artisan vendor:publish --tag=laravel_permission_migration

运行迁移。在发布迁移并按需配置后,您需要通过运行以下命令创建数据库表

php artisan migrate

将 HasPermissions 特性添加到用户模型

use HasPermissions

用法

创建角色和权限

use BdMehedi\LaravelPermission\Models\Permission;
use BdMehedi\LaravelPermission\Models\Role;


$role = Role::create(['role' => 'admin']);
$permission = Permission::create(['name' => 'create-user', 'group' => 'user']);  //the group is optional

将角色和权限分配给用户

$user->assignRole('admin');
$user->givePermissionTo('create-user');

//or your can assign permissions by providing an array
$user->assignRole(['admin', 'user']);
$user->givePermissionTo(['create-user']);

从用户中撤销角色和权限

// Single permission or role
$user->revokeRole('admin');
$user->withdrawPermissionTo('create-user');

// Or array of permissions or roles
$user->revokeRole(['admin']);
$user->withdrawPermissionTo(['create-user']);

向角色授予权限

$role->givePermissionTo('create-user');

//or an array or permissions
$role->givePermissionTo(['create-user']);

从角色中撤销权限

$role->withdrawPermissionTo('create-user');

//or array or permissions
$role->givePermissionTo(['create-user']);

检查权限

您可以使用 Laravel 的默认 can 函数检查用户的权限。

$user->can('create-user');

或者您可以使用 hasPermissionTo

$user->hasPermissionTo('create-user');

检查角色

$user->hasRole('admin');

// or check at least one role from an array of roles:
$user->hasRole(['admin', 'user']);

中间件

默认中间件

您可以使用由 \Illuminate\Auth\Middleware\Authorize::class 提供的 Laravel 默认中间件 can。

Route::middleware('can:create-user')->group(function () {
    
});

包中间件

如果您至少可以检查多个权限中的一个,则可以使用 allow 中间件

Route::middleware('allow:create|view|delete')->group(function () {
    
});

如果您有其他守卫,则可以使用

Route::middleware('allow:create|view|delete,guardName')->group(function () {
    
});

贡献指南

尽管目前处于测试版,但我有信心它将按预期工作。您可以通过报告错误、修复错误、审查拉取请求等方式进行贡献。前往 问题 部分,您可以立即开始处理一个问题。如果您想添加或修复某些内容,请提交一个拉取请求。