mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-12-19 22:09:03 +08:00
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package validator
|
|
|
|
import (
|
|
"unicode"
|
|
|
|
"github.com/1Panel-dev/1Panel/agent/global"
|
|
"github.com/1Panel-dev/1Panel/agent/utils/re"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
func Init() {
|
|
validator := validator.New()
|
|
if err := validator.RegisterValidation("name", checkNamePattern); err != nil {
|
|
panic(err)
|
|
}
|
|
if err := validator.RegisterValidation("ip", checkIpPattern); err != nil {
|
|
panic(err)
|
|
}
|
|
if err := validator.RegisterValidation("password", checkPasswordPattern); err != nil {
|
|
panic(err)
|
|
}
|
|
global.VALID = validator
|
|
}
|
|
|
|
func checkNamePattern(fl validator.FieldLevel) bool {
|
|
value := fl.Field().String()
|
|
return re.GetRegex(re.ValidatorNamePattern).MatchString(value)
|
|
}
|
|
|
|
func checkIpPattern(fl validator.FieldLevel) bool {
|
|
value := fl.Field().String()
|
|
return re.GetRegex(re.ValidatorIPPattern).MatchString(value)
|
|
}
|
|
|
|
func checkPasswordPattern(fl validator.FieldLevel) bool {
|
|
value := fl.Field().String()
|
|
if len(value) < 8 || len(value) > 30 {
|
|
return false
|
|
}
|
|
|
|
hasNum := false
|
|
hasLetter := false
|
|
for _, r := range value {
|
|
if unicode.IsLetter(r) && !hasLetter {
|
|
hasLetter = true
|
|
}
|
|
if unicode.IsNumber(r) && !hasNum {
|
|
hasNum = true
|
|
}
|
|
if hasLetter && hasNum {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|