feat: 将安全策略模板化,新建商户时自动复制初始策略

This commit is contained in:
Austin
2026-09-22 18:32:08 +08:00
parent 9a9e30f94e
commit dc3c45cd53
17 changed files with 1172 additions and 795 deletions
@@ -78,16 +78,6 @@ func TestImSecurityPolicySaveFilterForcesEveryFriendEntryOff(t *testing.T) {
}
}
func TestImSecurityPolicyPublishFilter(t *testing.T) {
ctx := context.Background()
if err := (&ImSecurityPolicyPublishInp{Id: 1, Reason: " "}).Filter(ctx); err == nil {
t.Fatal("空发布原因应被拒绝")
}
if err := (&ImSecurityPolicyPublishInp{Id: 1, Reason: "管理员发布"}).Filter(ctx); err != nil {
t.Fatalf("合法发布参数不应报错: %v", err)
}
}
func TestImSecurityIPRuleEditFilter(t *testing.T) {
ctx := context.Background()
valid := &ImSecurityIPRuleEditInp{
@@ -255,25 +255,6 @@ func normalizeLoginRateLimit(value *gjson.Json) (*gjson.Json, error) {
return gjson.New(map[string]any{"enabled": true, "password_max_attempts": maxAttempts, "lock_seconds": lockSeconds, "window_seconds": windowSeconds}), nil
}
type ImSecurityPolicyPublishInp struct {
Id int64 `json:"id" v:"required|min:1#策略ID不能为空|策略ID不合法"`
Reason string `json:"reason" v:"required#发布原因不能为空"`
}
func (in *ImSecurityPolicyPublishInp) Filter(ctx context.Context) error {
in.Reason = strings.TrimSpace(in.Reason)
if in.Id <= 0 {
return gerror.New("策略ID不合法")
}
if in.Reason == "" {
return gerror.New("发布原因不能为空")
}
if len([]rune(in.Reason)) > 500 {
return gerror.New("发布原因不能超过500个字符")
}
return nil
}
type ImSecurityPolicyRestoreInp struct {
TenantId int64 `json:"tenantId"`
Reason string `json:"reason" v:"required#恢复原因不能为空"`