diff options
Diffstat (limited to 'api/user.go')
-rw-r--r-- | api/user.go | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/api/user.go b/api/user.go index a231e8c..4e5fa82 100644 --- a/api/user.go +++ b/api/user.go @@ -33,7 +33,7 @@ func (c *Controller) CreateUser(w http.ResponseWriter, r *http.Request) { return } - user, err := decodeUserPayload(r.Body) + user, err := decodeUserCreationPayload(r.Body) if err != nil { json.BadRequest(w, err) return @@ -73,17 +73,12 @@ func (c *Controller) UpdateUser(w http.ResponseWriter, r *http.Request) { return } - user, err := decodeUserPayload(r.Body) + userChanges, err := decodeUserModificationPayload(r.Body) if err != nil { json.BadRequest(w, err) return } - if err := user.ValidateUserModification(); err != nil { - json.BadRequest(w, err) - return - } - originalUser, err := c.store.UserByID(userID) if err != nil { json.BadRequest(w, errors.New("Unable to fetch this user from the database")) @@ -95,7 +90,12 @@ func (c *Controller) UpdateUser(w http.ResponseWriter, r *http.Request) { return } - originalUser.Merge(user) + userChanges.Update(originalUser) + if err := originalUser.ValidateUserModification(); err != nil { + json.BadRequest(w, err) + return + } + if err = c.store.UpdateUser(originalUser); err != nil { json.ServerError(w, errors.New("Unable to update this user")) return |