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种子器类设置到特殊的DatabaseSeederuse 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/usershttp://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/roleshttp://example-domain.com/rbac/roles/show/{id}http://example-domain.com/rbac/roles/createhttp://example-domain.com/rbac/roles/edit/{role}
对于 post 请求方法
http://example-domain.com/rbac/roles/storehttp://example-domain.com/rbac/roles/update/{role}http://example-domain.com/rbac/roles/delete
-
权限部分
对于 get 请求方法
http://example-domain.com/rbac/permissionshttp://example-domain.com/rbac/permissions/show/{id}http://example-domain.com/rbac/permissions/createhttp://example-domain.com/rbac/permissions/edit/{permission}
对于 post 请求方法
http://example-domain.com/rbac/permissions/storehttp://example-domain.com/rbac/permissions/update/{permission}http://example-domain.com/rbac/permissions/delete
4.3 网关部分
已集成基本 RBAC 网关,用于控制对应用程序中某些资源的访问。请参阅提供者文件 RbacAuthServiceProvider.php。
它提供了以下网关定义
administrateassign-roledelete-memberview-recordcreate-recordupdate-recorddelete-recordpublish-record
更多信息请参阅 Laravel 网关
5 视图示例
用户
角色
权限
许可证
版权 © 2018-2024 Andrey Girnik girnikandrey@gmail.com。
根据 MIT 许可证 许可。有关详细信息,请参阅 LICENSE.txt。
