smorken/rbac-lite

此包已被废弃且不再维护。作者建议使用smorken/roles包。

Laravel 5的RBAC辅助工具

v5.5.1 2018-07-11 19:19 UTC

README

许可协议

本软件是开源软件,根据MIT许可证授权。

Laravel框架是开源软件,根据MIT许可证授权。

需求

安装

  • 将以下内容添加到您的Laravel应用 composer.json 文件中
"require": {
    "smorken/rbac-lite": "~5.0"
}
  • 执行 composer update

  • 将服务提供者添加到 config/app.php

'providers' => [
...
    \Smorken\Rbac\ServiceProvider::class,
  • 发布所需的文件
$ php artisan vendor:publish --provider="Smorken\Rbac\ServiceProvider" --tag=db #view and config also available
  • 运行迁移(可能需要再次执行 dump-autoload)
$ php artisan db:seed --class="RbacSeeder"

使用

app('rbac') 提供了一个 Smorken\Rbac\Handler 的实例

rbac() 是同样的缩写

检查用户角色

$rbac = app('rbac');
if ($rbac->hasRole(1)) ...

if ($rbac->hasRole('admin')) ...

if (rbac(1)) ...

if (rbac('admin')) ...

规则

规则可以作为中间件在路由中设置,或者在控制器的文档块中直接设置

中间件 (routes.php)

Route::group(
    [
        'prefix'     => 'admin',
        'middleware' => ['auth', 'rbac'],
        'namespace'  => 'Admin',
        'rbac'       => [
            'allow' => [
                'actions' => ['*'],
                'roles'   => ['admin'],
                'users'   => ['user_id1', 'user_id2'],
            ],
            'deny'  => [
                'roles' => ['*'],
                'user'  => ['*'],
            ],
        ],
    ],

使用配置文件(例如 config/rbac.php)与路由中间件

Route::group(
    [
        'prefix'     => 'admin',
        'middleware' => ['auth', 'rbac'],
        'namespace'  => 'Admin',
        'rbac'       => config('rbac.admin'),
    ],

控制器

/**
 * @rbac allow|roles:admin,manage
 * @rbac deny|users:99
 */
class MyController extends Controller
    
    /**
     * @rbac allow|users:99
     */
    public function getView() { } //will override controller level
    
    public function getAdmin() { } //will use controller level