CreateUser godoc @Security ApiKey @Summary Create a new user @Description create a new user @Tags User @Accept json @Produce json @Param body body types.CreateUserRequest true "body" @Success 200 {object} types.Response{data=database.User} "OK" @Failure
(ctx *gin.Context)
| 87 | // @Failure 500 {object} types.APIInternalServerError "Internal server error" |
| 88 | // @Router /user/{username} [put] |
| 89 | func (h *UserHandler) Update(ctx *gin.Context) { |
| 90 | currentUser := httpbase.GetCurrentUser(ctx) |
| 91 | var req *types.UpdateUserRequest |
| 92 | if err := ctx.ShouldBindJSON(&req); err != nil { |
| 93 | slog.Error("Bad request format", "error", err) |
| 94 | httpbase.BadRequest(ctx, err.Error()) |
| 95 | return |
| 96 | } |
| 97 | |
| 98 | var err error |
| 99 | _, err = h.sc.CheckRequest(ctx, req) |
| 100 | if err != nil { |
| 101 | slog.Error("failed to check sensitive request", slog.Any("error", err)) |
| 102 | httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) |
| 103 | return |
| 104 | } |
| 105 | |
| 106 | userName := ctx.Param("username") |
| 107 | req.Username = userName |
| 108 | |
| 109 | if req.NewUserName != nil { |
| 110 | err = h.c.ChangeUserName(ctx, req.Username, *req.NewUserName, currentUser) |
| 111 | } else { |
| 112 | err = h.c.Update(ctx, req, currentUser) |
| 113 | } |
| 114 | if err != nil { |
| 115 | slog.Error("Failed to update user", slog.Any("error", err)) |
| 116 | httpbase.ServerError(ctx, err) |
| 117 | return |
| 118 | } |
| 119 | |
| 120 | slog.Info("Update user succeed", slog.String("user", req.Username)) |
| 121 | httpbase.OK(ctx, nil) |
| 122 | } |
| 123 | |
| 124 | // DeleteUser godoc |
| 125 | // @Security ApiKey |
nothing calls this directly
no test coverage detected