From ea5e5644284ef94243144f0f31f4f1c430d8dd8d Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 7 Mar 2023 09:45:39 +0000 Subject: [PATCH 1/4] fix tenant filtering issue --- packages/frontend-core/src/api/user.js | 3 +-- packages/worker/src/utilities/redis.ts | 9 +-------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/packages/frontend-core/src/api/user.js b/packages/frontend-core/src/api/user.js index cb8a8f6555..d8723a649c 100644 --- a/packages/frontend-core/src/api/user.js +++ b/packages/frontend-core/src/api/user.js @@ -194,8 +194,7 @@ export const buildUserEndpoints = API => ({ }, /** - * Retrieves the invitation associated with a provided code. - * @param code The unique code for the target invite + * Retrieves all user invitations for the current tenant. */ getUserInvites: async () => { return await API.get({ diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index 7b3f251c0e..ecafee649b 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -142,12 +142,5 @@ export async function getInviteCodes(tenantIds?: string[]) { code: invite.key, } }) - return results.reduce((acc, invite) => { - if (tenantIds?.length && tenantIds.includes(invite.info.tenantId)) { - acc.push(invite) - } else { - acc.push(invite) - } - return acc - }, []) + return results.filter(invite => tenantIds?.length && tenantIds.includes(invite.info.tenantId)) } From b839eafbe390db9597c2f3766f4f31bd820bf2ef Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 7 Mar 2023 09:49:58 +0000 Subject: [PATCH 2/4] return all when in single tenant env --- packages/worker/src/utilities/redis.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index ecafee649b..fe9991f0a2 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -1,4 +1,5 @@ import { redis, utils } from "@budibase/backend-core" +import env from "../environment" function getExpirySecondsForDB(db: string) { switch (db) { @@ -142,5 +143,8 @@ export async function getInviteCodes(tenantIds?: string[]) { code: invite.key, } }) + if (!env.MULTI_TENANCY) { + return results + } return results.filter(invite => tenantIds?.length && tenantIds.includes(invite.info.tenantId)) } From fd8488d4d35a9e4578d74de7d12e6126606a1866 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 7 Mar 2023 09:56:12 +0000 Subject: [PATCH 3/4] remove array of tenantIds --- packages/worker/src/api/controllers/global/users.ts | 2 +- packages/worker/src/utilities/redis.ts | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index d68e726e71..921f99fa31 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -341,7 +341,7 @@ export const getUserInvites = async (ctx: any) => { let invites try { // Restricted to the currently authenticated tenant - invites = await getInviteCodes([ctx.user.tenantId]) + invites = await getInviteCodes() } catch (e) { ctx.throw(400, "There was a problem fetching invites") } diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index fe9991f0a2..7ebe858ade 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -1,4 +1,5 @@ import { redis, utils } from "@budibase/backend-core" +import { getTenantId } from "@budibase/backend-core/src/context" import env from "../environment" function getExpirySecondsForDB(db: string) { @@ -130,10 +131,9 @@ export async function checkInviteCode( } /** - Get all currently available user invitations. - @return {Object[]} A list of all objects containing invite metadata + Get all currently available user invitations for the current tenant. **/ -export async function getInviteCodes(tenantIds?: string[]) { +export async function getInviteCodes() { const client = await getClient(redis.utils.Databases.INVITATIONS) const invites: any[] = await client.scan() @@ -146,5 +146,6 @@ export async function getInviteCodes(tenantIds?: string[]) { if (!env.MULTI_TENANCY) { return results } - return results.filter(invite => tenantIds?.length && tenantIds.includes(invite.info.tenantId)) + const tenantId = getTenantId() + return results.filter(invite => tenantId === invite.info.tenantId) } From 63e7d9d97e29065e18c5646d2536b2c8e98fc69b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 7 Mar 2023 10:01:19 +0000 Subject: [PATCH 4/4] update imports --- packages/worker/src/utilities/redis.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index 7ebe858ade..d77e44cd9f 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -1,5 +1,4 @@ -import { redis, utils } from "@budibase/backend-core" -import { getTenantId } from "@budibase/backend-core/src/context" +import { redis, utils, tenancy } from "@budibase/backend-core" import env from "../environment" function getExpirySecondsForDB(db: string) { @@ -146,6 +145,6 @@ export async function getInviteCodes() { if (!env.MULTI_TENANCY) { return results } - const tenantId = getTenantId() + const tenantId = tenancy.getTenantId() return results.filter(invite => tenantId === invite.info.tenantId) }