mradang/laravel-rbac

v3.3.1 2023-06-17 09:43 UTC

This package is auto-updated.

Last update: 2024-03-17 11:33:03 UTC


README

$ composer require mradang/laravel-rbac -vvv

配置

  1. 添加 .env 环境变量,使用默认值时可省略
# 指定用户模型类,实现 RBAC 的关键配置
RBAC_USER_MODEL=\App\Models\User
  1. 刷新数据库迁移
php artisan migrate:refresh
  1. 用户模型配置
use Laravel\Sanctum\HasApiTokens;
  1. 路由

    需指定路由 name,以「abc.xyz」形式命名,并添加「rbac」中间件

添加的内容

添加的数据表迁移

  • rbac_access
  • rbac_node
  • rbac_role_user
  • rbac_role

添加的路由

  • post /api/rbac/allNodes
  • post /api/rbac/allRoles
  • post /api/rbac/createRole
  • post /api/rbac/deleteRole
  • post /api/rbac/updateRole
  • post /api/rbac/findRoleWithNodes
  • post /api/rbac/saveRoleSort
  • post /api/rbac/syncRoleNodes

添加的命令

  1. 生成路由描述文件:route_desc.json
php artisan rbac:MakeRouteDescFile
  1. 刷新路由节点及描述
php artisan rbac:RefreshRbacNode

添加的路由中间件

  • rbac

路由保护

用户模型 Trait

use mradang\LaravelRbac\Traits\UserModelTrait;

增加以下内容:

  • belongsToMany rbacRoles 角色关联(多对多)
  • array getAccessAttribute 权限属性 access,user 模型需实现 getIsAdminAttribute(超级管理员)属性
  • void rbacSyncRoles(array $roles) 同步用户与角色的关联,$roles 为角色 id 数组
  • void rbacDeleteUser() 删除用户权限信息

签发令牌

$token = $user->createToken('app-name', $user->access)->plainTextToken;

验证登录

Route::middleware(['auth:sanctum'])

验证权限

Route::middleware(['auth:sanctum', 'rbac'])