This commit is contained in:
adel.ka 2025-03-31 15:25:27 +03:00
parent 668e6a2d3b
commit 596d0dd8cb
11 changed files with 29 additions and 41 deletions

View file

@ -5,26 +5,22 @@ import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
/**
* @author Emir Suleimanov
*/
public abstract class AbstractIdmValidatorService implements IdmValidatorService{
protected RestTemplate restTemplate;
protected SecurityContext securityContext;
@Value("${ervu.url}")
protected String ervuUrl;
@Value("${idm.url}")
protected String idmUrl;
public AbstractIdmValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
public AbstractIdmValidatorService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
this.securityContext = securityContext;
}
public HttpEntity<Void> createRequestEntity() {
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(securityContext.getToken());
headers.setContentType(MediaType.APPLICATION_JSON);
return new HttpEntity<>(headers);
}

View file

@ -43,8 +43,8 @@ public class ErvuUserGridLoadService extends Behavior implements GridService {
private final SecurityContext securityContext;
@Value("${ervu.http.timeout:30}")
private int httpTimeout;
@Value("${ervu.url}")
private String ervuUrl;
@Value("${idm.url}")
private String idmUrl;
public ErvuUserGridLoadService(ObjectMapper objectMapper,
SecurityContext securityContext) {
@ -85,11 +85,10 @@ public class ErvuUserGridLoadService extends Behavior implements GridService {
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(UriComponentsBuilder.fromHttpUrl(ervuUrl)
.uri(UriComponentsBuilder.fromHttpUrl(idmUrl)
.pathSegment(PathConstant.ACCOUNTS_PATH, FILTER_PATH)
.build().toUri())
.header(HttpHeaders.CONTENT_TYPE, "application/json")
.header(HttpHeaders.AUTHORIZATION, "Bearer " + securityContext.getToken())
.timeout(Duration.ofSeconds(httpTimeout))
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();

View file

@ -10,7 +10,6 @@ import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
/**
* @author Emir Suleimanov
@ -18,13 +17,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
@Service
public class IdmLoginValidatorService extends AbstractIdmValidatorService{
public IdmLoginValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
super(restTemplate, securityContext);
public IdmLoginValidatorService(RestTemplate restTemplate) {
super(restTemplate);
}
@Override
public boolean valueExists(String login) {
String url = String.format("%s/service/idm/credentials/login/%s", ervuUrl, login);
String url = String.format("%s/credentials/login/%s", idmUrl, login);
HttpEntity<Void> entity = createRequestEntity();
try {
ResponseEntity<List<Map<String, Object>>> response = restTemplate.exchange(

View file

@ -11,7 +11,6 @@ import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
import ru.micord.ervu.account_applications.component.model.dto.IdmPersonsResponse;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
/**
* @author Emir Suleimanov
@ -19,13 +18,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
@Service
public class IdmSnilsValidatorService extends AbstractIdmValidatorService {
public IdmSnilsValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
super(restTemplate, securityContext);
public IdmSnilsValidatorService(RestTemplate restTemplate) {
super(restTemplate);
}
@Override
public boolean valueExists(String snils) {
String url = String.format("%s/service/idm/persons?query=snils==\"%s\"", ervuUrl, snils);
String url = String.format("%s/persons?query=snils==\"%s\"", idmUrl, snils);
HttpEntity<Void> entity = createRequestEntity();
try {
ResponseEntity<IdmPersonsResponse> response = restTemplate.exchange(

View file

@ -12,7 +12,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.net.HttpHeaders;
import org.springframework.beans.factory.annotation.Value;
import ru.micord.ervu.account_applications.component.exception.ApiResponseException;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
/**
@ -20,15 +19,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
*/
public abstract class AbstractUserDataService implements UserDataService {
protected final ObjectMapper objectMapper;
protected final SecurityContext securityContext;
@Value("${ervu.http.timeout:30}")
protected int httpTimeout;
@Value("${ervu.url}")
protected String ervuUrl;
@Value("${idm.url}")
protected String idmUrl;
protected AbstractUserDataService(ObjectMapper objectMapper, SecurityContext securityContext) {
protected AbstractUserDataService(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
this.securityContext = securityContext;
}
protected HttpResponse<String> sendGetRequest(String url)
@ -40,7 +37,6 @@ public abstract class AbstractUserDataService implements UserDataService {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header(HttpHeaders.CONTENT_TYPE, "application/json")
.header(HttpHeaders.AUTHORIZATION, "Bearer " + securityContext.getToken())
.timeout(Duration.ofSeconds(httpTimeout))
.GET()
.build();

View file

@ -17,7 +17,6 @@ import org.springframework.util.ClassUtils;
import org.springframework.web.util.UriComponentsBuilder;
import ru.micord.ervu.account_applications.component.exception.UserDataLoadException;
import ru.micord.ervu.account_applications.component.model.Account;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
import ru.micord.ervu.account_applications.service.constant.PathConstant;
import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef;
@ -31,8 +30,8 @@ public class AccountServiceImpl extends AbstractUserDataService {
@ObjectRef
public EditableGridColumn editableGridColumnRef;
public AccountServiceImpl(ObjectMapper objectMapper, SecurityContext securityContext) {
super(objectMapper, securityContext);
public AccountServiceImpl(ObjectMapper objectMapper) {
super(objectMapper);
}
@Override
@ -42,7 +41,7 @@ public class AccountServiceImpl extends AbstractUserDataService {
}
private Account fetchAccountById(Object id) throws IOException, InterruptedException {
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
.path(PathConstant.ACCOUNTS_PATH)
.pathSegment(id.toString())
.queryParam("expand", "person,user-domain,region")

View file

@ -26,9 +26,8 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
public class RoleServiceImpl extends AbstractUserDataService {
private static final String ROLES = "roles";
protected RoleServiceImpl(ObjectMapper objectMapper,
SecurityContext securityContext) {
super(objectMapper, securityContext);
protected RoleServiceImpl(ObjectMapper objectMapper) {
super(objectMapper);
}
@Override
@ -50,7 +49,7 @@ public class RoleServiceImpl extends AbstractUserDataService {
}
private List<Role> fetchRolesByAccountId(Object accountId) throws IOException, InterruptedException {
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
.path(PathConstant.ACCOUNTS_PATH)
.pathSegment(accountId.toString(), ROLES)
.toUriString();

View file

@ -11,7 +11,6 @@ import com.fasterxml.jackson.databind.type.CollectionType;
import org.springframework.stereotype.Service;
import org.springframework.web.util.UriComponentsBuilder;
import ru.micord.ervu.account_applications.component.model.Credential;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
import ru.micord.ervu.account_applications.service.constant.PathConstant;
/**
@ -21,8 +20,8 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
public class UserCredentialsServiceIpml extends AbstractUserDataService {
private static final String CREDENTIALS = "credentials";
public UserCredentialsServiceIpml(ObjectMapper objectMapper, SecurityContext securityContext) {
super(objectMapper, securityContext);
public UserCredentialsServiceIpml(ObjectMapper objectMapper) {
super(objectMapper);
}
@Override
@ -32,7 +31,7 @@ public class UserCredentialsServiceIpml extends AbstractUserDataService {
}
private List<Credential> fetchCredentialsByPersonId(Object personId) throws IOException, InterruptedException {
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
.path(PathConstant.PERSONS_PATH)
.pathSegment(personId.toString(), CREDENTIALS)
.toUriString();

View file

@ -4,8 +4,8 @@ package ru.micord.ervu.account_applications.service.constant;
* @author Adel Kalimullin
*/
public final class PathConstant {
public static final String ACCOUNTS_PATH = "service/idm/accounts";
public static final String PERSONS_PATH = "service/idm/persons";
public static final String ACCOUNTS_PATH = "accounts";
public static final String PERSONS_PATH = "persons";
private PathConstant() {
}

View file

@ -58,6 +58,7 @@
<property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
<property name="ervu.url" value="https://ervu-dev.pgs.rtlabs.ru"/>
<property name="ervu.pwd.sign.secret_key" value="xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM="/>
<property name="idm.url" value="http://idm"/>
</system-properties>
<management>
<audit-log>

View file

@ -27,3 +27,4 @@ ERVU_HTTP_TIMEOUT=30
ERVU_PWD_SIGN_SECRET_KEY=xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM=
KAFKA_ROLE_RECONCILIATION=idmv2.role.reconciliation
KAFKA_DOMAIN_RECONCILIATION=idmv2.domain.reconciliation
IDM_URL=http://idm