Aconnect Change Password Issue: now on first login password will update successfully

aconnect/BS-ChangePasswordIssue
Wasiullah Khan Jadoon 3 weeks ago
parent 83002950b1
commit 65a7238473

@ -6,9 +6,11 @@ import com.mfsys.aconnect.configuration.config.WebClientConfig;
import com.mfsys.aconnect.usermanagement.dto.UserDTOs; import com.mfsys.aconnect.usermanagement.dto.UserDTOs;
import com.mfsys.aconnect.usermanagement.exceptions.EmailAlreadyExistException; import com.mfsys.aconnect.usermanagement.exceptions.EmailAlreadyExistException;
import com.mfsys.aconnect.usermanagement.exceptions.UsernameAlreadyExistException; import com.mfsys.aconnect.usermanagement.exceptions.UsernameAlreadyExistException;
import com.mfsys.aconnect.usermanagement.model.User;
import com.mfsys.aconnect.usermanagement.repository.UserRepository; import com.mfsys.aconnect.usermanagement.repository.UserRepository;
import com.mfsys.aconnect.usermanagement.model.Role; import com.mfsys.aconnect.usermanagement.model.Role;
import com.mfsys.aconnect.usermanagement.service.UserService; import com.mfsys.aconnect.usermanagement.service.UserService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.http.*; import org.springframework.http.*;
@ -119,6 +121,10 @@ public class ThirdPartyUserService {
userRequest.setRole(Role.USER); userRequest.setRole(Role.USER);
userService.createUser(userRequest); userService.createUser(userRequest);
User saved = userRepository.findByUserId(request.getSusUsercode())
.orElseThrow(() -> new EntityNotFoundException("User not found: " + request.getSusUsercode()));
saved.setAconnectUser(true);
userRepository.save(saved);
} catch (Exception e) { } catch (Exception e) {
System.err.println("Failed to save third party user to Aconnect: " + e.getMessage()); System.err.println("Failed to save third party user to Aconnect: " + e.getMessage());
} }

@ -51,6 +51,9 @@ public class User {
@Column(name = "is_deleted", columnDefinition = FieldNameLength.BOOLEAN_BIT) @Column(name = "is_deleted", columnDefinition = FieldNameLength.BOOLEAN_BIT)
private boolean isDeleted = false; private boolean isDeleted = false;
@Column(name = "is_aconnect_user", columnDefinition = FieldNameLength.BOOLEAN_BIT)
private boolean isAconnectUser = false;
@CreationTimestamp @CreationTimestamp
@Column(name = "created_at", updatable = false) @Column(name = "created_at", updatable = false)
private LocalDateTime createdAt; private LocalDateTime createdAt;

@ -9,6 +9,7 @@ import java.util.Optional;
@Repository @Repository
public interface UserRepository extends JpaRepository<User, String> { public interface UserRepository extends JpaRepository<User, String> {
Optional<User> findByUserId(String userId);
Optional<User> findByUserIdAndIsActiveTrue(String userId); Optional<User> findByUserIdAndIsActiveTrue(String userId);
boolean existsByUserId(String userId); boolean existsByUserId(String userId);
boolean existsByEmail(String email); boolean existsByEmail(String email);

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

Loading…
Cancel
Save