基于角色的访问控制

安装: 14

依赖: 0

建议者: 0

安全性: 0

星级: 0

分支: 0

类型:tshevchenko-package

dev-main 2024-05-15 19:26 UTC

This package is not auto-updated.

Last update: 2024-10-02 20:16:14 UTC


README

基于角色的访问控制

安装

composer require tshevchenko/rbac

迁移

运行迁移以在数据库中创建表

php artisan migrate

所需的环境常量

  • RBAC_SUPER_ADMIN_EMAIL - Seed 用于分配 超级管理员 角色的超级管理员电子邮件。
  • RBAC_USER_MODEL - 用户模型的完全限定类名(《App\Models\User》)

配置

发布配置文件

php artisan vendor:publish --tag=rbac-config

设置简要说明

  • storage - 可以为 dbconfig。在 db 的情况下,权限将存储在数据库中。在 config 的情况下,权限将从该配置文件的 permissions 属性中获取。对于拥有少量受保护部分的小项目来说可能很方便。
  • super_admin_email - 查看 ENV RBAC_SUPER_ADMIN_EMAIL
  • user_model - 查看 ENV RBAC_USER_MODEL
  • super_admin_role_id - 超级管理员 角色的角色 ID。此角色授予无需额外检查的访问权限。
  • permissions - 权限数组。每个数组元素必须包含 role_idaction
      'permissions' => [
          [
              'role_id' => 4,
              'action' => 'App\Http\Controllers\ProfileController@edit',
          ],
      ],
    
  • excluded_actions - 当更新 rbac_actions 表时将被排除的路由数组。
      'excluded_actions' => [
          'generated::',
          'ignition.',
          'sanctum.',
      ],
    

特性

在您的用户模型中使用 Tshevchenko\Rbac\Models\Traits\RbacTrait

命令

使用命令 rbac:actions-update 更新 rbac_actions 表。这将根据现有的路由更新表。在向应用程序添加新路由后始终使用此命令。

种子

种子数据创建了 4 个访问角色以展示功能。

  • 超级管理员,可以访问所有受保护部分,不会检查特定操作的权利。
  • 管理员、经理、用户 - 作为示例创建,用户 角色分配给所有现有用户。
php artisan db:seed --class=Tshevchenko\\Rbac\\Database\\seeders\\RoleSeeder