From 9ed7447095ab09a153e892cc4710a0eb44cd334d Mon Sep 17 00:00:00 2001 From: Bright Date: Thu, 21 Nov 2024 17:05:01 +0700 Subject: [PATCH] update #802 --- src/controllers/UserController.ts | 135 +++++++++++++++--------------- 1 file changed, 69 insertions(+), 66 deletions(-) diff --git a/src/controllers/UserController.ts b/src/controllers/UserController.ts index dd99d62d..ab083d6a 100644 --- a/src/controllers/UserController.ts +++ b/src/controllers/UserController.ts @@ -99,66 +99,67 @@ export class KeycloakController extends Controller { const userId = await createUser(body.username, body.password, { firstName: body.firstName, lastName: body.lastName, - email: body.email, + // email: body.email, }); if (typeof userId !== "string") { throw new Error(userId.errorMessage); } - else { - const now = new Date().toISOString(); - const folderData: any = { - pathname: stripLeadingSlash(`${body.username.trim()}/`), - path: "", - name: body.username.trim(), - hidden: false, - permissionGroup: [], - permissionUser: [], - permissionOther: { - create: false, - read: false, - update: false, - delete: false, - perm: false, - }, - favourite: false, - color: "default", - type: "folder", - owner: body.username, - ownerId: userId, - createdAt: now, - createdBy: request.user.preferred_username, - createdByUserId: request.user.sub, - updatedAt: now, - updatedBy: request.user.preferred_username, - updatedByUserId: request.user.sub, - }; - const profile = await this.profileRepo.findOne({ - where: { - id: body.profileId, - }, - }); + const now = new Date().toISOString(); + const folderData: any = { + pathname: stripLeadingSlash(`${body.username.trim()}/`), + path: "", + name: body.username.trim(), + hidden: false, + permissionGroup: [], + permissionUser: [], + permissionOther: { + create: false, + read: false, + update: false, + delete: false, + perm: false, + }, + favourite: false, + color: "default", + type: "folder", + owner: body.username, + ownerId: userId, + createdAt: now, + createdBy: request.user.preferred_username, + createdByUserId: request.user.sub, + updatedAt: now, + updatedBy: request.user.preferred_username, + updatedByUserId: request.user.sub, + }; - if (profile) { - let _null: any = null; + const profile = await this.profileRepo.findOne({ + where: { + id: body.profileId, + }, + }); + + if (profile) { + let _null: any = null; + if (typeof userId === "string") { profile.keycloak = userId; - profile.email = body.email == null ? _null : body.email; - await this.profileRepo.save(profile); - if (body.roles != null && body.roles.length > 0) { - const roleKeycloak = await this.roleKeycloakRepo.find({ - where: { id: In(body.roles) }, - }); - const _profile = await this.profileRepo.findOne({ - where: { keycloak: userId }, - relations: ["roleKeycloaks"], - }); - if (_profile) { - _profile.roleKeycloaks = Array.from( - new Set([..._profile.roleKeycloaks, ...roleKeycloak]), - ); - this.profileRepo.save(_profile); - } + } + profile.email = body.email == null ? _null : body.email; + await this.profileRepo.save(profile); + if (body.roles != null && body.roles.length > 0) { + const roleKeycloak = await this.roleKeycloakRepo.find({ + where: { id: In(body.roles) }, + }); + const _profile = await this.profileRepo.findOne({ + where: { keycloak: userId }, + relations: ["roleKeycloaks"], + }); + if (_profile) { + _profile.roleKeycloaks = Array.from( + new Set([..._profile.roleKeycloaks, ...roleKeycloak]), + ); + this.profileRepo.save(_profile); } } } @@ -249,28 +250,30 @@ export class KeycloakController extends Controller { if (!result) { throw new Error("Failed. Cannot set user's role."); } - else { - const roleKeycloak = await this.roleKeycloakRepo.find({ - where: { id: In(body.role) }, - }); - const profile = await this.profileRepo.findOne({ + + const roleKeycloak = await this.roleKeycloakRepo.find({ + where: { id: In(body.role) }, + }); + const profile = await this.profileRepo.findOne({ + where: { keycloak: userId }, + relations: ["roleKeycloaks"], + }); + if (!profile) { + const profileEmp = await this.profileEmpRepo.findOne({ where: { keycloak: userId }, relations: ["roleKeycloaks"], }); - if (!profile) { - const profileEmp = await this.profileEmpRepo.findOne({ - where: { keycloak: userId }, - relations: ["roleKeycloaks"], - }); - if (!profileEmp) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); + // if (!profileEmp) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); + if(profileEmp) { profileEmp.roleKeycloaks = Array.from( new Set([...profileEmp.roleKeycloaks, ...roleKeycloak]), ); this.profileEmpRepo.save(profileEmp); - } else { - profile.roleKeycloaks = Array.from(new Set([...profile.roleKeycloaks, ...roleKeycloak])); - this.profileRepo.save(profile); } + } + else { + profile.roleKeycloaks = Array.from(new Set([...profile.roleKeycloaks, ...roleKeycloak])); + this.profileRepo.save(profile); } return new HttpSuccess();