metrixinfo / laravel-permissions
细粒度用户、组和角色权限
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- orchestra/testbench: ^6.18
- phpmd/phpmd: ^2.10
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^7.0
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-22 22:44:34 UTC
README
Laravel Permissions 允许您创建细粒度权限并将其分配给用户和角色。
您可以为用户分配零个或多个角色,它们将继承分配给这些角色的权限。您还可以将特定权限分配给特定用户。
用户的权限被缓存以提高性能。
要求
- PHP 7.4|8.0
- Laravel 7.x|8.x
安装
您可以通过 composer 安装此包
composer require metrixinfo/laravel-permissions
通过运行以下 artisan 命令发布配置
php artisan vendor:publish --provider="Metrix\LaravelPermissions\LaravelPermissionsServiceProvider" --tag="permissions"
运行迁移以创建所需的表。
php artisan migrate
迁移将创建以下表
- permissions
- roles
- role_user
- permission_user
- permission_role
外键约束被强制执行以保证数据完整性。如果您将在本地环境中刷新数据库,您需要在其 down() 方法中禁用它们。
database/migrations/02014_10_12_000000_create_users_table.php
/** * Reverse the migrations. * * @return void */ public function down(): void { Schema::disableForeignKeyConstraints(); Schema::dropIfExists('users'); Schema::enableForeignKeyConstraints(); }
用法
在您的 User 模型中包含以下两个特质。
use \Metrix\LaravelPermissions\Traits\HasPermissions; use \Metrix\LaravelPermissions\Traits\HasRoles;
权限
权限由您定义的 '区域' 描述。区域的一些例子可以是 'blog.post' 和 'blog.comment'。您需要通过将它们插入权限表来创建应用程序所需的权限。
每个分配的权限可以组合以下 4 个操作之一
- 读取
- 写入
- 编辑
- 删除
您可以在代码中的任何区域检查权限。一些首选位置是在策略或门方法中。
对于策略,它可能看起来像这样,允许作者和具有“Moderator”角色的某人编辑帖子
/** * Determine whether the user can edit a post. * * @param \App\Models\User $user * @param \App\Models\Post $post * * @return bool */ public function update(User $user, Post $post):bool { return $user->id === $post->user_id || Acl::hasEdit('posts'); }
或者它可以用来保护站点的私有区域,例如仅允许特定用户看到 Horizon 仪表板。
/** * Register the Horizon gate. * * This gate determines who can access Horizon in non-local environments. * * @return void */ protected function gate() { Gate::define('viewHorizon', function ($user) { return Acl::hasRead('horizon'); }); }
控制台命令
提供了控制台命令来帮助管理您的权限。
您可以刷新所有缓存的权限
php artisan acl:clear
或仅刷新特定用户的权限。
php artisan acl:clear -u 212
您可以使用 acl:permissions artisan 命令来管理权限。
php artisan acl:permissions
您可以使用 acl:roles artisan 命令来管理角色。
php artisan acl:roles
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何安全相关的问题,请使用问题跟踪器。
致谢
此包受到了 Harro Verton (WanWizard) 为 FuelPHP 的 OrmAuth 包 所做工作的启发。
许可
GNU GPLv3。请参阅 许可文件 了解更多信息。