bunthoeuntok/laravel-simple-permission

dev-master 2023-07-03 04:29 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

本包旨在帮助 Laravel 开发者实现简单的角色和权限。

安装

您可以通过 Composer 安装此包。

composer require bunthoeuntok/laravel-simple-permission

您可以通过以下命令发布配置、迁移和中间件:

php artisan permission:install

然后运行以下命令迁移表:

php artisan migrate

这是已发布配置文件的内容

return [
    // Menu level structure
    'menu_levels' => [
        'module',
        'sub-module',
        'page'
    ],

    // Cache key
    'cache_key' => 'permissions',

    // Menu structure to import
    'data' => [
        ...
    ]
];

用法

步骤 1

您需要在 User.php 模型中使用 HasRole 特性。

use Bunthoeuntok\SimplePermission\Traits\HasRole;

class User extends Authenticatable
{
    ...
    use HasRole;
    ...
}

步骤 2

Kernel.php 中注册 PermissionMiddleware.php

protected $routeMiddleware = [
    ...
    'role.permission' => \App\Http\Middleware\PermissionMiddleware::class
];

步骤 3

在路由文件中使用命名路由中间件。

  • 注意:当您定义路由时,应提供 name 属性,使其与 菜单操作 中的 route_name 匹配。
// Index action
Route::get('users', [UserController::class, 'index'])->middleware(['role.psermission', 'auth'])->name('users.index');

// Delete action
Route::get('users/{user}', [UserController::class, 'destroy'])->middleware(['role.psermission', 'auth'])->name('users.destroy');

我们能做什么

  • 创建角色并为用户分配角色
    // Create a role
    $role = Bunthoeuntok\SimplePermission\Models\Role::create([
        'role_name' => 'Admin',
        'is_admin' => false;
    ]);

    // Create user
    $user =  User::factory()->create();

    // Assign role to a user
    $user->assignRole($role);

操作

  • 创建菜单及其操作
    $menu = Bunthoeuntok\SimplePermission\Models\Menu::create([
        'menu_name' => 'User',
        'level' => 'page'; // base on menu_levels in simple-permissions.php config
    ]);

    // Create menu actions
    $menu->actions()->saveMany([
        new Bunthoeuntok\SimplePermission\Models\Menu([
            'action_name' => 'index',
            'route_name' => 'modules.root-pages.index',
            'default' => true,
        ]),
        new Bunthoeuntok\SimplePermission\Models\Menu([
            'action_name' => 'delete',
            'route_name' => 'modules.root-pages.delete',
        ])
    ]);
  • 或者运行命令 php artisan permission:import,此命令将导入在 simple-permission.php 配置中的 data 键设置的菜单结构。
return [
    // Menu structure to import
    'data' => [
        [
            'menu_name' => 'User',
            'level' => 'page',
            'actions' => [
                [
                    'action_name' => 'index',
                    'route_name' => 'users.index',
                    'default' => true,
                ],
                [
                    'action_name' => 'delete',
                    'route_name' => 'users.delete',
                ],
            ]
        ],
    ],
]

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

请参阅 贡献指南 获取详细信息。

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件