diff --git a/README.md b/README.md index 5e786d1..717347e 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ - [Docs](https://docs.iris-go.com/iris/getting-started/quick-start) - [Examples](https://github.com/kataras/iris/tree/main/_examples) - [Templating Examples](https://github.com/kataras/iris/tree/main/_examples/view) + - [Validator](https://pkg.go.dev/github.com/go-playground/validator@v9.31.0+incompatible) - [Jet] - [Source](https://github.com/CloudyKit/jet) - [Docs](https://github.com/CloudyKit/jet/wiki) diff --git a/app/lib/helpers/validation.go b/app/lib/helpers/validation.go new file mode 100644 index 0000000..5c769c6 --- /dev/null +++ b/app/lib/helpers/validation.go @@ -0,0 +1,36 @@ +package helpers + +import ( + "fmt" + + "github.com/go-playground/validator/v10" +) + +type ValidationError struct { + ActualTag string `json:"tag"` + Namespace string `json:"namespace"` + Kind string `json:"kind"` + Type string `json:"type"` + Value string `json:"value"` + Param string `json:"param"` + Field string `json:"field"` + StructField string `json:"structField"` +} + +func WrapValidationErrors(errs validator.ValidationErrors) []ValidationError { + validationErrors := make([]ValidationError, 0, len(errs)) + for _, validationErr := range errs { + validationErrors = append(validationErrors, ValidationError{ + ActualTag: validationErr.ActualTag(), + Namespace: validationErr.Namespace(), + Kind: validationErr.Kind().String(), + Type: validationErr.Type().String(), + Value: fmt.Sprintf("%v", validationErr.Value()), + Param: validationErr.Param(), + Field: validationErr.Field(), + StructField: validationErr.StructField(), + }) + } + + return validationErrors +} diff --git a/app/main.go b/app/main.go index cdcd769..f127380 100644 --- a/app/main.go +++ b/app/main.go @@ -9,6 +9,7 @@ import ( "os" "time" + "github.com/go-playground/validator/v10" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/accesslog" "github.com/kataras/iris/v12/sessions" @@ -91,6 +92,7 @@ func createApp() *iris.Application { app.UseRouter(accessLog.Handler) app.RegisterView(iris.Jet("./app/templates", ".jet").Reload(true)) views.CreateRouter(app) + app.Validator = validator.New() if len(cfg.Config.Application.StaticDir) > 0 { app.HandleDir("/static", iris.Dir(cfg.Config.Application.StaticDir)) diff --git a/app/templates/pages/user-edit.jet b/app/templates/pages/user-edit.jet index 9c19310..5778ec5 100644 --- a/app/templates/pages/user-edit.jet +++ b/app/templates/pages/user-edit.jet @@ -12,15 +12,15 @@