diff --git a/backend/api/handlers.go b/backend/api/handlers.go index 531c795..75573fd 100644 --- a/backend/api/handlers.go +++ b/backend/api/handlers.go @@ -37,6 +37,65 @@ func userAuth(c *gin.Context) { c.JSON(http.StatusOK, user) } +func userUpdate(c *gin.Context) { + session := sessions.Default(c) + user_id, ok := session.Get("user_id").(string) + if !ok { + c.JSON(http.StatusUnauthorized, gin.H{"error": "Ты это, залогинься сначала что ли, а то чё как крыса"}) + return + } + var body map[string]string + err := c.BindJSON(&body) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "И чё за шнягу ты мне кинул?"}) + return + } + var user models.User + ctx := context.Background() + newTelegramIDStr, ok := body["telegram_id"] + if ok && newTelegramIDStr != "" { + newTelegramID, err := strconv.ParseInt(newTelegramIDStr, 10, 0) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "telegram_id param must be int"}) + return + } + user, err = db.UserUpdateTelegramID(ctx, user_id, newTelegramID) + if err != nil { + status, message := HandleDBError(err) + c.JSON(status, gin.H{"error": message}) + return + } + } + newName, ok := body["name"] + if ok && newName != "" { + user, err = db.UserUpdateName(ctx, user_id, newName) + if err != nil { + status, message := HandleDBError(err) + c.JSON(status, gin.H{"error": message}) + return + } + } + newLogin, ok := body["login"] + if ok && newLogin != "" { + user, err = db.UserUpdateLogin(ctx, user_id, newLogin) + if err != nil { + status, message := HandleDBError(err) + c.JSON(status, gin.H{"error": message}) + return + } + } + newPassword, ok := body["password"] + if ok && newPassword != "" { + user, err = db.UserUpdatePassword(ctx, user_id, newPassword) + if err != nil { + status, message := HandleDBError(err) + c.JSON(status, gin.H{"error": message}) + return + } + } + c.JSON(http.StatusOK, user) +} + //#endregion User //#region Quotes diff --git a/backend/api/routes.go b/backend/api/routes.go index c7f2c70..62b9935 100644 --- a/backend/api/routes.go +++ b/backend/api/routes.go @@ -21,6 +21,8 @@ func RegisterRoutes(r *gin.Engine) { api := r.Group("/api") { api.POST("/auth", userAuth) + api.PATCH("/auth", userUpdate) + api.GET("/quotes", quotesGet) api.POST("/quotes", quoteAdd) api.GET("/quotes/:id", quoteGet)