mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-10-16 14:57:05 +08:00
feat: first-commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"unicode"
|
||||
|
||||
"github.com/1Panel-dev/1Panel/global"
|
||||
|
||||
"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()
|
||||
result, err := regexp.MatchString("^[a-zA-Z\u4e00-\u9fa5]{1}[a-zA-Z0-9_\u4e00-\u9fa5]{0,30}$", value)
|
||||
if err != nil {
|
||||
global.LOG.Errorf("regexp matchString failed, %v", err)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func checkIpPattern(fl validator.FieldLevel) bool {
|
||||
value := fl.Field().String()
|
||||
result, err := regexp.MatchString(`^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$`, value)
|
||||
if err != nil {
|
||||
global.LOG.Errorf("regexp check ip matchString failed, %v", err)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user