@ -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