PHPackages                             sixbyte/perchecker - 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. sixbyte/perchecker

ActiveLibrary

sixbyte/perchecker
==================

Routes &amp; Roles &amp; Permissions for Laravel 5

v0.2.7(10y ago)3571MITPHPPHP &gt;=5.5.0

Since Nov 13Pushed 10y ago1 watchersCompare

[ Source](https://github.com/sixbyter/perchecker)[ Packagist](https://packagist.org/packages/sixbyte/perchecker)[ RSS](/packages/sixbyte-perchecker/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (10)Used By (0)

Perchecker
==========

[](#perchecker)

基于 laravel5.\* 的权限管理包

特性
--

[](#特性)

参考了 [artesaos/Defender](https://github.com/artesaos/defender) 和其他权限管理包的一些特性,但也有一些跟他们不一样的地方

### 不一样

[](#不一样)

1. 路由只和权限绑定, 存储在数据库
2. 权限有父级权限的树状结构
3. 简单的管理操作

安装
--

[](#安装)

```
composer require "sixbyte/perchecker:0.2.*"
```

配置
--

[](#配置)

在 `app/config/app.php` 的 `$providers` 和 `$aliases` 数组下分别添加 providers

```
'Sixbyte\Perchecker\PercheckerServiceProvider',
```

aliases

```
'Perchecker' => 'Sixbyte\Perchecker\PercheckerFacade',
```

设置资源

```
php artisan vendor:publish
```

数据迁移

```
php artisan migrate
```

路由入库

```
php artisan perchecker:routesync
```

Trait 在 app/User.php 添加

```
use Sixbyte\Perchecker\HasPermissionTrait;
```

```
use ... HasPermissionTrait
```

配置完成

使用
--

[](#使用)

#### 在 app\\Http\\Kernel.php 的 `$routeMiddleware` 数组 注册中间件

[](#在-apphttpkernelphp-的-routemiddleware-数组-注册中间件)

```
'perchecker'    => 'Sixbyte\Perchecker\PercheckerMiddleware',

```

#### 在需要权限检查的路由下使用中间件

[](#在需要权限检查的路由下使用中间件)

```
// 用户登录验证是前提
Route::get('/test', ['middleware' => ['auth', 'perchecker'], 'as' => 'test', function () {
    echo "i have permission";
}]);
```

#### 为用户 `1` 绑定新角色

[](#为用户-1-绑定新角色)

```
# 创建新角色
$role_model = Perchecker::getRoleModel();
$role_id = $role_model->insert(['name'=>'admin','readable_name'=>'超级管理员']);

# 用户绑定新角色 多对多的关系
$user = User::find(1);
$user->roles()->attach($role_id);
```

#### 为角色 `1` 绑定权限

[](#为角色-1-绑定权限)

```
# 创建权限
$permission_model = Perchecker::getPermissionModel();
$permission_id = $permission_model->insert(['name'=>'user.create']);

# 权限绑定角色 多对多关系
$role_model = Perchecker::getRoleModel();
$role = $role_model->find(1);
$role->permissions()->attach($permission_id);
```

#### 为路由 `1` 绑定权限 同上

[](#为路由-1-绑定权限-同上)

#### 配置文件

[](#配置文件)

```
/**
 * Perchecker - Laravel 5.1 Package
 * Author: liu.sixbyte@gmail.com.
 */
return [

    'role_model'         => 'Sixbyte\Perchecker\Models\Role', // 5.0 style

    'permission_model'   => \Sixbyte\Perchecker\Models\Permission::class,

    'route_model'        => \Sixbyte\Perchecker\Models\Route::class,

    /*
     * Forbidden callback
     */
    'forbidden_callback' => function () {
        header('HTTP/1.0 403 You don\'t have permission to do it!');
        exit('You don\'t have permission to do it!');
    },
    /**
     * route filter function
     */
    'filter_route'       => function ($route) {
        if (in_array('perchecker', $route['middleware'])) {
            return $route;
        }
        return null;
    },
    /*
     * Use template helpers
     */
    'template_helpers'   => true,

    /*
     * Super User role name
     */
    'superuser_role'     => 'superuser',

];
```

#### 是否有此权限, 及权限的父权限 pre\_permission\_id

[](#是否有此权限-及权限的父权限-pre_permission_id)

: hasPermission($p) $p 权限的id属性值或者名字属性值

```
$user = Auth::user();
$user->hasPermission(1);
$user->hasPermission('user.create');

```

权限的验证方式:

1. 查找用户的所以角色
2. 求出这些角色的权限并集
3. 查找私有权限,和角色权限求并集
4. 检查 权限 是否在并集里存在,存在 `true`, 不存在 `false`

#### 是否有此角色

[](#是否有此角色)

: hasRole($r) $p 角色的id属性值或者名字属性值

```
$user = Auth::user();
$user->hasRole(1);
$user->hasRole('admin');

```

#### 获取所有权限

[](#获取所有权限)

用户

```
$user = Auth::user();
$user->getPermissions();
```

角色

```
$role_model = Perchecker::getRoleModel();
$role = $role_model->find(1);
$role->permissions()->attach($permission_id);
$role->getPermissions();
```

扩展
--

[](#扩展)

1. 继承 `Model` 类,修改配置文件
2. 重新编写 中间件, ServiceProvider, 修改注册文件
3. 替换HasPermissionTrait.php

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community5

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

9

Last Release

3819d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f15c74b995c9b1e5f6ce9b1ed75e97a1a9fec8b296858c2148ae7c233d12abfc?d=identicon)[sixbyte](/maintainers/sixbyte)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sixbyte-perchecker/health.svg)

```
[![Health](https://phpackages.com/badges/sixbyte-perchecker/health.svg)](https://phpackages.com/packages/sixbyte-perchecker)
```

###  Alternatives

[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11120.2M21](/packages/anourvalar-eloquent-serialize)[namu/wirechat

A Laravel Livewire messaging app for teams with private chats and group conversations.

54324.5k](/packages/namu-wirechat)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135192.6k5](/packages/statamic-rad-pack-runway)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
