PHPackages                             w3ns0n/lumen-permission - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. w3ns0n/lumen-permission

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

w3ns0n/lumen-permission
=======================

Permission handling for lumen 6.x and up

v1.17(4y ago)0663—0%1MITPHPPHP ^7.2.5

Since Aug 21Pushed 4y agoCompare

[ Source](https://github.com/wenson/lumen-permission)[ Packagist](https://packagist.org/packages/w3ns0n/lumen-permission)[ Docs](https://github.com/wenson/lumen-permission/)[ RSS](/packages/w3ns0n-lumen-permission/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (6)Versions (17)Used By (0)

lumen-permission (RBAC Frame)
=============================

[](#lumen-permission-rbac-frame)

[![Travis (.org)](https://camo.githubusercontent.com/5f72b6b7d404226f339ec2ecb8cb6edae81506241cf040538861d4e67b044c5b/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/5f72b6b7d404226f339ec2ecb8cb6edae81506241cf040538861d4e67b044c5b/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)[![StyleCI](https://camo.githubusercontent.com/8ce12b4a4ba6ad4a2aa532d9525ff711a898f044ed00e32d2d856749a947a764/68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3238373031343434382f736869656c64)](https://camo.githubusercontent.com/8ce12b4a4ba6ad4a2aa532d9525ff711a898f044ed00e32d2d856749a947a764/68747470733a2f2f6769746875622e7374796c6563692e696f2f7265706f732f3238373031343434382f736869656c64)[![GitHub repo size](https://camo.githubusercontent.com/a163c445eb35b54699919e67a6680f7d5177077a5ec0b3fbffc9974a5b1361de/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/a163c445eb35b54699919e67a6680f7d5177077a5ec0b3fbffc9974a5b1361de/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)[![Packagist PHP Version Support](https://camo.githubusercontent.com/c0d90eb6574887ab6e86872ff3d9253fe757ab30b5ad080b1892438dc45df5e6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/c0d90eb6574887ab6e86872ff3d9253fe757ab30b5ad080b1892438dc45df5e6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)[![Packagist Version](https://camo.githubusercontent.com/70b7053d56ba05980af59d69ab5bea10a58ba2042a511441cf8d5d7c7db7f80a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f696e636c7564655f70726572656c6561736573267374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/70b7053d56ba05980af59d69ab5bea10a58ba2042a511441cf8d5d7c7db7f80a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f696e636c7564655f70726572656c6561736573267374796c653d666c61742d737175617265)[![Packagist License](https://camo.githubusercontent.com/f8b63e415808297dd7bcbc6d3fa2fa57a95a45292dc6f33f005659a108371023/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/f8b63e415808297dd7bcbc6d3fa2fa57a95a45292dc6f33f005659a108371023/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d696e677a61696c792f6c756d656e2d7065726d697373696f6e3f7374796c653d666c61742d737175617265)

简体中文 | [English](./README.en.md)

开始
--

[](#开始)

### 安装

[](#安装)

第一步，`composer`安装

```
composer require w3ns0n/lumen-permission
```

安装成功后，复制以下文件

```
cp vendor/w3ns0n/lumen-permission/config/permission.php config/permission.php
cp vendor/w3ns0n/lumen-permission/database/migrations/create_permission_tables.php.stub database/migrations/2020_0 1_01_000000_create_permission_tables.php
```

同时也需要把`lumen-framework`核心框架的`auth.php`配置文件复制出来

```
cp vendor/laravel/lumen-framework/config/auth.php config/auth.php
```

然后在 `bootstrap/app.php`, 根据需要注册`PermissionMiddleware`，`PermissionRouteMiddleware`，`RoleMiddleware`（用法情况使用说明）

```
$app->routeMiddleware([
    'auth'       => App\Http\Middleware\Authenticate::class,
    'permission' => Mingzaily\Permission\Middlewares\PermissionMiddleware::class,
    'permission_route' => Mingzaily\Permission\Middlewares\PermissionRouteMiddleware::class,
    'role'       => Mingzaily\Permission\Middlewares\RoleMiddleware::class,
]);
```

在同个文件下, 注册扩展包的配置文件，`lumen-permission`的服务器提供类，和`cache`别名

```
// register permission config file
$app->configure('permission');
// register frame's cacheManager
$app->alias('cache', \Illuminate\Cache\CacheManager::class);  // if you don't have this already
// register lumen-permission ServiceProvider
$app->register(Mingzaily\Permission\PermissionServiceProvider::class);
// register AuthServiceProvider
$app->register(App\Providers\AuthServiceProvider::class);
```

接着，在`.env`或`config/database.php`配置数据库连接参数

运行迁移文件为扩展包创建表：

```
php artisan migrate
```

### 使用

[](#使用)

用户分配，删除，更换角色

```
$user = Auth::user();
// assign role, also can be written as role id
$user->assignRole('test');
// if deploy multiple roles
$user->assignRole('test1','test2');
// remove role
$user->removeRole('test');
// sync role => Remove all current roles and set the given ones.
$user->syncRole('test2');
```

获取第一个角色

```
$role = $user->getFirstRole();
```

获取所有角色

```
$role = $user->roles;
// or
$role = $user->getAllRoles();
```

判断是否有该角色

```
$user->hasRole('test');
$user->hasAnyRole('test','test2');// Return true as long as one exists
$user->hasAllRoles('test','test2');// All roles exist before returning true
```

角色分配，删除，同步权限

```
$role->givePermissionTo('view.user');
// or be written as permission id
$role->givePermissionTo(1);
// revoke
$role->revokePermissionTo('view.user');
// sync => remove all current permissions and set the given ones.
$role->syncPermissionTo(1,2,3)
```

角色查看权限

```
$role->getAllPermissions();
// also support tree
$role->getTreePermissions();
```

判断角色是否有该权限

```
$role->hasPermissionTo('view.user'); // $role->checkPermissionTo('view.user')
$role->hasAnyPermission('view.user','edit.user');
$role->hasAllPermissions('view.user','edit.user')
```

也可以通过懒加载进行获取角色及相关权限

```
$user->load('roles.permissions');
```

### 中间件

[](#中间件)

PermissionRouteMiddleware

```
Route::group(['middleware' => 'permission_route'], function () {
    //
});

```

PermissionMiddleware

```
Route::group(['middleware' => ['permission:view.user']], function () {
    //
});

```

RoleMiddleware

```
Route::group(['middleware' => ['role:test']], function () {
    //
});

```

### 超级管理员设置

[](#超级管理员设置)

```
