diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index ce4770499..aa4ae9a00 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -3,7 +3,6 @@ package stirling.software.SPDF.controller.api; import java.io.IOException; import java.security.Principal; import java.sql.SQLException; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -168,13 +167,23 @@ public class UserController { @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") @PostMapping("/updateUserSettings") - public String updateUserSettings(HttpServletRequest request, Principal principal) + /** + * Updates the user settings based on the provided JSON payload. + * + * @param updates A map containing the settings to update. The expected structure is: + * + * Keys not listed above will be ignored. + * @param principal The currently authenticated user. + * @return A redirect string to the account page after updating the settings. + * @throws SQLException If a database error occurs. + * @throws UnsupportedProviderException If the operation is not supported for the user's provider. + */ + public String updateUserSettings(@RequestBody Map updates, Principal principal) throws SQLException, UnsupportedProviderException { - Map paramMap = request.getParameterMap(); - Map updates = new HashMap<>(); - for (Map.Entry entry : paramMap.entrySet()) { - updates.put(entry.getKey(), entry.getValue()[0]); - } log.debug("Processed updates: {}", updates); // Assuming you have a method in userService to update the settings for a user userService.updateUserSettings(principal.getName(), updates);