itstructure / laravel-rbac
Laravel RBAC管理包
Requires
- php: >=7.3.0
- itstructure/laravel-grid-view: ^1.1.4
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
README
1 简介
LaRbac - 为Laravel框架提供管理的包,支持以下数据
- 角色
- 权限
- 为用户分配角色
2 依赖关系
- laravel 8+ | 9+ | 10+ | 11+
- Bootstrap 4用于样式
- JQuery
- php >= 7.3.0
- composer
3 安装
注意!
版本 3.x 用于laravel 8+,9+,10+,11+。
版本 2.x 用于laravel 6 或 7。您可以使用分支 laravel67-rbac
与 2.x 版本一起使用。
3.1 从远程仓库进行一般安装
运行composer命令
composer require itstructure/laravel-rbac "^3.0.15"
3.2 接下来的内部安装步骤
注意事项
-
确保您的项目中已经存在一个用户表。
-
确保您的项目中已经存在一个用户表模型。
建议
如果您还没有任何布局,安装例如 AdminLTE 是有用的,或者您可以制作您自己的特殊布局模板。因为在这个包中,没有专门的布局。但在配置中,必须设置它(见下一个点 2 关于配置)。
开始吧
-
发布文件。
注意:
rbac.php
配置文件和种子器LaRbacDatabaseSeeder
,PermissionSeeder
,RoleSeeder
必须确保发布!-
要发布配置,运行命令
php artisan rbac:publish --only=config
它将配置文件存储到
config
文件夹中。 -
要发布种子器,运行命令
php artisan rbac:publish --only=seeders
它将种子器文件存储到
database/seeders
文件夹中。 -
要发布迁移,运行命令
php artisan rbac:publish --only=migrations
它将迁移文件存储到
database/migrations
文件夹中。 -
要发布视图,运行命令
php artisan rbac:publish --only=views
它将视图文件存储到
resources/views/vendor/rbac
文件夹中。 -
要发布翻译,运行命令
php artisan rbac:publish --only=lang
它将翻译文件存储到
resources/lang/vendor/rbac
文件夹中。 -
要发布所有部分,运行没有
only
参数的命令php artisan rbac:publish
否则,您可以使用
--force
参数来重写已发布的文件。 -
-
配置发布的
config/rbac.php
文件-
设置
layout
。例如:'layout' => 'adminlte::page'
-
如果需要,更改
userModelClass
-
设置
adminUserId
,您希望拥有管理员角色的用户。 至少在初始阶段。这对于下一次系统让您进入Rbac控制面板是必要的,在您为自己分配了管理员角色之后(稍后见点 4)。
-
您可能需要更改
memberNameAttributeKey
。这是通过
Administrable
特性的getMemberNameAttribute()
方法在控制面板中显示用户名。它可以是 字符串 或 回调'memberNameAttributeKey' => function ($row) { return $row->first_name . ' ' . $row->last_name; }
-
-
运行命令以运行迁移和种子器
php artisan rbac:database
或者可选的
只运行迁移
php artisan rbac:database --only=migrate
只运行种子
php artisan rbac:database --only=seed
-
种子器的替代方案。
您可以将发布的rbac
LaRbacDatabaseSeeder
种子器类设置到特殊的DatabaseSeeder
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder { public function run() { $this->call(LaRbacDatabaseSeeder::class); } }
运行以下命令:
php artisan db:seed
。
-
-
运行以下命令为具有标识符
adminUserId
的用户设置管理员角色,该标识符在 第2点 定义。php artisan rbac:admin
4 使用方法
注意事项:
-
确保您在应用程序中使用 Bootstrap 4 进行样式设计,并使用 JQuery。
-
确保 Laravel 初始工厂授权已在您的应用程序中运行。
4.1 模型部分
根据 Itstructure\LaRbac\Interfaces\RbacUserInterface
,使用 Itstructure\LaRbac\Traits\Administrable
特性,如下例所示
namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; use Itstructure\LaRbac\Interfaces\RbacUserInterface; use Itstructure\LaRbac\Traits\Administrable;
class User extends Authenticatable implements RbacUserInterface { use Notifiable, Administrable; protected $fillable = [ 'name', 'email', 'password', 'roles' ]; protected $hidden = [ 'password', 'remember_token', ]; }
4.2 路由部分
已集成基本 RBAC 路由来管理 用户、角色 和 权限。请参阅 routes.php
包文件。
这些路由受以下保护
- 中间件
auth
(可由配置编辑)。 - 权限
can:administrate
(可由配置编辑)。
这些路由允许您访问以下路由
-
用户部分
对于 get 请求方法
http://example-domain.com/rbac/users
http://example-domain.com/rbac/users/show/{id}
http://example-domain.com/rbac/users/edit/{id}
对于 post 请求方法
http://example-domain.com/rbac/users/update/{id}
http://example-domain.com/rbac/users/delete
-
角色部分
对于 get 请求方法
http://example-domain.com/rbac/roles
http://example-domain.com/rbac/roles/show/{id}
http://example-domain.com/rbac/roles/create
http://example-domain.com/rbac/roles/edit/{role}
对于 post 请求方法
http://example-domain.com/rbac/roles/store
http://example-domain.com/rbac/roles/update/{role}
http://example-domain.com/rbac/roles/delete
-
权限部分
对于 get 请求方法
http://example-domain.com/rbac/permissions
http://example-domain.com/rbac/permissions/show/{id}
http://example-domain.com/rbac/permissions/create
http://example-domain.com/rbac/permissions/edit/{permission}
对于 post 请求方法
http://example-domain.com/rbac/permissions/store
http://example-domain.com/rbac/permissions/update/{permission}
http://example-domain.com/rbac/permissions/delete
4.3 网关部分
已集成基本 RBAC 网关,用于控制对应用程序中某些资源的访问。请参阅提供者文件 RbacAuthServiceProvider.php
。
它提供了以下网关定义
administrate
assign-role
delete-member
view-record
create-record
update-record
delete-record
publish-record
更多信息请参阅 Laravel 网关
5 视图示例
用户
角色
权限
许可证
版权 © 2018-2024 Andrey Girnik girnikandrey@gmail.com。
根据 MIT 许可证 许可。有关详细信息,请参阅 LICENSE.txt。