herode / role
Herode 角色和权限
dev-master / 1.0.x-dev
2019-05-02 07:56 UTC
Requires
- php: >=7.1.0
- ext-json: *
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); }