PHPackages                             daijulong/laravel-roles - 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. daijulong/laravel-roles

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

daijulong/laravel-roles
=======================

适用于 laravel5.5+ 的一套账号、多身份、多角色的权限系统

1.0.0(8y ago)51.6k2MITPHP

Since Jan 12Pushed 8y ago1 watchersCompare

[ Source](https://github.com/daijulong/laravel-roles)[ Packagist](https://packagist.org/packages/daijulong/laravel-roles)[ RSS](/packages/daijulong-laravel-roles/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (2)Used By (0)

Laravel Roles
=============

[](#laravel-roles)

适用于 laravel5.5+ 的一套账号、多身份、多角色的权限系统。

环境要求
----

[](#环境要求)

- laravel/laravel: ~5.5

定义
--

[](#定义)

- 身份（identity）：用户在不同子系统或场景中有不同的身份，如在前台时身份为普通用户，在后台时身份则为管理员等
- 角色（role）：在确定身份后，对应身份可以包含一个或多个角色，如身份为后台管理员时，可以分为超级管理员、业务管理员等角色进行权限管理

适用场景
----

[](#适用场景)

本包适用于项目要求用同一套账号适用不同场景的情况，如：论坛用户中某一些作为版主，除了可以作为普通用户进行论坛的日常活动，还需要行使作为版主的权力进行论坛的管理，甚至需要进入后台进行业务管理，同时管理员或业务人员等其他人员也需要同时在论坛与普通用户一样地进行日常活动。

安装
--

[](#安装)

请先启用 laravel 自带的 Auth 再进行安装。

Via Composer

`$  composer require daijulong/laravel-roles`

composer.json

`"daijulong/laravel-roles": "~1.0"`

配置
--

[](#配置)

生成配置文件：

`php artisan vendor:publish --provider="Daijulong\LaravelRoles\Providers\PermissionProvider"`

将在config目录下生成配置文件：permission.php，各配置项在此配置文件中有详细说明。

构建身份及角色
-------

[](#构建身份及角色)

假设：在一个项目中，要求前台用户和后台管理员使用同一套账号进行登录，作为前台用户时，每用户仅对应一个"用户组"，而作为后台管理员时，可以拥有多个角色进行不同的业务管理。

### 普通用户增加单角色机制

[](#普通用户增加单角色机制)

```
class User extends Authenticatable
{
    use Notifiable, SingleRoleUserModel;

    // ...

    //定义普通用户角色（用户组）模型
    protected function roleModel()
    {
        return UserRole::class;
    }

    //定义与管理员模型关系，如果还有其他身份，也以此类推进行定义
    public function admin ()
    {
        return $this->hasOne(Admin::class);
    }
}

```

> 对于单角色的用户模型，应 `use Daijulong\LaravelRoles\Traits\SingleRoleUserModel` 并实现其定义角色模型的抽象方法 `roleModel()` ，如果是新建的一个单角色用户模型，还应声明其与 User 的关系

### 创建用户角色表及模型 `UserRole`

[](#创建用户角色表及模型-userrole)

#### 用户表增加字段

[](#用户表增加字段)

```
$table->unsignedInteger('role_id')->default(0)->comment('角色ID');

```

#### 用户角色表migration

[](#用户角色表migration)

```
