Laravel5 Rbac
laravel-rbac是一个基于Laravel5的RBAC(Role-Based Access Control)扩展包。, (*1)
版本信息
| Rbac |
Laravel |
PHP |
| 0.0.x |
>=5.x |
>=7.1 |
安装方式
直接通过命令行来快速安装:, (*2)
composer require niefufeng/laravel-rbac
或者在composer.json的require里加入:, (*3)
{
"require": {
"huang-yi/rbac-laravel": "1.0.*"
}
}
然后执行composer install。, (*4)
配置
首先在config/app.php里的providers里添加:, (*5)
[
'providers' => [
NieFufeng\LaravelRbac\ServiceProvider::class,
]
]
然后发布配置文件和migration文件,在命令行执行:, (*6)
php artisan vendor:publish
发布之后根据自己实际情况配置config/rbac.php文件。, (*7)
执行数据库迁移,在命令行执行:, (*8)
php artisan migrate
接下来,打开项目的User模型,需要使用NieFufeng\LaravelRbac\Traits\UserTrait和实现NieFufeng\LaravelRbac\Contracts\UserInterface:, (*9)
<?php
namespace App;
use NieFufeng\LaravelRbac\Contracts\UserInterface;
use NieFufeng\LaravelRbac\Traits\UserTrait;
class User extends Authenticatable implements UserInterface
{
use UserTrait;
}
食用方式
$user = App\User::first();
// 新建权限
$permission = NieFufeng\LaravelRbac\Models\Permission::create([
'name' => '新建用户',
'slug' => 'create-users',
'description' => '新建用户'
]);
// 新建角色
$role = NieFufeng\LaravelRbac\Models\Role::create([
'name' => '管理员',
'slug' => 'admin',
'description' => '牛逼哄哄的管理员'
]);
// 给角色赋予权限,接受array、Collection、int和Permission
$role->attachPermissions($permission);
// 给用户赋予角色
$user->attachRoles($role);
// 判断用户是否有xx角色
$user->hasRoles('admin');//true
// hasPermissions和may是一个方法
$user->hasPermissions('create-users');//true
$user->may('create-users');//true
// 剥夺角色
$user->detachRoles($role);
// 获取用户的所有角色信息
$user->roles;
// 从缓存里获取用户的所有角色信息
$user->cachedRoles();
// 从缓存里清除用户的角色信息(执行attachRoles和detachRoles会自动清除)
$user->forgetCachedRoles();
当然,扩展目前自带了两个中间件,可以按照需要在app/Http/Kernel.php里加入:, (*10)
protected $routeMiddleware = [
'permissions' => NieFufeng\LaravelRbac\Middleware\Permission::class,
'role' => NieFufeng\LaravelRbac\Middleware\Role::class
];
然后即可在路由中使用:, (*11)
Route::get('/', [
'users' => 'XyzController@hehe',
'middleware' => 'role:admin,super-admin'
]);
blade支持
//判断是否有角色,多个角色用半角,隔开
@hasRole('admin,super-admin')
如果你看到这段话,说明你是管理员。
@endHasRole
//判断是否有权限,多个权限用半角,隔开
@hasPermission('create-users')
<button>新建用户</button>
@endHasPermission
支持
Bugs和问题可提交至Github, (*12)
Email:niefufeng@gmail.com, (*13)
QQ:7547811, (*14)
License
当然是选择 MIT license 啦~, (*15)