diff options
Diffstat (limited to 'modules/form')
-rw-r--r-- | modules/form/form.go | 20 | ||||
-rw-r--r-- | modules/form/repo.go | 2 |
2 files changed, 21 insertions, 1 deletions
diff --git a/modules/form/form.go b/modules/form/form.go index 1e6fec9e..2efbf4fa 100644 --- a/modules/form/form.go +++ b/modules/form/form.go @@ -5,7 +5,9 @@ package form import ( + "fmt" "reflect" + "regexp" "strings" "github.com/Unknwon/com" @@ -13,8 +15,24 @@ import ( "gopkg.in/macaron.v1" ) +const ERR_ALPHA_DASH_DOT_SLASH = "AlphaDashDotSlashError" + +var AlphaDashDotSlashPattern = regexp.MustCompile("[^\\d\\w-_\\./]") + func init() { binding.SetNameMapper(com.ToSnakeCase) + binding.AddRule(&binding.Rule{ + IsMatch: func(rule string) bool { + return rule == "AlphaDashDotSlash" + }, + IsValid: func(errs binding.Errors, name string, v interface{}) (bool, binding.Errors) { + if AlphaDashDotSlashPattern.MatchString(fmt.Sprintf("%v", v)) { + errs.Add([]string{name}, ERR_ALPHA_DASH_DOT_SLASH, "AlphaDashDotSlash") + return false, errs + } + return true, errs + }, + }) } type Form interface { @@ -113,6 +131,8 @@ func validate(errs binding.Errors, data map[string]interface{}, f Form, l macaro data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_error") case binding.ERR_ALPHA_DASH_DOT: data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_dot_error") + case ERR_ALPHA_DASH_DOT_SLASH: + data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_dot_slash_error") case binding.ERR_SIZE: data["ErrorMsg"] = trName + l.Tr("form.size_error", getSize(field)) case binding.ERR_MIN_SIZE: diff --git a/modules/form/repo.go b/modules/form/repo.go index 0aadde96..0f3e83ce 100644 --- a/modules/form/repo.go +++ b/modules/form/repo.go @@ -323,7 +323,7 @@ type EditRepoFile struct { CommitSummary string `binding:"MaxSize(100)` CommitMessage string CommitChoice string `binding:"Required;MaxSize(50)"` - NewBranchName string `binding:"AlphaDashDot;MaxSize(100)"` + NewBranchName string `binding:"AlphaDashDotSlash;MaxSize(100)"` LastCommit string } |