diff --git a/backend/src/main/java/esia/model/OrgInfoModel.java b/backend/src/main/java/esia/model/OrgInfoModel.java index e665faf9..4de446ef 100644 --- a/backend/src/main/java/esia/model/OrgInfoModel.java +++ b/backend/src/main/java/esia/model/OrgInfoModel.java @@ -22,4 +22,5 @@ public class OrgInfoModel { public String empPosition; public String mobile; public String email; + public String userRoles; } diff --git a/backend/src/main/java/esia/service/EsiaDataService.java b/backend/src/main/java/esia/service/EsiaDataService.java index 7c27b268..5d6ca0f2 100644 --- a/backend/src/main/java/esia/service/EsiaDataService.java +++ b/backend/src/main/java/esia/service/EsiaDataService.java @@ -5,10 +5,8 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import esia.model.*; -import org.bouncycastle.asn1.x509.sigi.PersonalData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestMapping; /** * @author Eduard Tihomirov @@ -64,6 +62,7 @@ public class EsiaDataService { } } ); } + orgInfoModel.userRoles = ulDataService.getAllUserRoles(accessToken); return orgInfoModel; } diff --git a/backend/src/main/java/esia/service/UlDataService.java b/backend/src/main/java/esia/service/UlDataService.java index cdb87939..3b384d32 100644 --- a/backend/src/main/java/esia/service/UlDataService.java +++ b/backend/src/main/java/esia/service/UlDataService.java @@ -23,4 +23,6 @@ public interface UlDataService { PersonModel getPersonData(String prnsId, String accessToken); EsiaAccessToken readToken(String accessToken); + + String getAllUserRoles(String accessToken); } diff --git a/backend/src/main/java/esia/service/UlDataServiceImpl.java b/backend/src/main/java/esia/service/UlDataServiceImpl.java index 11b9c483..487adaf8 100644 --- a/backend/src/main/java/esia/service/UlDataServiceImpl.java +++ b/backend/src/main/java/esia/service/UlDataServiceImpl.java @@ -9,6 +9,7 @@ import java.util.Arrays; import java.util.Base64; import java.util.Optional; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import esia.config.EsiaConfig; import esia.model.*; @@ -220,4 +221,37 @@ public class UlDataServiceImpl implements UlDataService { throw new RuntimeException(e); } } + + @Override + public String getAllUserRoles(String accessToken) { + try { + EsiaAccessToken esiaAccessToken = readToken(accessToken); + String scope = esiaAccessToken.getScope(); + String orgOid = scope.substring(scope.indexOf('=') + 1, scope.indexOf(' ')); + String prnsId = esiaAccessToken.getSbj_id(); + String url = esiaConfig.getEsiaBaseUri() + "rs/orgs/" + orgOid + "/emps/" + prnsId + "/grps?embed=(elements)"; + HttpRequest getReq = HttpRequest.newBuilder(URI.create(url)) + .header(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded") + .header("Authorization", "Bearer ".concat(accessToken)) + .GET() + .timeout(Duration.ofSeconds(60)) + .build(); + HttpResponse getResp = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(30)) + .build() + .send(getReq, HttpResponse.BodyHandlers.ofString()); + errorHandler(getResp); + JsonNode rootNode = objectMapper.readTree(getResp.body()); + JsonNode elementsNode = rootNode.path("elements"); + StringBuilder names = new StringBuilder(); + for (JsonNode element : elementsNode) { + String name = element.path("name").asText(); + names.append(name).append("\n"); + } + return names.toString(); + } + catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/frontend/src/ts/esia/OrgDataRoot.ts b/frontend/src/ts/esia/OrgDataRoot.ts index 93229ac4..9e8f54aa 100644 --- a/frontend/src/ts/esia/OrgDataRoot.ts +++ b/frontend/src/ts/esia/OrgDataRoot.ts @@ -85,6 +85,11 @@ export class OrgDataRoot extends Behavior{ 'component.ControlWithValue'); control.setValue(orgInfoModel.email) } + else if (orgData.dataId == 'userRoles') { + let control: ControlWithValue = orgData.getScriptInObject(orgData.getObjectId(), + 'component.ControlWithValue'); + control.setValue(orgInfoModel.userRoles) + } } }); diff --git a/frontend/src/ts/modules/app/component/logout.component.ts b/frontend/src/ts/modules/app/component/logout.component.ts index 5e8516d5..def11d7e 100644 --- a/frontend/src/ts/modules/app/component/logout.component.ts +++ b/frontend/src/ts/modules/app/component/logout.component.ts @@ -32,7 +32,7 @@ export class LogOutComponent { } public logout(): void { - this.cookieService.remove("isAuth"); + this.cookieService.remove("is_auth"); this.router.navigateByUrl("/"); } @@ -41,7 +41,7 @@ export class LogOutComponent { } public getIsAuth(): boolean { - return this.cookieService.get("isAuth") != null; + return this.cookieService.get("is_auth") != null; } public getOrgUnitName(): string { diff --git a/resources/src/main/resources/business-model/Информация об организации.page b/resources/src/main/resources/business-model/Информация об организации.page index 68cd9814..54c97b48 100644 --- a/resources/src/main/resources/business-model/Информация об организации.page +++ b/resources/src/main/resources/business-model/Информация об организации.page @@ -323,117 +323,62 @@ - - 16071adb-3bdf-4c33-b29b-886876016415 - 5e633339-5878-4b19-9f56-8b97b5f0f5aa - Таблица - true + + ba24d307-0b91-4299-ba82-9d0b52384ff2 + 9d823f8b-f6c0-4767-a262-717d2d80f69f + Роли пользователя + false + false false - + - - autoStretchColumns - - true - - cssClasses - + - "okved-list" - - - - - "mute" + "font-bold" - disabled - - true - - - - rowClickSelectionType + initialValue null - + + + + +false + + + + OrgData + esia + +true +true - gridService + dataId - - - loadDao - - - -graph - - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"org_okved","schemaName":"public","x":387.20000000000005,"y":282.4,"alias":"org_okved","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"public","table":"org_okved","entity":"org_okved","name":"code"},"operation":"EQUAL","typeCode":"CONST","values":["\"5\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"org_okved","schemaName":"public","x":387.20000000000005,"y":282.4,"alias":"org_okved","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"public","table":"org_okved","entity":"org_okved","name":"code"},"operation":"EQUAL","typeCode":"CONST","values":["\"5\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"org_okved":{"tableName":"org_okved","schemaName":"public","x":387.20000000000005,"y":282.4,"alias":"org_okved","conditionGroup":{"operator":"AND","conditions":[{"column":{"schema":"public","table":"org_okved","entity":"org_okved","name":"code"},"operation":"EQUAL","typeCode":"CONST","values":["\"5\""]}],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} - - - - - - + "userRoles" - - -364c8faa-5e56-46cd-9203-d2ec6ef2dc74 -2d713b90-9e5a-428c-a40f-b3d164790032 -Столбец -false -false - - - - - disableHiding - - true - - - - displayColumns - - - - - - - displayPopup - - false - - - - displayType - - "ONE_COLUMN" - - - - field - - {"schema":"public","table":"org_okved","entity":"org_okved","name":"okved"} - - - - - + + + 16071adb-3bdf-4c33-b29b-886876016415 + 5e633339-5878-4b19-9f56-8b97b5f0f5aa + Таблица + true + true ba24d307-0b91-4299-ba82-9d0b52384ff2