SUPPORT-8474: Fix

This commit is contained in:
Eduard Tihomirov 2024-09-07 11:34:13 +03:00
parent dd2ecba904
commit abd8fc8841
5 changed files with 19 additions and 14 deletions

View file

@ -13,7 +13,7 @@ public class ErvuOrgResponse implements Serializable {
private static final long serialVersionUID = 1L;
private boolean success;
private String message;
private Data data;
private Data[] data;
public boolean getSuccess() {
return success;
@ -31,11 +31,11 @@ public class ErvuOrgResponse implements Serializable {
this.message = message;
}
public Data getData() {
public Data[] getData() {
return data;
}
public void setData(Data data) {
public void setData(Data[] data) {
this.data = data;
}
}

View file

@ -17,10 +17,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import ru.micord.ervu.kafka.model.Brhs;
import ru.micord.ervu.kafka.model.Employee;
import ru.micord.ervu.kafka.model.ErvuOrgResponse;
import ru.micord.ervu.kafka.model.OrgInfo;
import ru.micord.ervu.kafka.model.*;
import ru.micord.ervu.kafka.service.ErvuKafkaService;
import ru.micord.ervu.security.esia.config.EsiaConfig;
import ru.micord.ervu.security.esia.model.*;
@ -195,7 +192,7 @@ public class EsiaAuthService {
response.addCookie(cookieRefresh);
EsiaAccessToken esiaAccessToken = ulDataService.readToken(accessToken);
String ervuId = getErvuId(accessToken);
String ervuId = getErvuId(accessToken, esiaAccessToken.getSbj_id());
Token token = jwtTokenService.createAccessToken(esiaAccessToken.getSbj_id(), tokenResponse.getExpires_in(), ervuId);
Cookie authToken = new Cookie("auth_token", token.getValue());
authToken.setPath("/");
@ -285,7 +282,7 @@ public class EsiaAuthService {
cookieRefresh.setPath("/");
response.addCookie(cookieRefresh);
EsiaAccessToken esiaAccessToken = ulDataService.readToken(accessToken);
String ervuId = getErvuId(accessToken);
String ervuId = getErvuId(accessToken, esiaAccessToken.getSbj_id());
Token token = jwtTokenService.createAccessToken(esiaAccessToken.getSbj_id(), tokenResponse.getExpires_in(), ervuId);
Cookie authToken = new Cookie("auth_token", token.getValue());
authToken.setPath("/");
@ -364,15 +361,18 @@ public class EsiaAuthService {
}
}
public String getErvuId(String accessToken) {
public String getErvuId(String accessToken, String prnOid) {
try {
OrganizationModel organizationModel = ulDataService.getOrganizationModel(accessToken);
EmployeeModel employeeModel = ulDataService.getEmployeeModel(accessToken);
EmployeeModel chiefModel = ulDataService.getChiefEmployeeModel(accessToken);
OrgInfo orgInfo = copyToOrgInfo(organizationModel, employeeModel, chiefModel);
String kafkaResponse = ervuKafkaService.sendMessageAndGetReply(objectMapper.writeValueAsString(orgInfo));
ErvuOrgResponse ervuOrgResponse= objectMapper.readValue(kafkaResponse, ErvuOrgResponse.class);
return ervuOrgResponse.getData().getOrgId_ERVU();
ErvuOrgResponse ervuOrgResponse = objectMapper.readValue(kafkaResponse, ErvuOrgResponse.class);
Optional<String> ervuIdOptional = Arrays.stream(ervuOrgResponse.getData()).filter(data -> data.getPrnOid().equals(prnOid)).map(
Data::getOrgId_ERVU).findAny();
return ervuIdOptional.orElseThrow(() -> new RuntimeException(
"No ervuId for prnOid = " + prnOid));
}
catch (Exception e) {
throw new RuntimeException(e);

View file

@ -48,7 +48,7 @@ public class JwtTokenService {
.setExpiration(expirationDate)
.signWith(SIGNING_KEY)
.compact();
return new Token(userAccountId, tokenIssuerName, expirationDate, value);
return new Token(userAccountId + ":" + ervuId, tokenIssuerName, expirationDate, value);
}
public boolean isValid(Token token) {

View file

@ -76,7 +76,12 @@
<property name="esia-redirect-url" value="https://lkrp.micord.ru"/>
<property name="sign-url" value="https://ervu-sign-dev.k8s.micord.ru/sign"/>
<property name="sesia-uri.logout" value="https://esia-portal1.test.gosuslugi.ru/idp/ext/Logout"/>
<property name="ervu-kafka.bootstrap-servers" value="localhost:9092"/>
<property name="ervu-kafka.reply-topic" value="ervu.organization.response"/>
<property name="ervu-kafka.group-id" value="1"/>
<property name="ervu-kafka.request-topic" value="ervu.organization.request"/>
<property name="client-cert-hash" value="04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD"/>
<property name="bpmn.enable" value="false"/>
</system-properties>
<management>
<audit-log>

View file

@ -33,7 +33,7 @@ export abstract class AuthGuard implements CanActivate {
else if (code) {
const params = new HttpParams().set('code', code);
this.httpClient.get<boolean>("esia/auth", {params: params}).toPromise().then(
() => window.open(url.origin, "_self"))
() => window.open(url.origin + url.pathname, "_self"))
.catch((reason) =>
console.error(reason)
);