From 2e7246cca781cafc0505e3bfc28de6ca6b873a94 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Wed, 17 Jul 2024 11:11:24 +0530 Subject: [PATCH] bulk upload user fix --- .../src/ManageOrgUsers/ManageOrgUsers.jsx | 31 ++++++++++++++----- .../group-permissions.utility.service.ts | 4 --- server/src/services/organizations.service.ts | 23 +++++++------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx index ac093d3c43..7eed8c4e27 100644 --- a/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx +++ b/frontend/src/ManageOrgUsers/ManageOrgUsers.jsx @@ -175,6 +175,17 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { + if (error?.error) { + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); + this.setState({ creatingUser: false }); + return; + } toast.error(error, { position: 'top-center', style: { @@ -246,14 +257,18 @@ class ManageOrgUsersComponent extends React.Component { }); }) .catch(({ error }) => { - this.setState({ - showErrorModal: true, - errorModalMessage: error.error, - errorTitle: error?.title || 'Conflicting permissions', - errorItemList: error?.data, - errorIconName: 'usergear', - }); - this.setState({ creatingUser: false }); + if (error?.error) { + this.setState({ + showErrorModal: true, + errorModalMessage: error.error, + errorTitle: error?.title || 'Conflicting permissions', + errorItemList: error?.data, + errorIconName: 'usergear', + }); + this.setState({ creatingUser: false }); + return; + } + toast.error(error); }); } else { this.setState({ creatingUser: false, file: null, isInviteUsersDrawerOpen: true }); diff --git a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts index d88d9e44bf..f31ae576e5 100644 --- a/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts +++ b/server/src/modules/user_resource_permissions/services/group-permissions.utility.service.ts @@ -103,15 +103,11 @@ export class GroupPermissionsUtilityService { const { organizationId, userId, groupsToAddIds } = functionParam; return await dbTransactionWrap(async (manager: EntityManager) => { const userRole = await this.getUserRole(userId, organizationId, manager); - console.log('this is running'); - if (userRole.name === USER_ROLE.END_USER) { return await Promise.all( groupsToAddIds.map(async (id) => { const group = await manager.findOne(GroupPermissions, id); const isEditableGroup = await this.isEditableGroup(group, manager); - console.log(isEditableGroup); - if (isEditableGroup) { throw new BadRequestException({ message: { diff --git a/server/src/services/organizations.service.ts b/server/src/services/organizations.service.ts index bb730e71c7..72680fd777 100644 --- a/server/src/services/organizations.service.ts +++ b/server/src/services/organizations.service.ts @@ -571,6 +571,10 @@ export class OrganizationsService { email: inviteNewUserDto.email, ...getUserStatusAndSource(lifecycleEvents.USER_INVITE), }; + console.log('user is'); + + console.log(inviteNewUserDto); + const groups = inviteNewUserDto?.groups; const role = inviteNewUserDto.role; return await dbTransactionWrap(async (manager: EntityManager) => { @@ -634,8 +638,10 @@ export class OrganizationsService { true, manager ); + console.log('good till here'); await this.usersService.attachUserGroup(groups, currentOrganization.id, user.id, manager); + console.log('not good till here'); const name = fullName(currentUser.firstName, currentUser.lastName); if (shouldSendWelcomeMail) { this.emailService @@ -696,7 +702,7 @@ export class OrganizationsService { const archivedUsers = []; const invalidRows = []; const invalidFields = new Set(); - const invalidGroups = []; + let invalidGroups = []; const emailPattern = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i; const manager = getManager(); const invalidRoles = []; @@ -710,9 +716,12 @@ export class OrganizationsService { ignoreEmpty: true, }) .transform((row: UserCsvRow, next) => { + const groupNames = this.createGroupsList(row?.groups); + invalidGroups = [...invalidGroups, ...groupNames.filter((group) => !existingGroups.includes(group))]; + const groups = groupPermissions.filter((group) => groupNames.includes(group.name)).map((group) => group.id); return next(null, { ...row, - groups: this.createGroupsList(row?.groups), + groups: groups, user_role: this.convertUserRolesCasing(row?.user_role), }); }) @@ -720,6 +729,7 @@ export class OrganizationsService { await dbTransactionWrap(async (manager: EntityManager) => { //Check for existing users let isInvalidRole = false; + const user = await this.usersService.findByEmail(data?.email, undefined, undefined, manager); if (user?.status === USER_STATUS.ARCHIVED) { @@ -738,15 +748,6 @@ export class OrganizationsService { } //Check for invalid groups - const receivedGroups: string[] | null = data?.groups.length ? data?.groups : null; - - if (Array.isArray(receivedGroups)) { - for (const group of receivedGroups) { - if (existingGroups.indexOf(group) === -1) { - invalidGroups.push(group); - } - } - } if (!Object.values(USER_ROLE).includes(data?.user_role as USER_ROLE)) { invalidRoles.push(data?.user_role);