bdmehedi / laravel-permission
用于管理 Laravel 角色和权限的 Laravel 扩展包
1.0.0
2023-12-17 09:40 UTC
Requires
- php: >=7.3
- illuminate/support: >=6.0
This package is auto-updated.
Last update: 2024-09-17 11:15:13 UTC
README
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 () { });
贡献指南
尽管目前处于测试版,但我有信心它将按预期工作。您可以通过报告错误、修复错误、审查拉取请求等方式进行贡献。前往 问题 部分,您可以立即开始处理一个问题。如果您想添加或修复某些内容,请提交一个拉取请求。