From 89a7780c54fb0bd17c2b459807f8176e1613758b Mon Sep 17 00:00:00 2001 From: Alex <$(pass /github/email)> Date: Tue, 18 Feb 2025 11:34:21 +0100 Subject: [PATCH] backend refactor: userdeletion --- internal/controllers/user_controller.go | 29 ++++++++++++-------- internal/controllers/user_controller_test.go | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/internal/controllers/user_controller.go b/internal/controllers/user_controller.go index 08c86bb..b411b2c 100644 --- a/internal/controllers/user_controller.go +++ b/internal/controllers/user_controller.go @@ -47,7 +47,7 @@ func (uc *UserController) CurrentUserHandler(c *gin.Context) { func (uc *UserController) GetAllUsers(c *gin.Context) { users, err := uc.Service.GetUsers(nil) if err != nil { - utils.RespondWithError(c, err, "Error getting users in GetAllUsers", http.StatusInternalServerError, "user", "server.error.internal_server_error") + utils.RespondWithError(c, err, "Error getting users in GetAllUsers", http.StatusInternalServerError, "user.user", "server.error.internal_server_error") return } @@ -80,7 +80,7 @@ func (uc *UserController) UpdateHandler(c *gin.Context) { user = updateData.User if !utils.HasPrivilige(requestUser, constants.Priviliges.Update) && user.ID != requestUser.ID { - utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to update user", http.StatusForbidden, "user", "server.error.unauthorized") + utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to update user", http.StatusForbidden, "user.user", "server.error.unauthorized") return } @@ -99,30 +99,35 @@ func (uc *UserController) DeleteUser(c *gin.Context) { requestUser, err := uc.ExtractUserFromContext(c) if err != nil { - utils.RespondWithError(c, err, "Error extracting user from context in UpdateHandler", http.StatusBadRequest, "general", "server.validation.no_auth_tokenw") + utils.RespondWithError(c, err, "Error extracting user from context in DeleteUser", http.StatusBadRequest, "general", "server.validation.no_auth_tokenw") return } - type deleteData = struct { - ID uint `json:"id"` - LastName string `json:"lastname"` + type deleteData struct { + User struct { + ID uint `json:"id"` + LastName string `json:"last_name"` + } `json:"user"` } - var deletedUser deleteData - if err := c.ShouldBindJSON(&deletedUser); err != nil { + var data deleteData + if err := c.ShouldBindJSON(&data); err != nil { utils.HandleValidationError(c, err) return } - if !utils.HasPrivilige(requestUser, constants.Priviliges.Update) && deletedUser.ID != requestUser.ID { - utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to delete user", http.StatusForbidden, "user", "server.error.unauthorized") + if !utils.HasPrivilige(requestUser, constants.Priviliges.Update) && data.User.ID != requestUser.ID { + utils.RespondWithError(c, errors.ErrNotAuthorized, "Not allowed to delete user", http.StatusForbidden, "user.user", "server.error.unauthorized") return } - if err := uc.Service.DeleteUser(deletedUser.LastName, deletedUser.ID); err != nil { - utils.RespondWithError(c, err, "Error during user deletion", http.StatusInternalServerError, "user", "server.error.internal_server_error") + logger.Error.Printf("Deleting user: %v", data.User) + if err := uc.Service.DeleteUser(data.User.LastName, data.User.ID); err != nil { + utils.RespondWithError(c, err, "Error during user deletion", http.StatusInternalServerError, "user.user", "server.error.internal_server_error") return } + + c.JSON(http.StatusOK, gin.H{"message": "User deleted successfully"}) } func (uc *UserController) ExtractUserFromContext(c *gin.Context) (*models.User, error) { diff --git a/internal/controllers/user_controller_test.go b/internal/controllers/user_controller_test.go index 71212b7..703b335 100644 --- a/internal/controllers/user_controller_test.go +++ b/internal/controllers/user_controller_test.go @@ -585,7 +585,7 @@ func testUpdateUser(t *testing.T, loginCookie http.Cookie) { }, expectedStatus: http.StatusForbidden, expectedErrors: []map[string]string{ - {"field": "user", "key": "server.error.unauthorized"}, + {"field": "user.user", "key": "server.error.unauthorized"}, }, }, {