smorken/roles

Laravel 的角色辅助工具

v10.4.3 2024-09-12 18:15 UTC

README

许可

此软件是开源软件,根据MIT许可协议授权。

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

要求

安装

将以下内容添加到您的 Laravel 应用 composer.json 文件中

"require": {
    "smorken/roles": "^6.0"
}

$ composer update

服务提供器应该会自动注册自己。

如果不自动注册,请将服务提供器添加到 config/app.php

'providers' => [
...
    \Smorken\Roles\ServiceProvider::class,

发布所需的文件(如果您打算覆盖它们)

$ php artisan vendor:publish --provider="Smorken\Roles\ServiceProvider" --tag=views #config also available

如果需要不同的初始角色,请编辑 config/roles.php

运行迁移(可能需要再次执行 dump-autoload)

$ php artisan db:seed --class="RoleSeeder"

使用方法

这是一个非常简单的角色扩展集。任何级别较高的角色都将有权访问级别较低的角色。

授权通过 Gates 处理。您可以选择创建自己的 Gates 或使用 Smorken\Roles\ServiceProvider 中的内置静态方法将其添加到 AuthServiceProvider

\App\Providers\AuthServiceProvider

<?php
/**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        // ...
        $this->registerPolicies();
        \Smorken\Roles\ServiceProvider::defineGates($this->app);
    }

如果您使用默认方法,每个角色都会分配一个名为 "role-[角色代码]" 的 gate。

这些 gates 可以通过 blade 快捷方式在 blade 文件中使用,例如 @can('role-role-code'),例如 @can('role-super-admin')

Gates 可用于路由

<?php
Route::group([
    'prefix' => 'admin',
    'middleware' => ['auth', 'can:role-admin'],
    'namespace' => 'Admin'
],
function () {
});

Gate 门面

<?php
//boolean check
if (Gate::allows('role-manage')) {

}
if (Gate::denies('role-super-admin')) {

}
if (Gate::forUser($user)->allows('role-admin')) {

}
//authorize check (throw AuthorizationException on failure)
Gate::authorize('role-manage');