diff --git a/http/users.go b/http/users.go index d7caffa1fe..4f7dca79bb 100644 --- a/http/users.go +++ b/http/users.go @@ -177,7 +177,7 @@ var userPutHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request } for k, v := range req.Which { - v = cases.Title(language.English).String(v) + v = cases.Title(language.English, cases.NoLower).String(v) req.Which[k] = v if v == "Password" { diff --git a/storage/bolt/users.go b/storage/bolt/users.go index 9120e852fe..b0984bbe45 100644 --- a/storage/bolt/users.go +++ b/storage/bolt/users.go @@ -1,6 +1,7 @@ package bolt import ( + "fmt" "reflect" "github.com/asdine/storm/v3" @@ -58,7 +59,11 @@ func (st usersBackend) Update(user *users.User, fields ...string) error { } for _, field := range fields { - val := reflect.ValueOf(user).Elem().FieldByName(field).Interface() + userField := reflect.ValueOf(user).Elem().FieldByName(field) + if !userField.IsValid() { + return fmt.Errorf("invalid field: %s", field) + } + val := userField.Interface() if err := st.db.UpdateField(user, field, val); err != nil { return err }