berthott/laravel-api-permissions

Laravel API端点权限助手

3.0.4 2023-10-18 06:58 UTC

This package is auto-updated.

Last update: 2024-09-18 08:50:45 UTC


README

这是一个用于Laravel的API权限助手。使用单个中间件保护所有路由。

安装

$ composer require berthott/laravel-api-permissions

使用

  • 注意:此包假设您以Laravel的方式命名所有路由:models.action
  • permissions中间件添加到您想要保护的路由中。
  • 通过编写自己的Seeder来填充权限表
    • php artisan make:seeder PermissionTableSeeder
    • 使用berthott\Permissions\Helpers\PermissionsHelper来实际填充权限
      • PermissionsHelper::resetTables()将截断所有权限相关表。
      • PermissionsHelper::buildRoutePermissions()将构建权限表。您可以传递一个数组来映射路由到权限。例如。
        [
          '*.destroy' => [
             '*.destroy',
             '*.destroy_many'
          ],
        ]
      • PermissionsHelper::buildUiPermissions()将添加仅由前端处理的UI权限。
  • 如果migrate选项为true,则包将为您迁移五个表:rolesrole_userpermissionspermissionablespermission_routes
  • 如果migrate选项为false并且您想编写自己的迁移,可以运行默认迁移来查看
$ php artisan vendor:publish --provider="berthott\Permissions\ApiPermissionsServiceProvider" --tag="migrations"
  • 您可以通过添加HasPermissions特质来将permissions添加到User模型中。
  • 您可以通过添加HasRoles特质来将roles添加到您的User模型中。
  • 您可以使用上述选项之一或全部。
  • 您可以通过将它们添加到ignoreActions配置中或添加IgnorePermissionRoutes特质来忽略特定路由动作。

选项

要更改默认选项,请使用

$ php artisan vendor:publish --provider="berthott\Permissions\ApiPermissionsServiceProvider" --tag="config"
  • 继承自 laravel-targetable
    • namespace:应监视以配置特质的字符串或包含一个或多个命名空间的数组。默认为App\Models
    • namespace_mode:定义命名空间的搜索模式。ClassFinder::STANDARD_MODE将仅查找完全匹配的命名空间,ClassFinder::RECURSIVE_MODE将查找所有子命名空间。默认为ClassFinder::RECURSIVE_MODE
    • prefix:定义路由前缀。默认为api
  • 通用包配置
    • middleware:要应用到所有生成路由的所有中间件的数组。默认为[]
    • ignoreActions:定义默认情况下应忽略的操作数组。默认为[]
    • migrate:定义是否迁移标准表。默认为true

兼容性

已在Laravel 10.x上进行测试。

许可证

许可证文件。版权 © 2023 Jan Bladt。