From ec70d024fa9c5f3e8e7620e9dd07bfcbfad1de51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Sat, 19 Mar 2022 09:27:13 +0100 Subject: [PATCH] fix: remove user property of diagnostics as sent without auth --- migrations/202203191_drop_diagnostics_user.go | 39 +++++++++++++++++++ models/diagnostics.go | 2 - routes/api/diagnostics.go | 8 ---- 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 migrations/202203191_drop_diagnostics_user.go diff --git a/migrations/202203191_drop_diagnostics_user.go b/migrations/202203191_drop_diagnostics_user.go new file mode 100644 index 0000000..8146e8a --- /dev/null +++ b/migrations/202203191_drop_diagnostics_user.go @@ -0,0 +1,39 @@ +package migrations + +import ( + "github.com/emvi/logbuch" + "github.com/muety/wakapi/config" + "github.com/muety/wakapi/models" + "gorm.io/gorm" +) + +func init() { + const name = "202203191-drop_diagnostics_user" + f := migrationFunc{ + name: name, + f: func(db *gorm.DB, cfg *config.Config) error { + if hasRun(name, db) { + return nil + } + + migrator := db.Migrator() + + if migrator.HasColumn(&models.Diagnostics{}, "user_id") { + logbuch.Info("running migration '%s'", name) + + if err := migrator.DropConstraint(&models.Diagnostics{}, "fk_diagnostics_user"); err != nil { + logbuch.Warn("failed to drop 'fk_diagnostics_user' constraint (%v)", err) + } + + if err := migrator.DropColumn(&models.Diagnostics{}, "user_id"); err != nil { + logbuch.Warn("failed to drop user_id column of diagnostics (%v)", err) + } + } + + setHasRun(name, db) + return nil + }, + } + + registerPostMigration(f) +} diff --git a/models/diagnostics.go b/models/diagnostics.go index d5126e2..6031edd 100644 --- a/models/diagnostics.go +++ b/models/diagnostics.go @@ -2,8 +2,6 @@ package models type Diagnostics struct { ID uint `gorm:"primary_key"` - User *User `json:"-" gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` - UserID string `json:"-" gorm:"not null; index:idx_diagnostics_user"` Platform string `json:"platform"` Architecture string `json:"architecture"` Plugin string `json:"plugin"` diff --git a/routes/api/diagnostics.go b/routes/api/diagnostics.go index e63be87..f903dbe 100644 --- a/routes/api/diagnostics.go +++ b/routes/api/diagnostics.go @@ -46,20 +46,12 @@ func (h *DiagnosticsApiHandler) RegisterRoutes(router *mux.Router) { func (h *DiagnosticsApiHandler) Post(w http.ResponseWriter, r *http.Request) { var diagnostics models.Diagnostics - user := middlewares.GetPrincipal(r) - if user == nil { - w.WriteHeader(http.StatusUnauthorized) - w.Write([]byte(conf.ErrUnauthorized)) - return - } - if err := json.NewDecoder(r.Body).Decode(&diagnostics); err != nil { w.WriteHeader(http.StatusBadRequest) w.Write([]byte(conf.ErrBadRequest)) conf.Log().Request(r).Error("failed to parse diagnostics for user %s - %v", err) return } - diagnostics.UserID = user.ID if _, err := h.diagnosticsSrvc.Create(&diagnostics); err != nil { w.WriteHeader(http.StatusInternalServerError)