in pkg/validate/matcher.go [25:49]
func (p *PasswordChecker) MatchString(s string) bool {
var (
hasValidLen = false
hasUpper = false
hasLower = false
hasNumber = false
hasSpecial = false
)
if len(s) >= 8 && len(s) <= 32 {
hasValidLen = true
}
for _, char := range s {
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
}
}
return hasValidLen && hasUpper && hasLower && hasNumber && hasSpecial
}