diff --git a/api/api.go b/api/api.go index 82e77fa8..579392f3 100644 --- a/api/api.go +++ b/api/api.go @@ -38,18 +38,18 @@ func BindAndValid(c *gin.Context, target interface{}) bool { return false } - t := reflect.TypeOf(target) + t := reflect.TypeOf(target).Elem() errorsMap := make(map[string]interface{}) for _, value := range verrs { var path []string namespace := strings.Split(value.StructNamespace(), ".") - - if t.Name() == "" && len(namespace) > 1 { + logger.Debug(t.Name(), namespace) + if t.Name() != "" && len(namespace) > 1 { namespace = namespace[1:] } - getJsonPath(t.Elem(), namespace, &path) + getJsonPath(t, namespace, &path) insertError(errorsMap, path, value.Tag()) } diff --git a/api/certificate/certificate.go b/api/certificate/certificate.go index 2bb69d0a..b2351bc1 100644 --- a/api/certificate/certificate.go +++ b/api/certificate/certificate.go @@ -87,9 +87,11 @@ type certJson struct { func AddCert(c *gin.Context) { var json certJson + if !api.BindAndValid(c, &json) { return } + certModel := &model.Cert{ Name: json.Name, SSLCertificatePath: json.SSLCertificatePath, diff --git a/api/system/settings.go b/api/system/settings.go index e87252bd..df315b11 100644 --- a/api/system/settings.go +++ b/api/system/settings.go @@ -27,7 +27,6 @@ func SaveSettings(c *gin.Context) { return } - // todo: omit protected fields when binding fillSettings(&settings.ServerSettings, &json.Server) fillSettings(&settings.NginxSettings, &json.Nginx) fillSettings(&settings.OpenAISettings, &json.Openai) diff --git a/app/src/views/preference/BasicSettings.vue b/app/src/views/preference/BasicSettings.vue index 3f31d3d3..ade587f1 100644 --- a/app/src/views/preference/BasicSettings.vue +++ b/app/src/views/preference/BasicSettings.vue @@ -1,10 +1,11 @@