fix: align admin behavior and Kratos integrations

This commit is contained in:
2026-08-14 14:14:51 +08:00
parent 8c4c6ba661
commit e0b0e1d8c8
123 changed files with 4334 additions and 1877 deletions
+3 -35
View File
@@ -2,7 +2,6 @@ package service
import (
"context"
"errors"
"kra/internal/biz"
"kra/internal/service/dto"
@@ -19,7 +18,7 @@ func (s *SettingsService) CurrentSecurity(ctx context.Context) (*biz.SecurityCon
return &copy, nil
}
s.securityMu.RUnlock()
value, err := s.Repo().SecurityConfig(ctx)
value, err := s.uc.SecurityConfig(ctx)
if err != nil {
return nil, err
}
@@ -37,10 +36,7 @@ func (s *SettingsService) Security(ctx context.Context) (map[string]any, error)
return securityDTO(value), nil
}
func (s *SettingsService) SaveSecurity(ctx context.Context, value *biz.SecurityConfig) (map[string]any, error) {
if value.KeyLong < 1 || value.ImgWidth < 1 || value.ImgHeight < 1 || value.PwdMinLength < 1 || value.LimitWindow < 1 || value.LimitCount < 1 || value.LockThreshold < 1 || value.LockDuration < 1 || value.PwdExpireDays < 1 {
return nil, errors.New("安全配置数值必须大于0")
}
if err := s.Repo().SaveSecurityConfig(ctx, value); err != nil {
if err := s.uc.UpdateSecurity(ctx, value); err != nil {
return nil, err
}
s.securityMu.Lock()
@@ -66,33 +62,5 @@ func (s *SettingsService) ValidatePassword(ctx context.Context, password string)
if err != nil {
return err
}
if len([]rune(password)) < cfg.PwdMinLength {
return errors.New("密码长度不足")
}
hasUpper, hasLower, hasDigit, hasSpecial := false, false, false, false
for _, ch := range password {
switch {
case ch >= 'A' && ch <= 'Z':
hasUpper = true
case ch >= 'a' && ch <= 'z':
hasLower = true
case ch >= '0' && ch <= '9':
hasDigit = true
default:
hasSpecial = true
}
}
if cfg.PwdRequireUpper && !hasUpper {
return errors.New("密码必须包含大写字母")
}
if cfg.PwdRequireLower && !hasLower {
return errors.New("密码必须包含小写字母")
}
if cfg.PwdRequireDigit && !hasDigit {
return errors.New("密码必须包含数字")
}
if cfg.PwdRequireSpecial && !hasSpecial {
return errors.New("密码必须包含特殊字符")
}
return nil
return s.uc.ValidatePassword(cfg, password)
}