diff --git a/aconnect/src/main/java/com/mfsys/aconnect/security/constant/SecurityURI.java b/aconnect/src/main/java/com/mfsys/aconnect/security/constant/SecurityURI.java index 2600811..b3c7c6f 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/security/constant/SecurityURI.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/security/constant/SecurityURI.java @@ -5,4 +5,5 @@ public interface SecurityURI { String LOGIN = "/login"; String REGISTER = "/signup"; String CHANGE_PASSWORD = "/change-password"; + String RESET_PASSWORD = "/reset-password"; } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/security/controller/AuthenticationController.java b/aconnect/src/main/java/com/mfsys/aconnect/security/controller/AuthenticationController.java index aa5544d..4125b8b 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/security/controller/AuthenticationController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/security/controller/AuthenticationController.java @@ -4,6 +4,7 @@ import com.mfsys.aconnect.security.constant.SecurityURI; import com.mfsys.aconnect.security.dto.ChangePasswordDTO; import com.mfsys.aconnect.security.dto.LoginRequest; import com.mfsys.aconnect.security.dto.LoginResponse; +import com.mfsys.aconnect.security.dto.ResetPasswordDTO; import com.mfsys.aconnect.security.service.AuthenticationService; import com.mfsys.aconnect.usermanagement.constant.UserManagementURI; import com.mfsys.aconnect.usermanagement.dto.UserDTOs; @@ -58,4 +59,13 @@ public class AuthenticationController { return new ResponseEntity<>(response, HttpStatus.OK); } + @PostMapping(SecurityURI.RESET_PASSWORD) + public ResponseEntity> resetPassword(@RequestBody ResetPasswordDTO request) { + String message = userService.resetPassword(request); + Map response = new HashMap<>(); + response.put("message", message); + + return new ResponseEntity<>(response, HttpStatus.OK); + } + } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/security/dto/ResetPasswordDTO.java b/aconnect/src/main/java/com/mfsys/aconnect/security/dto/ResetPasswordDTO.java new file mode 100644 index 0000000..fe6ef77 --- /dev/null +++ b/aconnect/src/main/java/com/mfsys/aconnect/security/dto/ResetPasswordDTO.java @@ -0,0 +1,10 @@ +package com.mfsys.aconnect.security.dto; + +import lombok.Data; + +@Data +public class ResetPasswordDTO { + private String userId; + private String porOrgacode; + private String newPassword; +} diff --git a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java index a7a453a..af24613 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/usermanagement/service/UserService.java @@ -1,6 +1,7 @@ package com.mfsys.aconnect.usermanagement.service; import com.mfsys.aconnect.security.dto.ChangePasswordDTO; +import com.mfsys.aconnect.security.dto.ResetPasswordDTO; import com.mfsys.aconnect.usermanagement.exceptions.EmailAlreadyExistException; import com.mfsys.aconnect.usermanagement.exceptions.OldPasswordNotMatch; import com.mfsys.aconnect.usermanagement.exceptions.UsernameAlreadyExistException; @@ -59,6 +60,16 @@ public class UserService { return "Password changed successfully"; } + @Transactional + public String resetPassword(ResetPasswordDTO request) { + User user = userRepository.findById(request.getUserId()) + .orElseThrow(() -> new EntityNotFoundException("User not found with ID: " + request.getUserId())); + + user.setPassword(passwordEncryptionService.hashPassword(request.getNewPassword())); + userRepository.save(user); + return "Password changed successfully"; + } + public List getAllUsers() { return userRepository.findAll().stream() .map(this::mapToResponseDTO)