Thanks to visit codestin.com
Credit goes to github.com

Skip to content

duanluan/wuyou-boot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wuyou-boot

API

页面功能

用户管理 角色管理 菜单权限 数据权限 部门管理 岗位管理 菜单管理 租户管理 个人中心

多租户 + 数据权限

默认有:

  • 超级管理员角色,角色编码superAdmin
  • 超级管理员用户,所属角色为超级管理员,用户名superAdmin,密码123

超级管理员登录系统后,可以创建:

  • 【角色管理】创建角色名租户管理员,角色编码tenantAdmin
  • 【租户管理】创建租户名租户1
  • 【部门管理】创建部门名租户1-总部
  • 【用户管理】创建用户昵称租户1管理员,用户名tenant1Admin,所属角色租户管理员,部门租户1-总部,租户租户1

租户1管理员登录系统后,可以创建:

  • 【部门管理】创建部门名租户1-部门1租户1-部门2和子部门租户1-部门2子部门
  • 【角色管理】创建角色:
    • 角色名租户1全部,角色编码tenant1All,数据权限全部
    • 角色名租户1自定义,角色编码tenant1Custom
      • 查询数据权限自定义,选租户1-部门1租户1-部门2,不包含子部门。
      • 增删改数据权限自定义,选租户1-部门2,不包含子部门。
    • 角色名租户1本部门及以下,角色编码tenant1CurrentDeptAndChildren,数据权限本部门及以下
    • 角色名租户1本部门,角色编码tenant1CurrentDept,数据权限本部门
    • 角色名租户1仅本人,角色编码tenant1OnlySelf,数据权限仅本人
  • 【用户管理】创建用户:
    • 昵称租户1用户(全部),用户名tenant1AllUser,所属角色租户1全部,部门租户1-部门2子部门
    • 昵称租户1用户(自定义),用户名tenant1CustomUser,所属角色租户1自定义,部门租户1-部门1
    • 昵称租户1用户(本部门及以下),用户名tenant1CurrentDeptAndChildrenUser,所属角色租户1本部门及以下,部门租户1-部门2
    • 昵称租户1用户(本部门),用户名tenant1CurrentDeptUser,所属角色租户1本部门,部门租户1-部门2
    • 昵称租户1用户(仅本人),用户名tenant1OnlySelfUser,所属角色租户1仅本人,部门租户1-部门1
  • 【测试数据管理】创建测试数据(共5条):
    • 数据-总部,归属部门租户1-总部,创建人tenant1Admin
    • 数据-部门1-管理员创建,归属部门租户1-部门1,创建人tenant1Admin
    • 数据-部门1-仅本人创建,归属部门租户1-部门1,创建人tenant1OnlySelfUser(关键数据)。
    • 数据-部门2,归属部门租户1-部门2,创建人tenant1Admin
    • 数据-部门2子部门,归属部门租户1-部门2子部门,创建人tenant1Admin

测试数据拦截:

  • 登录superAdmin(超级管理员):
    • 查询结果:查看所有 5 条数据。
    • 新增结果:可以在 任意部门 创建数据。
    • 增删改结果:可以修改/删除所有 5 条数据。
    • 原因:拥有最高权限(StpExtUtil.isSuperAdmin),拦截器和校验逻辑直接放行,无视租户和数据范围限制。
  • 登录tenant1Admin(租户管理员):
    • 查询结果:查看所有 5 条数据。
    • 新增结果:可以在 任意部门 创建数据。
    • 增删改结果:可以修改/删除所有 5 条数据。
    • 原因:作为租户管理员,权限配置为“全部数据权限”,校验逻辑放行所有部门。
  • 登录tenant1AllUser(全部权限):
    • 查询结果:查看所有 5 条数据。
    • 新增结果:可以在 任意部门 创建数据。
    • 增删改结果:可以修改/删除所有 5 条数据。
    • 原因:角色权限为“全部”,校验逻辑允许在租户下任意部门操作。
  • 登录tenant1CustomUser(自定义权限:查部门1+2,改仅部门2):
    • 查询结果:查看 3 条数据(数据-部门1-管理员创建数据-部门1-仅本人创建数据-部门2)。
    • 新增结果:
      • 租户1-部门2 新增:成功
      • 租户1-部门1 新增:失败(抛出异常:“无权在所选部门操作数据”)。
    • 增删改结果:
      • 修改 数据-部门2成功
      • 修改 数据-部门1-管理员创建失败(提示“无增删改权限”)。
    • 原因:
      • 查询:Query 权限覆盖了部门1部门2
      • 新增/修改:Update 权限仅勾选了部门2。Service 层保存前校验的是 Update 权限,SQL 拦截器也是注入 Update 权限,严格实现了读写分离
  • 登录tenant1CurrentDeptAndChildrenUser(本部门及以下,所在部门:部门2):
    • 查询结果:查看 2 条数据(数据-部门2数据-部门2子部门)。
    • 新增结果:可以在 租户1-部门2租户1-部门2子部门 新增;在其他部门新增失败。
    • 增删改结果:可以修改/删除这 2 条数据。
    • 原因:权限范围包含本部门(部门2)及其子部门,操作范围严格限制在该树形结构内。
  • 登录tenant1CurrentDeptUser(本部门,所在部门:部门2):
    • 查询结果:仅查看 1 条数据(数据-部门2)。
    • 新增结果:仅可以在 租户1-部门2 新增;在子部门或其他部门新增失败。
    • 增删改结果:仅可以修改/删除这 1 条数据。
    • 原因:严格限制为本部门,自动排除子部门数据。
  • 登录tenant1OnlySelfUser(仅本人,所在部门:部门1):
    • 查询结果:仅查看 1 条数据(数据-部门1-仅本人创建)。
    • 新增结果:可以在 租户1-部门1 新增(通常限制为当前所在部门);在其他部门新增失败。
    • 增删改结果:
      • 修改 数据-部门1-仅本人创建成功
      • 修改 数据-部门1-管理员创建失败
    • 原因:
      • 新增:允许在自己所属部门创建数据。
      • 改/查:严格按 created_by = 当前用户 过滤,只能操作自己的数据。

权限覆盖矩阵(操作范围):

登录用户 角色权限类型 查询范围 (SELECT) 新增/修改范围 (INSERT/UPDATE) 读写分离体现
superAdmin 超级管理员 全部 全部
tenant1Admin 租户管理员 全部 全部
tenant1All 全部 全部 全部
tenant1Custom 自定义(读写分离)
查:部1,2; 改:部2
部门1 + 部门2 仅 部门2 ✅ 只能读部1,不能写部1
DeptAndChild 本部门及以下 部门2 + 子部门 部门2 + 子部门
DeptOnly 本部门 仅 部门2 仅 部门2
OnlySelf 仅本人 仅 部门1 (且本人创建) 仅 部门1 (且本人创建)

About

无尤,管理后台 admin 脚手架单体后端,前端地址:https://github.com/duanluan/wuyou-boot-ui

Topics

Resources

License

Stars

Watchers

Forks