summaryrefslogtreecommitdiffstats
path: root/api/preference.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/preference.go')
-rw-r--r--api/preference.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/api/preference.go b/api/preference.go
index d9ddb1a21..240ead571 100644
--- a/api/preference.go
+++ b/api/preference.go
@@ -16,6 +16,7 @@ func InitPreference() {
BaseRoutes.Preferences.Handle("/", ApiUserRequired(getAllPreferences)).Methods("GET")
BaseRoutes.Preferences.Handle("/save", ApiUserRequired(savePreferences)).Methods("POST")
+ BaseRoutes.Preferences.Handle("/delete", ApiUserRequired(deletePreferences)).Methods("POST")
BaseRoutes.Preferences.Handle("/{category:[A-Za-z0-9_]+}", ApiUserRequired(getPreferenceCategory)).Methods("GET")
BaseRoutes.Preferences.Handle("/{category:[A-Za-z0-9_]+}/{name:[A-Za-z0-9_]+}", ApiUserRequired(getPreference)).Methods("GET")
}
@@ -81,3 +82,30 @@ func getPreference(c *Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte(data.ToJson()))
}
}
+
+func deletePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
+ preferences, err := model.PreferencesFromJson(r.Body)
+ if err != nil {
+ c.Err = model.NewLocAppError("savePreferences", "api.preference.delete_preferences.decode.app_error", nil, err.Error())
+ c.Err.StatusCode = http.StatusBadRequest
+ return
+ }
+
+ for _, preference := range preferences {
+ if c.Session.UserId != preference.UserId {
+ c.Err = model.NewLocAppError("deletePreferences", "api.preference.delete_preferences.user_id.app_error",
+ nil, "session.user_id="+c.Session.UserId+",preference.user_id="+preference.UserId)
+ c.Err.StatusCode = http.StatusForbidden
+ return
+ }
+ }
+
+ for _, preference := range preferences {
+ if result := <-Srv.Store.Preference().Delete(c.Session.UserId, preference.Category, preference.Name); result.Err != nil {
+ c.Err = result.Err
+ return
+ }
+ }
+
+ ReturnStatusOK(w)
+}