package utils import ( "fmt" "unicode" ) // ValidatePasswordStrength validates password strength according to security rules // T0197: Validates password with minimum 8 characters, uppercase, lowercase, number, and special character func ValidatePasswordStrength(password string) error { if len(password) < 8 { return fmt.Errorf("password must be at least 8 characters") } if len(password) > 128 { return fmt.Errorf("password must be less than 128 characters") } var hasUpper, hasLower, hasNumber, hasSpecial bool for _, char := range password { switch { case unicode.IsUpper(char): hasUpper = true case unicode.IsLower(char): hasLower = true case unicode.IsNumber(char): hasNumber = true case unicode.IsPunct(char) || unicode.IsSymbol(char): hasSpecial = true } } if !hasUpper { return fmt.Errorf("password must contain at least one uppercase letter") } if !hasLower { return fmt.Errorf("password must contain at least one lowercase letter") } if !hasNumber { return fmt.Errorf("password must contain at least one number") } if !hasSpecial { return fmt.Errorf("password must contain at least one special character") } return nil }