From 08706f57ed4c400aa49c7bc3c500cc2c3d690eae Mon Sep 17 00:00:00 2001 From: Bright Date: Mon, 28 Oct 2024 20:59:31 +0700 Subject: [PATCH] =?UTF-8?q?create=20user=20keycloak=20=E0=B9=80=E0=B8=A1?= =?UTF-8?q?=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=81=E0=B8=A5=E0=B8=B1=E0=B8=9A?= =?UTF-8?q?=E0=B9=80=E0=B8=82=E0=B9=89=E0=B8=B2=E0=B8=A3=E0=B8=B1=E0=B8=9A?= =?UTF-8?q?=E0=B8=A3=E0=B8=B2=E0=B8=8A=E0=B8=81=E0=B8=B2=E0=B8=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/CommandController.ts | 25 +++++++++++++++++++++++++ src/interfaces/utils.ts | 14 ++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index 033e9133..e836ad41 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -39,6 +39,7 @@ import { commandTypePath, removeProfileInOrganize, setLogDataDiff, + checkReturnCommandType, checkExceptCommandType, checkCommandType, } from "../interfaces/utils"; @@ -1838,6 +1839,30 @@ export class CommandController extends Controller { profile.posTypeId = _null; profile.posLevelId = _null; } + const returnWork = await checkReturnCommandType(String(item.commandId)); + if(returnWork && item.isGovernment) { + const userKeycloakId = await createUser(profile.citizenId, profile.citizenId, { + firstName: profile.firstName, + lastName: profile.lastName, + }); + if (typeof userKeycloakId !== "string") { + throw new Error(userKeycloakId.errorMessage); + } + const list = await getRoles(); + if (!Array.isArray(list)) + throw new Error("Failed. Cannot get role(s) data from the server."); + const result = await addUserRoles( + userKeycloakId, + list + .filter((v) => v.name === "USER") + .map((x) => ({ + id: x.id, + name: x.name, + })), + ); + if (!result) throw new Error("Failed. Cannot set user's role."); + profile.keycloak = userKeycloakId; + } await this.profileRepository.save(profile); }), ); diff --git a/src/interfaces/utils.ts b/src/interfaces/utils.ts index 1c31504c..91070e1d 100644 --- a/src/interfaces/utils.ts +++ b/src/interfaces/utils.ts @@ -175,6 +175,20 @@ export async function removeProfileInOrganize(profileId: string, type: string) { } } +export async function checkReturnCommandType(commandId: string) { + const commandRepository = AppDataSource.getRepository(Command); + const _type = await commandRepository.findOne({ + where: { + id: commandId + }, + relations: ["commandType"], + }); + if (!["C-PM-08", "C-PM-09"].includes(String(_type?.commandType.code))) { + return false; + } + return true; +} + export async function checkExceptCommandType(commandId: string) { const commandRepository = AppDataSource.getRepository(Command); const _type = await commandRepository.findOne({