diff --git a/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte index 477083f822..b0ab9edd04 100644 --- a/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte @@ -150,13 +150,10 @@ } const sortInviteRoles = (a, b) => { - const aEmpty = - !a.info?.appBuilders?.length && Object.keys(a.info.apps).length === 0 - const bEmpty = - !b.info?.appBuilders?.length && Object.keys(b.info.apps).length === 0 + const aAppsEmpty = !a.info?.apps?.length && !a.info?.builder?.apps?.length + const bAppsEmpty = !b.info?.apps?.length && !b.info?.builder?.apps?.length - if (aEmpty && !bEmpty) return 1 - if (!aEmpty && bEmpty) return -1 + return aAppsEmpty && !bAppsEmpty ? 1 : !aAppsEmpty && bAppsEmpty ? -1 : 0 } const sortRoles = (a, b) => { @@ -366,14 +363,14 @@ const payload = [ { email: newUserEmail, - builder: creationRoleType === Constants.BudibaseRoles.Admin, - admin: creationRoleType === Constants.BudibaseRoles.Admin, + builder: { global: creationRoleType === Constants.BudibaseRoles.Admin }, + admin: { global: creationRoleType === Constants.BudibaseRoles.Admin }, }, ] if (creationRoleType !== Constants.BudibaseRoles.Admin) { if (creationAccessType === Constants.Roles.CREATOR) { - payload[0].appBuilders = [prodAppId] + payload[0].builder.apps = [prodAppId] } else { payload[0].apps = { [prodAppId]: creationAccessType, @@ -441,10 +438,11 @@ } if (role === Constants.Roles.CREATOR) { - updateBody.appBuilders = [...(updateBody.appBuilders ?? []), prodAppId] + updateBody.builder = updateBody.builder || {} + updateBody.builder.apps = [...(updateBody.builder.apps ?? []), prodAppId] delete updateBody?.apps?.[prodAppId] - } else if (role !== Constants.Roles.CREATOR && invite?.appBuilders) { - invite.appBuilders = [] + } else if (role !== Constants.Roles.CREATOR && invite?.builder?.apps) { + invite.builder.apps = [] } await users.updateInvite(updateBody) await filterInvites(query) @@ -502,7 +500,7 @@ return Constants.Roles.ADMIN } - if (invite.info?.appBuilders?.includes(prodAppId)) { + if (invite.info?.builder?.apps?.includes(prodAppId)) { return Constants.Roles.CREATOR } @@ -546,7 +544,9 @@ {invitingFlow ? "Invite new user" : "Users"}
- + {#if !invitingFlow} + + {/if} ({ body: { email, userInfo: { - admin: admin ? { global: true } : undefined, - builder: builder ? { global: true } : undefined, + admin: admin?.global ? { global: true } : undefined, + builder: builder?.global ? { global: true } : undefined, apps: apps ? apps : undefined, }, }, @@ -153,20 +153,16 @@ export const buildUserEndpoints = API => ({ }, onboardUsers: async payload => { - console.log(payload) return await API.post({ url: "/api/global/users/onboard", body: payload.map(invite => { - const { email, admin, builder, apps, appBuilders } = invite - console.log(admin) - console.log(builder) + const { email, admin, builder, apps } = invite return { email, userInfo: { - admin: admin ? { global: true } : undefined, - builder: builder ? { global: true } : undefined, + admin, + builder, apps: apps ? apps : undefined, - appBuilders, }, } }), @@ -179,12 +175,11 @@ export const buildUserEndpoints = API => ({ * @param invite the invite code sent in the email */ updateUserInvite: async invite => { - console.log(invite) await API.post({ url: `/api/global/users/invite/update/${invite.code}`, body: { apps: invite.apps, - appBuilders: invite.appBuilders, + builder: invite.builder, }, }) }, diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index eb14c13119..a084685dd3 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -266,19 +266,14 @@ export const onboardUsers = async (ctx: Ctx) => { // Temp password to be passed to the user. createdPasswords[invite.email] = password - let builder: { global: boolean; apps?: string[] } = { - global: invite.userInfo.builder || false, - } - if (invite.userInfo.appBuilders) { - builder.apps = invite.userInfo.appBuilders - } + return { email: invite.email, password, forceResetPassword: true, roles: invite.userInfo.apps, - admin: { global: invite.userInfo.admin || false }, - builder, + admin: invite.userInfo.admin, + builder: invite.userInfo.builder, tenantId: tenancy.getTenantId(), } }) @@ -373,13 +368,10 @@ export const updateInvite = async (ctx: any) => { ...invite, } - if (!updateBody?.appBuilders || !updateBody.appBuilders?.length) { - updated.info.appBuilders = [] - } else { - updated.info.appBuilders = [ - ...(invite.info.appBuilders ?? []), - ...updateBody.appBuilders, - ] + if (!updateBody?.builder?.apps && updated.info?.builder?.apps) { + updated.info.builder.apps = [] + } else if (updateBody?.builder) { + updated.info.builder = updateBody.builder } if (!updateBody?.apps || !Object.keys(updateBody?.apps).length) { @@ -411,18 +403,18 @@ export const inviteAccept = async ( lastName, password, email, - admin: { global: info.admin || false }, + admin: { global: info.admin.global || false }, roles: info.apps, tenantId: info.tenantId, } let builder: { global: boolean; apps?: string[] } = { - global: info.builder || false, + global: info.builder.global || false, } - if (info.appBuilders) { - builder.apps = info.appBuilders + if (info.builder.apps) { + builder.apps = info.builder.apps request.builder = builder - delete info.appBuilders + delete info.builder.apps } delete info.apps request = {