kopia lustrzana https://github.com/reiver/greatape
35 wiersze
601 B
Go
35 wiersze
601 B
Go
package validators
|
|
|
|
import (
|
|
"unicode"
|
|
)
|
|
|
|
func PasswordIsValid(password string) bool {
|
|
var (
|
|
hasMinLen = false
|
|
hasUpper = false
|
|
hasLower = false
|
|
hasNumber = false
|
|
hasSpecial = false
|
|
)
|
|
|
|
if len(password) >= 7 {
|
|
hasMinLen = true
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
return hasMinLen && hasUpper && hasLower && hasNumber && hasSpecial
|
|
}
|