feat: 增加商户消息加密密钥管理
This commit is contained in:
@@ -26,20 +26,22 @@ import (
|
||||
type sSysImTenant struct{}
|
||||
|
||||
const (
|
||||
tenantConfigAliyunModerationEnabled = "aliyun_moderation_enabled"
|
||||
tenantConfigLocalModerationEnabled = "local_moderation_enabled"
|
||||
tenantConfigRealnameReviewPolicy = "realname_review_policy"
|
||||
tenantConfigAliyunModerationEnabled = "aliyun_moderation_enabled"
|
||||
tenantConfigLocalModerationEnabled = "local_moderation_enabled"
|
||||
tenantConfigMessageEncryptionEnabled = "message_encryption_enabled"
|
||||
tenantConfigRealnameReviewPolicy = "realname_review_policy"
|
||||
)
|
||||
|
||||
type imTenantConfigModeration struct {
|
||||
Id int64 `json:"id" orm:"id"`
|
||||
TenantId int64 `json:"tenant_id" orm:"tenant_id"`
|
||||
MaxUsers uint64 `json:"max_users" orm:"max_users"`
|
||||
MaxGroups uint64 `json:"max_groups" orm:"max_groups"`
|
||||
MaxGroupMembers uint `json:"max_group_members" orm:"max_group_members"`
|
||||
AliyunModerationEnabled int `json:"aliyun_moderation_enabled" orm:"aliyun_moderation_enabled"`
|
||||
LocalModerationEnabled int `json:"local_moderation_enabled" orm:"local_moderation_enabled"`
|
||||
RealnameReviewPolicy int `json:"realname_review_policy" orm:"realname_review_policy"`
|
||||
Id int64 `json:"id" orm:"id"`
|
||||
TenantId int64 `json:"tenant_id" orm:"tenant_id"`
|
||||
MaxUsers uint64 `json:"max_users" orm:"max_users"`
|
||||
MaxGroups uint64 `json:"max_groups" orm:"max_groups"`
|
||||
MaxGroupMembers uint `json:"max_group_members" orm:"max_group_members"`
|
||||
AliyunModerationEnabled int `json:"aliyun_moderation_enabled" orm:"aliyun_moderation_enabled"`
|
||||
LocalModerationEnabled int `json:"local_moderation_enabled" orm:"local_moderation_enabled"`
|
||||
MessageEncryptionEnabled int `json:"message_encryption_enabled" orm:"message_encryption_enabled"`
|
||||
RealnameReviewPolicy int `json:"realname_review_policy" orm:"realname_review_policy"`
|
||||
}
|
||||
|
||||
func NewSysImTenant() *sSysImTenant {
|
||||
@@ -159,6 +161,7 @@ func (s *sSysImTenant) fillListConfig(ctx context.Context, list []*sysin.ImTenan
|
||||
item.MaxGroupMembers = conf.MaxGroupMembers
|
||||
item.AliyunModerationEnabled = conf.AliyunModerationEnabled
|
||||
item.LocalModerationEnabled = conf.LocalModerationEnabled
|
||||
item.MessageEncryptionEnabled = conf.MessageEncryptionEnabled
|
||||
item.RealnameReviewPolicy = conf.RealnameReviewPolicy
|
||||
}
|
||||
item.DbDsnConfigured = dsnMap[item.Id] != ""
|
||||
@@ -251,6 +254,18 @@ func (s *sSysImTenant) checkCodeUnique(ctx context.Context, id int64, code strin
|
||||
}
|
||||
|
||||
func (s *sSysImTenant) saveConfig(ctx context.Context, in *sysin.ImTenantEditInp, userId int64) (err error) {
|
||||
if in.MessageEncryptionEnabled == 1 {
|
||||
count, queryErr := imtenant.RegistryDB().Model(imMessageEncryptionKeyTable).Safe().Ctx(ctx).
|
||||
Where("tenant_id", in.Id).
|
||||
Where("status", consts.ImMessageKeyStatusActive).
|
||||
Count()
|
||||
if queryErr != nil {
|
||||
return gerror.Wrap(queryErr, "检查商户消息密钥失败")
|
||||
}
|
||||
if count == 0 {
|
||||
return gerror.New("启用消息加密前必须先在消息密钥管理中初始化有效密钥")
|
||||
}
|
||||
}
|
||||
var conf *entity.ImTenantConfig
|
||||
if err = s.configModel(ctx).
|
||||
Where(dao.ImTenantConfig.Columns().TenantId, in.Id).
|
||||
@@ -264,6 +279,7 @@ func (s *sSysImTenant) saveConfig(ctx context.Context, in *sysin.ImTenantEditInp
|
||||
dao.ImTenantConfig.Columns().MaxGroupMembers: in.MaxGroupMembers,
|
||||
tenantConfigAliyunModerationEnabled: in.AliyunModerationEnabled,
|
||||
tenantConfigLocalModerationEnabled: in.LocalModerationEnabled,
|
||||
tenantConfigMessageEncryptionEnabled: in.MessageEncryptionEnabled,
|
||||
tenantConfigRealnameReviewPolicy: in.RealnameReviewPolicy,
|
||||
}
|
||||
if conf != nil && conf.Id > 0 {
|
||||
@@ -275,6 +291,7 @@ func (s *sSysImTenant) saveConfig(ctx context.Context, in *sysin.ImTenantEditInp
|
||||
dao.ImTenantConfig.Columns().MaxGroupMembers,
|
||||
tenantConfigAliyunModerationEnabled,
|
||||
tenantConfigLocalModerationEnabled,
|
||||
tenantConfigMessageEncryptionEnabled,
|
||||
tenantConfigRealnameReviewPolicy,
|
||||
dao.ImTenantConfig.Columns().UpdatedBy,
|
||||
).
|
||||
@@ -295,6 +312,7 @@ func (s *sSysImTenant) saveConfig(ctx context.Context, in *sysin.ImTenantEditInp
|
||||
dao.ImTenantConfig.Columns().MaxGroupMembers,
|
||||
tenantConfigAliyunModerationEnabled,
|
||||
tenantConfigLocalModerationEnabled,
|
||||
tenantConfigMessageEncryptionEnabled,
|
||||
tenantConfigRealnameReviewPolicy,
|
||||
dao.ImTenantConfig.Columns().CreatedBy,
|
||||
dao.ImTenantConfig.Columns().UpdatedBy,
|
||||
@@ -331,6 +349,7 @@ func (s *sSysImTenant) View(ctx context.Context, in *sysin.ImTenantViewInp) (res
|
||||
res.MaxGroupMembers = conf.MaxGroupMembers
|
||||
res.AliyunModerationEnabled = conf.AliyunModerationEnabled
|
||||
res.LocalModerationEnabled = conf.LocalModerationEnabled
|
||||
res.MessageEncryptionEnabled = conf.MessageEncryptionEnabled
|
||||
res.RealnameReviewPolicy = conf.RealnameReviewPolicy
|
||||
}
|
||||
res.DbDsnConfigured = res.DbDsn != ""
|
||||
|
||||
Reference in New Issue
Block a user