SUPPORT-8474: Fix
This commit is contained in:
parent
dd2ecba904
commit
abd8fc8841
5 changed files with 19 additions and 14 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue