herode/role

Herode 角色和权限

dev-master / 1.0.x-dev 2019-05-02 07:56 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:32 UTC


README

安装

有两种安装方式,您可以选择其中一种:

1. 如果您想使用和修改此包,您可以

  • 将此文件夹 heroderole 复制到您的根项目的 modules/heroderole

  • 打开文件 composer.json 并编辑

{
    //...
    "require": {
        "herode/role": "*@dev",
    },
    "repositories": [
        //...
        {
          "type": "path",
          "url": "./modules/heroderole"
        }
      ]
    //...
}

2. 或者您可以通过 composer 安装

composer require herode/role

接下来,运行: composer update

您可以通过命令发布迁移,配置,种子
php artisan herode-role:install

迁移发布后,您可以运行迁移来创建角色表
php artisan migrate

发布后,config/herode-roles.php 配置文件包含

return [
    'models' => [
        /*
         * Herode roles model
         */
        'role' => Herode\Role\Role::class,
    ],

    'table_names' => [
        'role' => 'roles'
    ],
];

使用方法

首先,将 Herode\Role\Contracts\HasRoles 特性添加到您的 User 模型中

use Herode\Role\Contracts\HasRoles;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasRoles;
    // ...
}

创建一个角色

$role = Role::create(['name' => 'admin', 'description' => 'Administrator']);

角色可以从用户分配

$user->assignRole($role);

您可以使用检查用户是否有角色

$user->hasRole('admin')

从用户中删除角色

$user->removeRole('admin')

您可以通过种子命令发布默认种子
php artisan db:seed --class=RoleDefaultSeeder

使用中间件

此包包含 RoleMiddleware 中间件。您可以在您的 app/Http/Kernel.php 文件中添加它们

protected $routeMiddleware = [
        //...
        'role' => \Herode\Role\Middlewares\RoleMiddleware::class,
    ];
    

然后您可以使用中间件规则保护您的路由

Route::middleware(['role:admin'])->group(function () {
    //...
});
Route::middleware(['role:admin|company'])->group(function () {
    //...
});

捕获角色失败

如果您想覆盖默认的 403 响应,您可以使用应用程序的异常处理程序捕获 UnauthorizedException

public function render($request, Exception $exception)
{
    if ($exception instanceof Herode\Role\Exceptions\UnauthorizedException) {
        // Code here ...
    }
    
    return parent::render($request, $exception);
}