From dea90c04eb17fb3ddc09ea8a06fa68b133c5885f Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 4 Feb 2022 17:37:13 +0000 Subject: [PATCH] Fixing an issue with user syncing on save to app DBs as well as fixing a problem with pretty app URLs not setting the app ID correctly into the context. --- .../src/api/controllers/static/index.js | 10 ++-- packages/server/src/api/controllers/user.js | 58 ++++++++++--------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js index cafe999150..82e66ab545 100644 --- a/packages/server/src/api/controllers/static/index.js +++ b/packages/server/src/api/controllers/static/index.js @@ -16,7 +16,7 @@ const { clientLibraryPath } = require("../../../utilities") const { upload } = require("../../../utilities/fileSystem") const { attachmentsRelativeURL } = require("../../../utilities") const { DocumentTypes } = require("../../../db/utils") -const { getAppDB } = require("@budibase/backend-core/context") +const { getAppDB, updateAppId } = require("@budibase/backend-core/context") const AWS = require("aws-sdk") const AWS_REGION = env.AWS_REGION ? env.AWS_REGION : "eu-west-1" @@ -49,11 +49,9 @@ async function getAppIdFromUrl(ctx) { a => a.url && a.url.toLowerCase() === possibleAppUrl )[0] - if (app && app.appId) { - return app.appId - } else { - return ctx.params.appId - } + const appId = app && app.appId ? app.appId : ctx.params.appId + updateAppId(appId) + return appId } exports.serveBuilder = async function (ctx) { diff --git a/packages/server/src/api/controllers/user.js b/packages/server/src/api/controllers/user.js index ca7ef24162..7d4ef65994 100644 --- a/packages/server/src/api/controllers/user.js +++ b/packages/server/src/api/controllers/user.js @@ -14,7 +14,7 @@ const { dbExists, } = require("@budibase/backend-core/db") const { UserStatus } = require("@budibase/backend-core/constants") -const { getAppDB } = require("@budibase/backend-core/context") +const { getAppDB, doInAppContext } = require("@budibase/backend-core/context") async function rawMetadata() { const db = getAppDB() @@ -105,34 +105,36 @@ exports.syncUser = async function (ctx) { if (!(await dbExists(appId))) { continue } - const db = getAppDB() - const metadataId = generateUserMetadataID(userId) - let metadata - try { - metadata = await db.get(metadataId) - } catch (err) { - if (deleting) { - continue - } - metadata = { - tableId: InternalTables.USER_METADATA, - } - } - // assign the roleId for the metadata doc - if (roleId) { - metadata.roleId = roleId - } - let combined = !deleting - ? combineMetadataAndUser(user, metadata) - : { - ...metadata, - status: UserStatus.INACTIVE, - metadata: BUILTIN_ROLE_IDS.PUBLIC, + await doInAppContext(appId, async () => { + const db = getAppDB() + const metadataId = generateUserMetadataID(userId) + let metadata + try { + metadata = await db.get(metadataId) + } catch (err) { + if (deleting) { + return } - // if its null then there was no updates required - if (combined) { - await db.put(combined) - } + metadata = { + tableId: InternalTables.USER_METADATA, + } + } + // assign the roleId for the metadata doc + if (roleId) { + metadata.roleId = roleId + } + let combined = !deleting + ? combineMetadataAndUser(user, metadata) + : { + ...metadata, + status: UserStatus.INACTIVE, + metadata: BUILTIN_ROLE_IDS.PUBLIC, + } + // if its null then there was no updates required + if (combined) { + await db.put(combined) + } + }) } } ctx.body = {