backend: add: DeleteUser, fix: validation

This commit is contained in:
Alex
2025-02-08 18:28:07 +01:00
parent 32a473fe29
commit c34c46cbc2
7 changed files with 92 additions and 31 deletions

View File

@@ -95,6 +95,36 @@ func (uc *UserController) UpdateHandler(c *gin.Context) {
c.JSON(http.StatusAccepted, gin.H{"message": "User updated successfully", "user": updatedUser.Safe()})
}
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")
return
}
type deleteData = struct {
ID uint `json:"id"`
LastName string `json:"lastname"`
}
var deletedUser deleteData
if err := c.ShouldBindJSON(&deletedUser); 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")
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")
return
}
}
func (uc *UserController) extractUserFromContext(c *gin.Context) (*models.User, error) {
tokenString, err := c.Cookie("jwt")