创建自定义角色(领域码转 HTTP:invalidKey→400、duplicate→409),成功后失效投影缓存。
角色 key(组织内唯一)。
人面可读名。
创建后的角色读模型。
删除自定义角色(notFound→404、systemRoleProtected→409),成功后失效投影缓存。
待删除的角色 key。
某角色的授权行(查无角色 → 404·供管理面回显勾选态)。
角色 key。
授权行读模型列表。
新增授权格(invalidConditions→400、roleNotFound→404、duplicate→409),成功后失效缓存。
目标角色 key。
授权行(subject/action/conditions)。
成员挂载角色存在性校验(§2.5·S3·供成员/邀请门面复用):role 须 ∈ 系统三 key ∪ 本租户
已存在的自定义角色 key——查库严格在库 fail-closed(class-validator 同步式不可查库,故收此处)。
系统三 key 恒可挂(租户尚未 lazy-ensure 时 findRole 会查无,故先走内置词汇短路)。
待校验的角色 key。
可挂载时为 true。
角色改名(notFound→404、systemRoleProtected→409),成功后失效投影缓存。
待改名的角色 key。
新的人面可读名。
撤权(roleNotFound→404、无匹配行→404),成功后失效投影缓存。
目标角色 key。
授权主体。
授权动作。
等值匹配条件;null = 整 subject 级行。
角色/授权管理门面应用服务(module-rbac-dynamic-roles §2.5/§2.6·S3)。
Remarks
职责边界(授权在我·事实入 DB):
requireActiveOrganizationId·fail-closed)与操作者(userId·审计 actorId,缺省 null);OrganizationRbacRepository(授权事实 SSOT 的唯一读写通道·写侧先过 domain 策略闸并同通道落审计行);PermissionInvalidator·热改即生效·读写分治端口)。管理职权本身由 controller
@Can(<动作>, 'Role' | 'RoleGrant')+ CASL 守卫裁决(授权面), 本服务不复权限判定(禁散点特判);自定义角色对成员的挂载存在性校验见isRoleAssignable。