diff --git a/controllers/userController.go b/controllers/userController.go index c2431fe..72a87e5 100644 --- a/controllers/userController.go +++ b/controllers/userController.go @@ -94,31 +94,47 @@ func GetUserByToken(c *gin.Context, token string) (database.User, error) { return user, err } -// asdasdasd func EditUser(c *gin.Context, token string, user database.User) { db := database.Connector() validate := validators.Validate - u := GetUserByToken(c, token) - if err := validate.Struct(user); err != nil { - return - } - if user.Name != "" { - u.Name = user.Name - } - if user.Email != "" { - u.Email = user.Email - } - if user.Password != "" { - hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12) - if err != nil { - return + response := message.Response{Status: 200} + u, err := GetUserByToken(c, token) + if err != nil { + response.Status = 401 + response.Error = gin.H{ + "error": "Token is invalid, please login", } - u.Password = string(hash) - } - if err := db.Save(u).Error; err != nil { + message.SendResponse(c, response) + return + } + + if err := validate.Struct(user); err != nil { + response.Error = libs.GetValidationErrors(err.(validator.ValidationErrors)) + response.Status = 400 + message.SendResponse(c, response) + return + } + + hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), 12) + if err != nil { + response.Status = 500 + response.Error = gin.H{ + "error": err, + } + message.SendResponse(c, response) + return + } + + u.Password = string(hash) + + if err := db.Save(u).Error; err != nil { + response.Status = 500 + response.Error = gin.H{ + "error": err, + } + message.SendResponse(c, response) return } - return } func DeleteUser(c *gin.Context, token string) {