内置平台管理模组
1 背景说明
支持项目独立定制第三方权限的情况,基于领域模型、逻辑、页面等资源开发内置一套默认的第三方权限体系,提供给独立定制第三方权限的场景快速复用修改。
2 功能说明
每个应用初始化时将新增一个内置的平台管理模组,包含用户管理,角色管理,组织管理和操作日志管理等功能。所有功能均基于领域模型和页面编辑器搭建,支持用户基于初始化内置的模组自定义修改。
2.1 领域模型结构
该模组的领域模型如下图,主要包括用户、部门、角色、资源等基础信息实体,以及数据处理所需的非持久化实体。
2.2 功能开关
如下图所示,在设置-用户与安全 中,将安全模式调整为第三方管理,并开启”应用内置组织架构及权限“开关,此时将启用“平台管理”模组作为应用的组织架构和权限管理模块,注意需要选择对应的登录页。
2.3 初始化配置
首次发布前配置导航,首次发布时将同步导航菜单到运行时;
首次发布时将设置默认的 admin 角色,以及 admin 账号,拥有所有菜单权限,后续用户账号和权限需要手动维护
初始默认账号:admin
密码:1234@qwer
2.4 功能点
- 登录页:输入账号密码即可登录(登录功能已内置,可根据需要调整样式、布局,或增加其他功能)
- 用户管理:这里指的是运行时用户;用户管理页面如下图所示,左侧为部门,右侧为该部门下的用户,可增删改查运行时,以及重置用户密码。
- 组织管理:可维护组织架构,以树表格形式展示,支持增删改查
- 角色管理:
- 角色列表,可增删改查角色,并选择角色可访问的资源,资源目前有菜单和按钮两种类型,在应用第一次发布时,会将导航数据同步到运行时数据库,作为菜单资源数据,运行时用户直接页面上配置角色可以访问哪些资源,即可生效。
后续再增加或改动应用的导航,需要手动同步,参考后文【导航权限】的说明。
关于按钮权限,参考后文【按钮权限】的说明。
- 资源列表,运行时可增删改查资源,配合编辑态的按钮组件的可见性配置,使用 hasButtonPermission()函数定义可见性,可以实现运行时配置角色有哪些按钮资源的权限,具体参考后文【按钮权限】的说明。
- 操作日志:列表查看各模块增删改数据的操作日志
2.5 导航权限
在首次发布前请检查一下导航是否配置完善,然后进行应用发布。
应用首次发布时将自动把应用的导航菜单数据同步到运行时的业务表【角色资源】中。发布完成后,运行时可以配置导航资源的权限给角色;
如下图所示,首次发布时,该应用配置的菜单导航同步到了运行时业务表中,运行时管理员在编辑角色时,可以直接勾选到这些导航资源。
但应用发布过一次之后,后续再发布需要自行同步导航数据到运行时业务表里,否则运行时配置资源权限是没有新增的导航的,只会有首次发布时的导航。
可以使用以下 SQL 快速取出导航数据,插入到发布库当中(根据实际情况替换表名、appid 等)
-- 1. 按应用区分
select id as gonggong_id,
is_deleted as gonggong_is_deleted,
creator as gonggong_creator,
last_modifier as gonggong_last_modifier,
create_time as gonggong_create_time,
last_modified_time as gonggong_last_modified_time,
1 as resource_type,
menu_name as resource_name,
id as resource_id,
id as resource_code,
navigation_sort as resource_sort,
parent_id as gonggong_parent_id
from "public".tb_manager_navigation where menu_type=2 AND "app_id" = {appId} AND "is_deleted" = 0
ORDER BY "navigation_sort" ;
-- 2. 导入发布库的
INSERT INTO public.dp$role_resource ("gonggong_id","gonggong_is_deleted","gonggong_creator","gonggong_last_modifier","gonggong_create_time","gonggong_last_modified_time","resource_type","resource_name","resource_id","resource_code","resource_sort","gonggong_parent_id") VALUES
(4659690032363712,0,1,1,'''2024-08-23 15:48:58.304''','''2024-08-23 15:49:04.596''',1,'测试页面',4659690032363712,4659690032363712,4,NULL);
2.6 按钮权限
按钮权限需要在编辑态先确定好按钮资源的编码,并在编辑态使用 hasButtonPermission()函数定义可见性,如下图所示,定义这个按钮的可见性,使用编码”test1“来表示这个按钮资源
发布后,可以手动写 SQL 将按钮资源添加到运行时的【角色资源】业务表中,也可以在页面上手动维护,如下图所示,注意编码一定要和上一步在编辑态配置的时候保持一致。
将按钮资源添加到运行时数据库中,就可以在编辑或新增角色时,给角色配置按钮权限了。