|
|
|
|
@ -63,6 +63,7 @@ public class UserService {
|
|
|
|
|
user.setFirstLogin(false);
|
|
|
|
|
}
|
|
|
|
|
user.setPassword(passwordEncryptionService.hashPassword(request.getPassword()));
|
|
|
|
|
user.setAconnectUser(false);
|
|
|
|
|
User savedUser = userRepository.save(user);
|
|
|
|
|
return mapToResponseDTO(savedUser);
|
|
|
|
|
}
|
|
|
|
|
@ -84,8 +85,6 @@ public class UserService {
|
|
|
|
|
@Transactional
|
|
|
|
|
public String firstLogin(ChangePasswordDTO request) throws JsonProcessingException {
|
|
|
|
|
|
|
|
|
|
String url = securityURI + "/security/thirdparty/user/changePassword";
|
|
|
|
|
|
|
|
|
|
User user = userRepository.findById(request.getUserId())
|
|
|
|
|
.orElseThrow(() -> new EntityNotFoundException(
|
|
|
|
|
"User not found with ID: " + request.getUserId()));
|
|
|
|
|
@ -97,30 +96,33 @@ public class UserService {
|
|
|
|
|
throw new OldPasswordNotMatch(request.getPorOrgacode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
headers.set("sus_usercode", request.getUserId());
|
|
|
|
|
headers.set("por_orgacode", request.getPorOrgacode());
|
|
|
|
|
|
|
|
|
|
// Build $set payload
|
|
|
|
|
Map<String, Object> setPayload = new HashMap<>();
|
|
|
|
|
setPayload.put("SUS_USERCODE", user.getUserId());
|
|
|
|
|
setPayload.put("SUS_PASSWORD", request.getNewPassword());
|
|
|
|
|
setPayload.put("OLD_PASSWORD", request.getOldPassword());
|
|
|
|
|
setPayload.put("POR_ORGACODE", user.getPorOrgacode());
|
|
|
|
|
|
|
|
|
|
// Build main payload
|
|
|
|
|
Map<String, Object> requestBody = new HashMap<>();
|
|
|
|
|
requestBody.put("formId", "SH_SM_US_USER"); // your form ID
|
|
|
|
|
requestBody.put("porOrgacode", user.getPorOrgacode());
|
|
|
|
|
requestBody.put("set", objectMapper.writeValueAsString(setPayload));
|
|
|
|
|
requestBody.put("filter", buildFilter(user.getPorOrgacode(), user.getUserId()));
|
|
|
|
|
|
|
|
|
|
ResponseEntity<Object> ciihiveResponse =
|
|
|
|
|
webClientConfig.patch(url, requestBody, headers);
|
|
|
|
|
|
|
|
|
|
if (!ciihiveResponse.getStatusCode().is2xxSuccessful()) {
|
|
|
|
|
throw new RuntimeException("Failed to update password in ciihive: " + ciihiveResponse.getBody());
|
|
|
|
|
if (user.isAconnectUser()) {
|
|
|
|
|
|
|
|
|
|
String url = securityURI + "/security/thirdparty/user/changePassword";
|
|
|
|
|
|
|
|
|
|
HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
headers.set("sus_usercode", request.getUserId());
|
|
|
|
|
headers.set("por_orgacode", request.getPorOrgacode());
|
|
|
|
|
|
|
|
|
|
Map<String, Object> setPayload = new HashMap<>();
|
|
|
|
|
setPayload.put("SUS_USERCODE", user.getUserId());
|
|
|
|
|
setPayload.put("SUS_PASSWORD", request.getNewPassword());
|
|
|
|
|
setPayload.put("OLD_PASSWORD", request.getOldPassword());
|
|
|
|
|
setPayload.put("POR_ORGACODE", user.getPorOrgacode());
|
|
|
|
|
|
|
|
|
|
Map<String, Object> requestBody = new HashMap<>();
|
|
|
|
|
requestBody.put("formId", "SH_SM_US_USER");
|
|
|
|
|
requestBody.put("porOrgacode", user.getPorOrgacode());
|
|
|
|
|
requestBody.put("set", objectMapper.writeValueAsString(setPayload));
|
|
|
|
|
requestBody.put("filter", buildFilter(user.getPorOrgacode(), user.getUserId()));
|
|
|
|
|
|
|
|
|
|
ResponseEntity<Object> ciihiveResponse =
|
|
|
|
|
webClientConfig.patch(url, requestBody, headers);
|
|
|
|
|
|
|
|
|
|
if (!ciihiveResponse.getStatusCode().is2xxSuccessful()) {
|
|
|
|
|
throw new RuntimeException("Failed to update password in ciihive: " + ciihiveResponse.getBody());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Update local DB
|
|
|
|
|
|