zjien / quantum
a RBAC system based on RESTful API for Laravel
Requires
- php: >=5.5.9
- illuminate/config: ~5.0
- illuminate/console: ~5.0
- illuminate/database: ~5.0
- illuminate/filesystem: ~5.0
- illuminate/support: ~5.0
- symfony/http-kernel: 2.7.*
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: ~4.8
This package is not auto-updated.
Last update: 2025-01-04 21:47:14 UTC
README
Quantum是个基于RESTful API的RBAC Laravel扩展包
Contents
安装
-
在终端输入下面命令:
composer require zjien/quantum
然后稍等几分钟。 -
当composer下载并安装完成后。编辑
config/app.php
文件,添加下面代码到providers
数组里:
Zjien\Quantum\Providers\QuantumServiceProvider::class,
然后添加下列代码到 aliases
数组里:
'Quantum' => Zjien\Quantum\Facades\QuantumFacade::class,
- 在终端运行下面命令,复制Quantum的配置文件到你项目的配置目录中。
php artisan vendor:publish
配置
- 运行下面命令,生成Quantum的迁移文件。
php artisan quantum:migration
该命令会生成Quantum的迁移文件到你项目的迁移目录中。
- 在
config/quantum.php
配置文件设置相应的配置信息。
继承 Quantum 的 Models
Role
创建你自己的 Role 模型(或者直接使用Quantum的),并继承 Quantum 的 Role 模型:
<?php namespace App; use Zjien\Quantum\Models\Role as QuantumRole; class Role extends QuantumRole { //your code goes here }
Permission
创建你自己的 Permission 模型(或者直接使用Quantum的),并继承 Quantum 的 Permission 模型:
<?php namespace App; use Zjien\Quantum\Models\Permission as QuantumPermission; class Permission extends QuantumPermission { //your code goes here }
User
创建你自己的 User 模型(或者直接使用Quantum的),并继承 Quantum 的 User 模型:
<?php namespace App; use Zjien\Quantum\Models\User as QuantumUser; class User extends QuantumUser { //your code goes here }
接着运行以下命令:
composer dump-autoload
使用
创建角色
$role['name'] = 'admin'; $role['display_name'] = 'Platform Admin'; $role['description'] = 'the platform admin'; $role = (new Role())->create($role);
创建权限
$perm['name'] = 'create-admin'; $perm['verb'] = 'POST'; $perm['uri'] = '/admins'; $perm['display_name'] = 'Create Amin'; $perm['description'] = 'the permission to create a admin account'; $perm = (new Permission())->create($perm);
为角色增添权限
$role->attachPermission($perm); $role->attachPermission([1,2,3]);//1,2,3为权限对应的id $role->attachPermission(1);//添加权限id为1的权限
为用户增添角色
$user->attachRole($role); $user->attachRole([1,2,3]);//1,2,3为角色对应的id $user->attachRole(1);//添加角色id为1的角色
判断用户是否拥有某权限
$role = Role::find(1); $user->is($role);//判断用户是否拥有某个角色 $perm = Permission::find(2); $user->can($perm);//判断用户是否有某个权限
is
和 can
都可以传入一个对象数组
$role = Role::find([1,2]);
$user->is($role, true);//要求用户拥有所有角色才有效
$perm = Permission::find([1,2]);
$user->can($perm);//判断用户是否有多个权限中的某个
中间件
使用中间验证请求资源的用户是否具有访问该资源的权限
在 app/Http/Kernel.php
的 routeMiddleware
数组中添加如下代码:
'permission_check' => \Zjien\Quantum\Middleware\QuantumAccess::class,