PHPackages                             annon/think-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. annon/think-permission

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

annon/think-permission
======================

thinkphp6 permission

v0.6.4(3y ago)06MITPHPPHP &gt;=7.1

Since Jul 29Pushed 3y ago1 watchersCompare

[ Source](https://github.com/wanganfu/think-permission)[ Packagist](https://packagist.org/packages/annon/think-permission)[ Docs](https://xiaodim.com/)[ RSS](/packages/annon-think-permission/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (3)Used By (0)

ThinkPHP Permission
===================

[](#thinkphp-permission)

ThinkPHP6 权限包

[![Latest Stable Version](https://camo.githubusercontent.com/95d214bb573fbe13ed6c31fb130aa9732c3cbebd1ac2350432d158cd95d992df/68747470733a2f2f706f7365722e707567782e6f72672f7869616f64692f7468696e6b2d7065726d697373696f6e2f762f737461626c65)](https://packagist.org/packages/xiaodi/think-permission)[![Total Downloads](https://camo.githubusercontent.com/a57bd75fab7d90386a3e51aea38c44d99d23e185d441cf150013ced4ca777925/68747470733a2f2f706f7365722e707567782e6f72672f7869616f64692f7468696e6b2d7065726d697373696f6e2f646f776e6c6f616473)](https://packagist.org/packages/xiaodi/think-permission)[![Latest Unstable Version](https://camo.githubusercontent.com/82aec65909bcbb5efd7c8c3a3504a08148b48ab43d737367e4c4e5650eea4dda/68747470733a2f2f706f7365722e707567782e6f72672f7869616f64692f7468696e6b2d7065726d697373696f6e2f762f756e737461626c65)](//packagist.org/packages/xiaodi/think-permission)[![LICENSE](https://camo.githubusercontent.com/be80b8cb211ceb2263744e99fdb161a40124901906fd7c7f47d6361760dd7e8b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d416e74692532303939362d626c75652e737667)](https://github.com/996icu/996.ICU/blob/master/LICENSE)

### 安装

[](#安装)

```
composer require xiaodi/think-permission

```

### 使用

[](#使用)

- [创建必要数据](#%E5%88%9B%E5%BB%BA%E5%BF%85%E8%A6%81%E6%95%B0%E6%8D%AE)
- - [规则](#%E8%A7%84%E5%88%99)
- - [角色](#%E8%A7%92%E8%89%B2)
- - [用户](#%E7%94%A8%E6%88%B7)
- [分配关系](#%E5%88%86%E9%85%8D%E5%85%B3%E7%B3%BB)
- - [规则与角色](#%E8%A7%84%E5%88%99%E4%B8%8E%E8%A7%92%E8%89%B2)
- - [用户与角色](#%E7%94%A8%E6%88%B7%E4%B8%8E%E8%A7%92%E8%89%B2)
- [解除关系](#%E8%A7%A3%E9%99%A4%E5%85%B3%E7%B3%BB)
- - [规则与角色](#%E8%A7%A3%E9%99%A4%E8%A7%84%E5%88%99%E4%B8%8E%E8%A7%92%E8%89%B2)
- - [用户与角色](#%E8%A7%A3%E9%99%A4%E7%94%A8%E6%88%B7%E4%B8%8E%E8%A7%92%E8%89%B2)
- [权限判断](#%E6%9D%83%E9%99%90%E5%88%A4%E6%96%AD)
- [数据表](#%E6%95%B0%E6%8D%AE%E8%A1%A8)

### 创建必要数据

[](#创建必要数据)

#### 规则

[](#规则)

```
use xiaodi\Permission\Model\Permission;
// 创建一条可查看首页的权限
Permission::create(['name' => 'home']);
```

#### 角色

[](#角色)

```
use xiaodi\Permission\Model\Role;
// 创建一个名为编辑的角色
Role::create(['name' => 'writer']);
```

#### 用户

[](#用户)

```
use xiaodi\Permission\Model\User;
// 创建一个名为xiaodi的用户
User::create(['name' => 'xiaodi']);
```

### 分配关系

[](#分配关系)

#### 规则与角色

[](#规则与角色)

```
use xiaodi\Permission\Model\Permission;
use xiaodi\Permission\Model\Role;
// 将home规则分配到writer角色
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$permission->assignRole($role);

// 将home规则分配到writer角色 (跟上面效果一样)
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$role->assignPermission($permission);
```

#### 用户与角色

[](#用户与角色)

```
use xiaodi\Permission\Model\User;
use xiaodi\Permission\Model\Role;

// 为用户xiaodi分配 writer角色
$user = User::findByName('xiaodi');
$role = Permission::findByName('writer');
$user->assignRole($role);

// 为用户xiaodi分配 writer角色 (跟上面效果一样)
$user = User::findByName('xiaodi');
$role = Permission::findByName('writer');
$role->assignUser($user);
```

### 解除关系

[](#解除关系)

#### 解除规则与角色

[](#解除规则与角色)

```
use xiaodi\Permission\Model\Permission;
use xiaodi\Permission\Model\Role;

// home规则与writer角色 解除关系
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$permission->removeRole($role);

// writer角色与home规则 解除关系(跟上面效果一样)
$permission = Permission::findByName('home');
$role = Permission::findByName('writer');
$role->removePermission($permission);
```

#### 解除用户与角色

[](#解除用户与角色)

```
use xiaodi\Permission\Model\User;
use xiaodi\Permission\Model\Role;

// 用户xiaodi与writer角色 解除关系
$user = User::findByName('xiaodi');
$role = Permission::findByName('writer');
$user->removeRole($role);

// writer角色与用户xiaodi 解除关系 (跟上面效果一样)
$user = User::findByName('xiaodi');
$role = Permission::findByName('writer');
$role->removeUser($user);
```

### 权限判断

[](#权限判断)

#### 手动

[](#手动)

```
use xiaodi\Permission\Model\User;

$user = User::findByName('xiaodi');
if ($user->can('home')) {
    // 有 `home`权限
} else {
    // 无 `home`权限
}
```

#### 路由守护

[](#路由守护)

用户信息，请手动注入到`$request->user`上，并且使用 `\xiaodi\Permission\Contract\UserContract` 接口。 [Demo](#%E4%B8%AD%E9%97%B4%E4%BB%B6%E6%B3%A8%E5%85%A5%E7%94%A8%E6%88%B7)`/home` 路由添加一条权限控制 访问者有 `home`权限才能允许访问

```
Route::post('/home', 'home/index')->middleware('auth', 'home');
```

### 中间件注入用户

[](#中间件注入用户)

#### 用户模型

[](#用户模型)

```
