From cd3190d80fb13858521e88eb44ef6965c1b8100e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Mon, 13 Oct 2025 18:49:45 +0800 Subject: [PATCH] fix(keystone): distribute permissions when the organization changes (#23502) --- pkg/cloudcommon/db/standalone_anon.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/cloudcommon/db/standalone_anon.go b/pkg/cloudcommon/db/standalone_anon.go index 57846110ab..95da5038d9 100644 --- a/pkg/cloudcommon/db/standalone_anon.go +++ b/pkg/cloudcommon/db/standalone_anon.go @@ -16,6 +16,7 @@ package db import ( "context" + "crypto/md5" "database/sql" "fmt" "strings" @@ -56,6 +57,9 @@ type SStandaloneAnonResourceBase struct { // 是否是模拟资源, 部分从公有云上同步的资源并不真实存在, 例如宿主机 // list 接口默认不会返回这类资源,除非显示指定 is_emulate=true 过滤参数 IsEmulated bool `nullable:"false" default:"false" list:"admin" create:"admin_optional" json:"is_emulated"` + + // 用以组织架构变更通知其他服务权限变更 + OrgNodeMd5 string `width:"32" charset:"ascii" nullable:"true"` } func (model *SStandaloneAnonResourceBase) BeforeInsert() { @@ -369,6 +373,11 @@ func (model *SStandaloneAnonResourceBase) SetOrganizationMetadataAll(ctx context return errors.Wrap(err, "SetAllOrganization") } } + Update(model, func() error { + model.OrgNodeMd5 = fmt.Sprintf("%x", md5.Sum([]byte(jsonutils.Marshal(meta).String()))) + return nil + }) + // 避免加入组织架构后,项目所在的层级会移除此项目 //{ // userTags := make(map[string]interface{})