2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 03:07:20 +08:00

feat: 同步验证器修改

This commit is contained in:
耗子
2024-12-16 02:41:32 +08:00
parent a64660d0cb
commit a3bd4c5bcc
26 changed files with 116 additions and 93 deletions

View File

@@ -1,6 +1,6 @@
package benchmark
type Test struct {
Name string `json:"name" validate:"required,oneof=image machine compile encryption compression physics json memory disk"`
Name string `json:"name" validate:"required|in:image,machine,compile,encryption,compression,physics,json,memory,disk"`
Multi bool `json:"multi"`
}

View File

@@ -5,5 +5,5 @@ type UpdateConfig struct {
}
type SetRootPassword struct {
Password string `form:"password" json:"password" validate:"required,password"`
Password string `form:"password" json:"password" validate:"required|password"`
}

View File

@@ -5,5 +5,5 @@ type UpdateConfig struct {
}
type UpdatePort struct {
Port uint `form:"port" json:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `form:"port" json:"port" validate:"required|number|min:1|max:65535"`
}

View File

@@ -2,7 +2,7 @@ package pureftpd
type Create struct {
Username string `form:"username" json:"username" validate:"required"`
Password string `form:"password" json:"password" validate:"required,password"`
Password string `form:"password" json:"password" validate:"required|password"`
Path string `form:"path" json:"path" validate:"required"`
}
@@ -12,9 +12,9 @@ type Delete struct {
type ChangePassword struct {
Username string `form:"username" json:"username" validate:"required"`
Password string `form:"password" json:"password" validate:"required,password"`
Password string `form:"password" json:"password" validate:"required|password"`
}
type UpdatePort struct {
Port uint `form:"port" json:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `form:"port" json:"port" validate:"required|number|min:1|max:65535"`
}

View File

@@ -18,5 +18,5 @@ type CreateProcess struct {
User string `form:"user" json:"user" validate:"required"`
Path string `form:"path" json:"path" validate:"required"`
Command string `form:"command" json:"command" validate:"required"`
Num int `form:"num" json:"num" validate:"required,gte=1"`
Num int `form:"num" json:"num" validate:"required|min:1"`
}

View File

@@ -8,7 +8,7 @@ type DNS struct {
}
type SWAP struct {
Size int64 `form:"size" json:"size" validate:"gte=0"`
Size int64 `form:"size" json:"size" validate:"min:0"`
}
type Timezone struct {
@@ -20,7 +20,7 @@ type Time struct {
}
type Hostname struct {
Hostname string `form:"hostname" json:"hostname" validate:"required,regex=^[a-zA-Z0-9][a-zA-Z0-9-]{061}[a-zA-Z0-9]$"`
Hostname string `form:"hostname" json:"hostname" validate:"required|regex:^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$"`
}
type Hosts struct {
@@ -28,5 +28,5 @@ type Hosts struct {
}
type Password struct {
Password string `form:"password" json:"password" validate:"required,password"`
Password string `form:"password" json:"password" validate:"required|password"`
}

View File

@@ -1,7 +1,7 @@
package request
type App struct {
Slug string `json:"slug" form:"slug" validate:"required,not_exists=apps slug"`
Slug string `json:"slug" form:"slug" validate:"required|not_exists:apps,slug"`
Channel string `json:"channel" form:"channel" validate:"required"`
}
@@ -10,6 +10,6 @@ type AppSlug struct {
}
type AppUpdateShow struct {
Slug string `json:"slug" form:"slug" validate:"required,exists=apps slug"`
Slug string `json:"slug" form:"slug" validate:"required|exists:apps,slug"`
Show bool `json:"show" form:"show"`
}

View File

@@ -1,22 +1,22 @@
package request
type BackupList struct {
Type string `json:"type" form:"type" validate:"required,oneof=path website mysql postgres redis panel"`
Type string `json:"type" form:"type" validate:"required|in:path,website,mysql,postgres,redis,panel"`
}
type BackupCreate struct {
Type string `json:"type" form:"type" validate:"required,oneof=website mysql postgres redis panel"`
Type string `json:"type" form:"type" validate:"required|in:website,mysql,postgres,redis,panel"`
Target string `json:"target" form:"target" validate:"required"`
Path string `json:"path" form:"path"`
}
type BackupFile struct {
Type string `json:"type" form:"type" validate:"required,oneof=website mysql postgres redis panel"`
Type string `json:"type" form:"type" validate:"required|in:website,mysql,postgres,redis,panel"`
File string `json:"file" form:"file" validate:"required"`
}
type BackupRestore struct {
Type string `json:"type" form:"type" validate:"required,oneof=website mysql postgres redis panel"`
Type string `json:"type" form:"type" validate:"required|in:website,mysql,postgres,redis,panel"`
File string `json:"file" form:"file" validate:"required"`
Target string `json:"target" form:"target" validate:"required"`
}

View File

@@ -6,8 +6,8 @@ type CertUpload struct {
}
type CertCreate struct {
Type string `form:"type" json:"type" validate:"required,oneof=P256 P384 2048 3072 4096"`
Domains []string `form:"domains" json:"domains" validate:"min=1,dive,required"`
Type string `form:"type" json:"type" validate:"required|in:P256,P384,2048,3072,4096"`
Domains []string `form:"domains" json:"domains" validate:"required"`
AutoRenew bool `form:"auto_renew" json:"auto_renew"`
AccountID uint `form:"account_id" json:"account_id"`
DNSID uint `form:"dns_id" json:"dns_id"`
@@ -15,9 +15,9 @@ type CertCreate struct {
}
type CertUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=certs id"`
Type string `form:"type" json:"type" validate:"required,oneof=upload P256 P384 2048 3072 4096"`
Domains []string `form:"domains" json:"domains" validate:"min=1,dive,required"`
ID uint `form:"id" json:"id" validate:"required|exists:certs,id"`
Type string `form:"type" json:"type" validate:"required|in:P256,P384,2048,3072,4096"`
Domains []string `form:"domains" json:"domains" validate:"required"`
Cert string `form:"cert" json:"cert"`
Key string `form:"key" json:"key"`
AutoRenew bool `form:"auto_renew" json:"auto_renew"`
@@ -27,6 +27,6 @@ type CertUpdate struct {
}
type CertDeploy struct {
ID uint `form:"id" json:"id" validate:"required,exists=certs id"`
ID uint `form:"id" json:"id" validate:"required,exists:certs,id"`
WebsiteID uint `form:"website_id" json:"website_id" validate:"required"`
}

View File

@@ -1,18 +1,18 @@
package request
type CertAccountCreate struct {
CA string `form:"ca" json:"ca" validate:"required,oneof=googlecn google letsencrypt buypass zerossl sslcom"`
CA string `form:"ca" json:"ca" validate:"required|in:googlecn,google,letsencrypt,buypass,zerossl,sslcom"`
Email string `form:"email" json:"email" validate:"required"`
Kid string `form:"kid" json:"kid"`
HmacEncoded string `form:"hmac_encoded" json:"hmac_encoded"`
KeyType string `form:"key_type" json:"key_type" validate:"required,oneof=P256 P384 2048 3072 4096"`
KeyType string `form:"key_type" json:"key_type" validate:"required|in:P256,P384,2048,3072,4096"`
}
type CertAccountUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=cert_accounts id"`
CA string `form:"ca" json:"ca" validate:"required,oneof=googlecn google letsencrypt buypass zerossl sslcom"`
ID uint `form:"id" json:"id" validate:"required|exists:cert_accounts,id"`
CA string `form:"ca" json:"ca" validate:"required|in:googlecn,google,letsencrypt,buypass,zerossl,sslcom"`
Email string `form:"email" json:"email" validate:"required"`
Kid string `form:"kid" json:"kid"`
HmacEncoded string `form:"hmac_encoded" json:"hmac_encoded"`
KeyType string `form:"key_type" json:"key_type" validate:"required,oneof=P256 P384 2048 3072 4096"`
KeyType string `form:"key_type" json:"key_type" validate:"required|in:P256,P384,2048,3072,4096"`
}

View File

@@ -9,7 +9,7 @@ type CertDNSCreate struct {
}
type CertDNSUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=cert_dns id"`
ID uint `form:"id" json:"id" validate:"required|exists:cert_dns,id"`
Type string `form:"type" json:"type" validate:"required"`
Name string `form:"name" json:"name" validate:"required"`
Data acme.DNSParam `form:"data" json:"data"`

View File

@@ -1,5 +1,5 @@
package request
type ID struct {
ID uint `json:"id" form:"id" query:"id" validate:"required,number"`
ID uint `json:"id" form:"id" query:"id" validate:"required|number"`
}

View File

@@ -1,9 +1,9 @@
package request
type CronCreate struct {
Name string `form:"name" json:"name" validate:"required,not_exists=crons name"`
Name string `form:"name" json:"name" validate:"required|not_exists:crons,name"`
Type string `form:"type" json:"type" validate:"required"`
Time string `form:"time" json:"time" validate:"required,cron"`
Time string `form:"time" json:"time" validate:"required|cron"`
Script string `form:"script" json:"script"`
BackupType string `form:"backup_type" json:"backup_type" validate:"required"`
BackupPath string `form:"backup_path" json:"backup_path"`
@@ -12,13 +12,13 @@ type CronCreate struct {
}
type CronUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=crons id"`
ID uint `form:"id" json:"id" validate:"required|exists:crons,id"`
Name string `form:"name" json:"name" validate:"required"`
Time string `form:"time" json:"time" validate:"required,cron"`
Time string `form:"time" json:"time" validate:"required|cron"`
Script string `form:"script" json:"script" validate:"required"`
}
type CronStatus struct {
ID uint `form:"id" json:"id" validate:"required,exists=crons id"`
ID uint `form:"id" json:"id" validate:"required|exists:crons,id"`
Status bool `form:"status" json:"status"`
}

View File

@@ -1,22 +1,22 @@
package request
type DatabaseCreate struct {
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"`
Name string `form:"name" json:"name" validate:"required"`
CreateUser bool `form:"create_user" json:"create_user"`
Username string `form:"username" json:"username" validate:"required_if=CreateUser true"`
Password string `form:"password" json:"password" validate:"required_if=CreateUser true"`
Username string `form:"username" json:"username" validate:"required_if:CreateUser,true"`
Password string `form:"password" json:"password" validate:"required_if:CreateUser,true"`
Host string `form:"host" json:"host"`
Comment string `form:"comment" json:"comment"`
}
type DatabaseDelete struct {
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"`
Name string `form:"name" json:"name" validate:"required"`
}
type DatabaseComment struct {
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"`
Name string `form:"name" json:"name" validate:"required"`
Comment string `form:"comment" json:"comment"`
}

View File

@@ -1,26 +1,26 @@
package request
type DatabaseServerCreate struct {
Name string `form:"name" json:"name" validate:"required,not_exists=database_servers name"`
Type string `form:"type" json:"type" validate:"required,oneof=mysql postgresql redis"`
Name string `form:"name" json:"name" validate:"required|not_exists:database_servers,name"`
Type string `form:"type" json:"type" validate:"required|in:mysql,postgresql,redis"`
Host string `form:"host" json:"host" validate:"required"`
Port uint `form:"port" json:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `form:"port" json:"port" validate:"required|number|min:1|max:65535"`
Username string `form:"username" json:"username"`
Password string `form:"password" json:"password"`
Remark string `form:"remark" json:"remark"`
}
type DatabaseServerUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=database_servers id"`
ID uint `form:"id" json:"id" validate:"required|exists:database_servers,id"`
Name string `form:"name" json:"name" validate:"required"`
Host string `form:"host" json:"host" validate:"required"`
Port uint `form:"port" json:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `form:"port" json:"port" validate:"required|number|min:1|max:65535"`
Username string `form:"username" json:"username"`
Password string `form:"password" json:"password"`
Remark string `form:"remark" json:"remark"`
}
type DatabaseServerUpdateRemark struct {
ID uint `form:"id" json:"id" validate:"required,exists=database_servers id"`
ID uint `form:"id" json:"id" validate:"required|exists:database_servers,id"`
Remark string `form:"remark" json:"remark"`
}

View File

@@ -1,7 +1,7 @@
package request
type DatabaseUserCreate struct {
ServerID uint `form:"server_id" json:"server_id" validate:"required,exists=database_servers id"`
ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"`
Username string `form:"username" json:"username" validate:"required"`
Password string `form:"password" json:"password" validate:"required"`
Host string `form:"host" json:"host"`
@@ -10,13 +10,13 @@ type DatabaseUserCreate struct {
}
type DatabaseUserUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=database_users id"`
ID uint `form:"id" json:"id" validate:"required|exists:database_users,id"`
Password string `form:"password" json:"password"`
Privileges []string `form:"privileges" json:"privileges"`
Remark string `form:"remark" json:"remark"`
}
type DatabaseUserUpdateRemark struct {
ID uint `form:"id" json:"id" validate:"required,exists=database_users id"`
ID uint `form:"id" json:"id" validate:"required|exists:database_users,id"`
Remark string `form:"remark" json:"remark"`
}

View File

@@ -45,7 +45,7 @@ type FilePermission struct {
type FileCompress struct {
Dir string `form:"dir" json:"dir" validate:"required"`
Paths []string `form:"paths" json:"paths" validate:"min=1,dive,required"`
Paths []string `form:"paths" json:"paths" validate:"required"`
File string `form:"file" json:"file" validate:"required"`
}

View File

@@ -6,26 +6,26 @@ type FirewallStatus struct {
type FirewallRule struct {
Type string `json:"type"`
Family string `json:"family" validate:"required,oneof=ipv4 ipv6"`
PortStart uint `json:"port_start" validate:"required,gte=1,lte=65535"`
PortEnd uint `json:"port_end" validate:"required,gte=1,lte=65535"`
Protocol string `json:"protocol" validate:"min=1,oneof=tcp udp tcp/udp"`
Family string `json:"family" validate:"required|in:ipv4,ipv6"`
PortStart uint `json:"port_start" validate:"required|min:1|max:65535"`
PortEnd uint `json:"port_end" validate:"required|min:1|max:65535"`
Protocol string `json:"protocol" validate:"required|in:tcp,udp,tcp/udp"`
Address string `json:"address"`
Strategy string `json:"strategy" validate:"required,oneof=accept drop reject"`
Strategy string `json:"strategy" validate:"required|in:accept,drop,reject"`
Direction string `json:"direction"`
}
type FirewallIPRule struct {
Family string `json:"family" validate:"required,oneof=ipv4 ipv6"`
Protocol string `json:"protocol" validate:"min=1,oneof=tcp udp tcp/udp"`
Family string `json:"family" validate:"required|in:ipv4,ipv6"`
Protocol string `json:"protocol" validate:"required|in:tcp,udp,tcp/udp"`
Address string `json:"address"`
Strategy string `json:"strategy" validate:"required,oneof=accept drop reject"`
Strategy string `json:"strategy" validate:"required|in:accept,drop,reject"`
Direction string `json:"direction"`
}
type FirewallForward struct {
Protocol string `json:"protocol" validate:"min=1,oneof=tcp udp tcp/udp"`
Port uint `json:"port" validate:"required,gte=1,lte=65535"`
Protocol string `json:"protocol" validate:"required|in:tcp,udp,tcp/udp"`
Port uint `json:"port" validate:"required|min:1|max:65535"`
TargetIP string `json:"target_ip" validate:"required"`
TargetPort uint `json:"target_port" validate:"required,gte=1,lte=65535"`
TargetPort uint `json:"target_port" validate:"required|min:1|max:65535"`
}

View File

@@ -5,8 +5,8 @@ import (
)
type Paginate struct {
Page uint `json:"page" form:"page" query:"page" validate:"required,number,gte=1"`
Limit uint `json:"limit" form:"limit" query:"limit" validate:"required,number,gte=1,lte=10000"`
Page uint `json:"page" form:"page" query:"page" validate:"required|number|min:1"`
Limit uint `json:"limit" form:"limit" query:"limit" validate:"required|number|min:1|max:10000"`
}
func (r *Paginate) Messages(_ *http.Request) map[string]string {

View File

@@ -1,7 +1,7 @@
package request
type SafeUpdateSSH struct {
Port uint `json:"port" form:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `json:"port" form:"port" validate:"number|min:1|max:65535"`
Status bool `json:"status" form:"status"`
}

View File

@@ -10,7 +10,7 @@ type PanelSetting struct {
Username string `json:"username" validate:"required"`
Password string `json:"password" validate:"password"`
Email string `json:"email" validate:"required"`
Port uint `json:"port" validate:"required,number,gte=1,lte=65535"`
Port uint `json:"port" validate:"number|min:1|max:65535"`
HTTPS bool `json:"https"`
Cert string `json:"cert" validate:"required"`
Key string `json:"key" validate:"required"`

View File

@@ -3,22 +3,22 @@ package request
type SSHCreate struct {
Name string `json:"name" form:"name"`
Host string `json:"host" form:"host" validate:"required"`
Port uint `json:"port" form:"port" validate:"required,number,gte=1,lte=65535"`
AuthMethod string `json:"auth_method" form:"auth_method" validate:"required,oneof=password publickey"`
User string `json:"user" form:"user" validate:"required_if=AuthMethod password"`
Password string `json:"password" form:"password" validate:"required_if=AuthMethod password"`
Key string `json:"key" form:"key" validate:"required_if=AuthMethod publickey"`
Port uint `json:"port" form:"port" validate:"number|min:1|max:65535"`
AuthMethod string `json:"auth_method" form:"auth_method" validate:"required|in:password,publickey"`
User string `json:"user" form:"user" validate:"required_if:AuthMethod,password"`
Password string `json:"password" form:"password" validate:"required_if:AuthMethod,password"`
Key string `json:"key" form:"key" validate:"required_if:AuthMethod,publickey"`
Remark string `json:"remark" form:"remark"`
}
type SSHUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=sshes id"`
ID uint `form:"id" json:"id" validate:"required|exists:sshes,id"`
Name string `json:"name" form:"name"`
Host string `json:"host" form:"host" validate:"required"`
Port uint `json:"port" form:"port" validate:"required,number,gte=1,lte=65535"`
AuthMethod string `json:"auth_method" form:"auth_method" validate:"required,oneof=password publickey"`
User string `json:"user" form:"user" validate:"required_if=AuthMethod password"`
Password string `json:"password" form:"password" validate:"required_if=AuthMethod password"`
Key string `json:"key" form:"key" validate:"required_if=AuthMethod publickey"`
Port uint `json:"port" form:"port" validate:"number|min:1|max:65535"`
AuthMethod string `json:"auth_method" form:"auth_method" validate:"required|in:password,publickey"`
User string `json:"user" form:"user" validate:"required_if:AuthMethod,password"`
Password string `json:"password" form:"password" validate:"required_if:AuthMethod,password"`
Key string `json:"key" form:"key" validate:"required_if:AuthMethod,publickey"`
Remark string `json:"remark" form:"remark"`
}

View File

@@ -8,50 +8,50 @@ type WebsiteDefaultConfig struct {
}
type WebsiteCreate struct {
Name string `form:"name" json:"name" validate:"required,not_exists=websites name"`
Listens []string `form:"listens" json:"listens" validate:"min=1,dive,required"`
Domains []string `form:"domains" json:"domains" validate:"min=1,dive,required"`
Name string `form:"name" json:"name" validate:"required|not_exists:websites,name"`
Listens []string `form:"listens" json:"listens" validate:"required"`
Domains []string `form:"domains" json:"domains" validate:"required"`
Path string `form:"path" json:"path"`
PHP int `form:"php" json:"php" validate:"number,gte=0"`
PHP int `form:"php" json:"php"`
DB bool `form:"db" json:"db"`
DBType string `form:"db_type" json:"db_type"`
DBName string `form:"db_name" json:"db_name"`
DBUser string `form:"db_user" json:"db_user"`
DBPassword string `form:"db_password" json:"db_password" validate:"password"`
DBType string `form:"db_type" json:"db_type" validate:"required_if:DB,true"`
DBName string `form:"db_name" json:"db_name" validate:"required_if:DB,true"`
DBUser string `form:"db_user" json:"db_user" validate:"required_if:DB,true"`
DBPassword string `form:"db_password" json:"db_password" validate:"required_if:DB,true"`
Remark string `form:"remark" json:"remark"`
}
type WebsiteDelete struct {
ID uint `form:"id" json:"id" validate:"required,exists=websites id"`
ID uint `form:"id" json:"id" validate:"required|exists:websites,id"`
Path bool `form:"path" json:"path"`
DB bool `form:"db" json:"db"`
}
type WebsiteUpdate struct {
ID uint `form:"id" json:"id" validate:"required,exists=websites id"`
Listens []types.WebsiteListen `form:"listens" json:"listens" validate:"min=1"`
Domains []string `form:"domains" json:"domains" validate:"min=1,dive,required"`
ID uint `form:"id" json:"id" validate:"required|exists:websites,id"`
Listens []types.WebsiteListen `form:"listens" json:"listens" validate:"required"`
Domains []string `form:"domains" json:"domains" validate:"required"`
HTTPS bool `form:"https" json:"https"`
OCSP bool `form:"ocsp" json:"ocsp"`
HSTS bool `form:"hsts" json:"hsts"`
HTTPRedirect bool `form:"http_redirect" json:"http_redirect"`
OpenBasedir bool `form:"open_basedir" json:"open_basedir"`
Index []string `form:"index" json:"index" validate:"min=1,dive,required"`
Index []string `form:"index" json:"index" validate:"required"`
Path string `form:"path" json:"path" validate:"required"` // 网站目录
Root string `form:"root" json:"root" validate:"required"` // 运行目录
Raw string `form:"raw" json:"raw"`
Rewrite string `form:"rewrite" json:"rewrite"`
PHP int `form:"php" json:"php"`
SSLCertificate string `form:"ssl_certificate" json:"ssl_certificate" validate:"required_if=HTTPS true"`
SSLCertificateKey string `form:"ssl_certificate_key" json:"ssl_certificate_key" validate:"required_if=HTTPS true"`
SSLCertificate string `form:"ssl_certificate" json:"ssl_certificate" validate:"required_if:HTTPS,true"`
SSLCertificateKey string `form:"ssl_certificate_key" json:"ssl_certificate_key" validate:"required_if:HTTPS,true"`
}
type WebsiteUpdateRemark struct {
ID uint `form:"id" json:"id" validate:"required,exists=websites id"`
ID uint `form:"id" json:"id" validate:"required|exists:websites,id"`
Remark string `form:"remark" json:"remark"`
}
type WebsiteUpdateStatus struct {
ID uint `json:"id" form:"id" validate:"required,exists=websites id"`
ID uint `json:"id" form:"id" validate:"required|exists:websites,id"`
Status bool `json:"status" form:"status"`
}

View File

@@ -1 +0,0 @@
package request

View File

@@ -0,0 +1,22 @@
package rule
import (
"regexp"
"github.com/spf13/cast"
)
// Cron 校验规则
type Cron struct {
re *regexp.Regexp
}
func NewCron() *Cron {
return &Cron{
re: regexp.MustCompile(`(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)|((((\d+,)+\d+|((\*|\d+)(\/|-)\d+)|\d+|\*) ?){5,7})`),
}
}
func (s *Cron) Passes(val any, options ...any) bool {
return s.re.MatchString(cast.ToString(val))
}

View File

@@ -10,10 +10,12 @@ func GlobalRules(db *gorm.DB) {
"exists": NewExists(db).Passes,
"not_exists": NewNotExists(db).Passes,
"password": NewPassword().Passes,
"cron": NewCron().Passes,
})
validate.AddGlobalMessages(map[string]string{
"exists": "{field} 不存在",
"not_exists": "{field} 已存在",
"password": "密码不满足要求8-20位至少包含字母、数字、特殊字符中的两种",
"cron": "Cron 表达式不合法",
})
}