diff --git a/frontend/src/ts/account_applications/component/button/UserManagementService.ts b/frontend/src/ts/account_applications/component/button/UserManagementService.ts index a88f6ef8..438ef204 100644 --- a/frontend/src/ts/account_applications/component/button/UserManagementService.ts +++ b/frontend/src/ts/account_applications/component/button/UserManagementService.ts @@ -29,6 +29,8 @@ import {ProcessRequest} from "./dto/ProcessRequest"; import {StatusUpdateService} from "../../../modules/app/service/status-update.service"; import {BlockedRegion} from "../../../generated/ru/micord/ervu/account_applications/enums/BlockedRegion"; import {ErvuPermission} from "../../../modules/app/enum/ErvuPermission"; +import {BlockingData} from "./dto/blocking/BlockingData"; +import {UnblockingData} from "./dto/blocking/UnblockingData"; @AnalyticalScope(SaveButton) export class UserManagementService extends Behavior { @@ -128,11 +130,33 @@ export class UserManagementService extends Behavior { }); break; case ApplicationKind.BLOCK_USER: - this.doBlockingRequest(accountId, personId, appNumber, true); + let blockingData = new BlockingData(); + blockingData.accountIdList = [accountId]; + request = new ProcessRequest(); + request.data = blockingData; + request.processKey = ProcessKey.BLOCK; + this.doRequest(request, appNumber); break; case ApplicationKind.UNBLOCK_USER: - this.doBlockingRequest(accountId, personId, appNumber, false, - formJson['blockedRegion']); + let unblockingData = new UnblockingData(); + let blockedRegion = formJson['blockedRegion']; + + switch (blockedRegion) { + case BlockedRegion.ACCOUNT: + unblockingData.accountIdList = [accountId]; + break; + case BlockedRegion.PERSON: + unblockingData.personIdList = [personId]; + break; + case BlockedRegion.BOTH: + unblockingData.accountIdList = [accountId]; + unblockingData.personIdList = [personId]; + break; + } + request = new ProcessRequest(); + request.data = unblockingData; + request.processKey = ProcessKey.UNBLOCK; + this.doRequest(request, appNumber); break; case ApplicationKind.RESET_PASSWORD: let resetPasswordAccount = new ResetPasswordAccount(); @@ -176,6 +200,7 @@ export class UserManagementService extends Behavior { private doRequest(request: any, appNumber: number): void { const url = window.location.origin + UserManagementService.PROCESS_START_PATH; request.userId = this.authService.getUserId(); + request.data.applicationNumber = appNumber; this.httpClient.post(url, request).toPromise() .then((response: ProcessResponse) => { let code = response.code; @@ -196,45 +221,6 @@ export class UserManagementService extends Behavior { }); } - private doBlockingRequest(accountId: string, personId: string, appNumber: number, block: boolean, - blockedRegion?: string): void { - let ids; - let path; - - if (!block && blockedRegion != BlockedRegion.ACCOUNT) { - ids = [personId]; - path = UserManagementService.PERSON_BLOCK_PATH; - } - else { - ids = [accountId]; - path = UserManagementService.ACCOUNT_BLOCK_PATH; - } - const url = window.location.origin + path; - let method = block ? 'delete' : 'post'; - this.httpClient.request(method, url, { body: ids, observe: 'response' }).toPromise() - .then((response: any) => { - if (response.ok) { - if (blockedRegion == BlockedRegion.BOTH) { - this.doBlockingRequest(accountId, personId, appNumber, block, BlockedRegion.ACCOUNT); - } - else { - this.rpc.saveAcceptedStatus(appNumber) - .then(() => this.statusUpdateService.publishStatus(appNumber, true)) - .catch(err => console.log('failed to update application status', err)); - } - } - else { - let reason = response.body ? 'Reason: ' + response.body.toString() : ''; - let errorMsg = `Failed to execute blocking request. Http status: ${response.status}. ${reason}`; - this.saveError(appNumber, errorMsg); - } - }) - .catch(reason => { - console.error("Error while executing request:", reason.toString()); - this.saveError(appNumber, reason.toString()); - }); - } - private saveError(appNumber: number, errorMsg: string): void { this.rpc.saveError(appNumber, errorMsg) .then(() => this.statusUpdateService.publishStatus(appNumber, false)) diff --git a/frontend/src/ts/account_applications/component/button/dto/Account.ts b/frontend/src/ts/account_applications/component/button/dto/Account.ts index 184b8753..39cdc57d 100644 --- a/frontend/src/ts/account_applications/component/button/dto/Account.ts +++ b/frontend/src/ts/account_applications/component/button/dto/Account.ts @@ -4,5 +4,6 @@ export class Account { public idDomain: string = ""; public finish: string = null; public sessionsLimit: number = 0; + public sessionContinuous: boolean = false; public idPerson: string = ""; } diff --git a/frontend/src/ts/account_applications/component/button/dto/Data.ts b/frontend/src/ts/account_applications/component/button/dto/Data.ts index f58ac60f..43cf17a3 100644 --- a/frontend/src/ts/account_applications/component/button/dto/Data.ts +++ b/frontend/src/ts/account_applications/component/button/dto/Data.ts @@ -1,3 +1,4 @@ export abstract class Data { view: string = "Сотрудники и роли"; -} \ No newline at end of file + applicationNumber: string; +} diff --git a/frontend/src/ts/account_applications/component/button/dto/Person.ts b/frontend/src/ts/account_applications/component/button/dto/Person.ts index 280e0b74..166694b2 100644 --- a/frontend/src/ts/account_applications/component/button/dto/Person.ts +++ b/frontend/src/ts/account_applications/component/button/dto/Person.ts @@ -5,4 +5,5 @@ export class Person { public firstName: string = ""; public middleName: string = ""; public secondFactorEnabled: boolean = false; + public ipAddresses: string[] = []; } diff --git a/frontend/src/ts/account_applications/component/button/dto/blocking/BlockingData.ts b/frontend/src/ts/account_applications/component/button/dto/blocking/BlockingData.ts new file mode 100644 index 00000000..ff444085 --- /dev/null +++ b/frontend/src/ts/account_applications/component/button/dto/blocking/BlockingData.ts @@ -0,0 +1,5 @@ +import {Data} from "../Data"; + +export class BlockingData extends Data { + public accountIdList: string[]; +} diff --git a/frontend/src/ts/account_applications/component/button/dto/blocking/UnblockingData.ts b/frontend/src/ts/account_applications/component/button/dto/blocking/UnblockingData.ts new file mode 100644 index 00000000..d68a8b69 --- /dev/null +++ b/frontend/src/ts/account_applications/component/button/dto/blocking/UnblockingData.ts @@ -0,0 +1,6 @@ +import {Data} from "../Data"; + +export class UnblockingData extends Data { + public accountIdList: string[] = []; + public personIdList: string[] = []; +} diff --git a/frontend/src/ts/account_applications/component/enum/ProcessKey.ts b/frontend/src/ts/account_applications/component/enum/ProcessKey.ts index 8d21ee32..cb27a2aa 100644 --- a/frontend/src/ts/account_applications/component/enum/ProcessKey.ts +++ b/frontend/src/ts/account_applications/component/enum/ProcessKey.ts @@ -3,7 +3,7 @@ export enum ProcessKey { EDIT_PERSON = "milBaseEditAccountPersonIDMProcess", EDIT_ACCOUNT = "milBaseEditAccountIDMProcess", EDIT_ROLES = "milBaseEditAccountRolesIDMSubProcess", - DEACTIVATE = "milBaseMassDeActivateAccountIDMProcess", - ACTIVATE = "milBaseMassActivateAccountIDMProcess", + BLOCK = "milBaseBlockAccountIDMProcess", + UNBLOCK = "milBaseUnlockIDMProcess", RESET_PASSWORD = "milBaseResetPasswordProcess" } diff --git a/frontend/src/ts/modules/app/service/authorization.service.ts b/frontend/src/ts/modules/app/service/authorization.service.ts index 110e8b65..0f9b428c 100644 --- a/frontend/src/ts/modules/app/service/authorization.service.ts +++ b/frontend/src/ts/modules/app/service/authorization.service.ts @@ -3,7 +3,7 @@ import {Subject} from "rxjs"; import {HttpClient} from "@angular/common/http"; import {WebsocketService} from "../websocket/websocket.service"; import {StatusUpdateService} from "./status-update.service"; -import {ErvuPermission} from "../enum/ErvuRole"; +import {ErvuPermission} from "../enum/ErvuPermission"; export interface UserSession { userId: string,