From 7e6855262b654e6b89c3412f235cde4a738dd71f Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 13 Apr 2021 15:27:47 +0100 Subject: [PATCH] Fixing some issues with the ctx.user, this was previously filled in by the old auth middleware. --- packages/server/src/api/controllers/application.js | 1 - packages/server/src/api/controllers/auth.js | 3 ++- packages/server/src/api/controllers/static/index.js | 9 ++++++--- packages/server/src/middleware/currentapp.js | 6 ++++++ packages/server/src/middleware/tests/currentapp.spec.js | 1 + 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js index 14cd5586c6..beb1dedf47 100644 --- a/packages/server/src/api/controllers/application.js +++ b/packages/server/src/api/controllers/application.js @@ -159,7 +159,6 @@ exports.create = async function(ctx) { const url = await getAppUrlIfNotInUse(ctx) const appId = instance._id - const version = packageJson.version const newApplication = { _id: appId, type: "app", diff --git a/packages/server/src/api/controllers/auth.js b/packages/server/src/api/controllers/auth.js index f62afdf185..80005813ea 100644 --- a/packages/server/src/api/controllers/auth.js +++ b/packages/server/src/api/controllers/auth.js @@ -71,7 +71,8 @@ exports.authenticate = async ctx => { } exports.fetchSelf = async ctx => { - const { userId, appId } = ctx.user + const appId = ctx.appId + const { userId } = ctx.user /* istanbul ignore next */ if (!userId) { ctx.body = {} diff --git a/packages/server/src/api/controllers/static/index.js b/packages/server/src/api/controllers/static/index.js index d503d5dd2f..6470cdbaa4 100644 --- a/packages/server/src/api/controllers/static/index.js +++ b/packages/server/src/api/controllers/static/index.js @@ -106,15 +106,18 @@ exports.serveComponentLibrary = async function(ctx) { ) return send(ctx, "/awsDeploy.js", { root: componentLibraryPath }) } + const db = new CouchDB(appId) + const appInfo = await db.get(appId) + let componentLib = "componentlibrary" - if (ctx.user.version) { - componentLib += `-${ctx.user.version}` + if (appInfo && appInfo.version) { + componentLib += `-${appInfo.version}` } else { componentLib += `-${COMP_LIB_BASE_APP_VERSION}` } const S3_URL = encodeURI( join( - objectStoreUrl(appId), + objectStoreUrl(), componentLib, ctx.query.library, "dist", diff --git a/packages/server/src/middleware/currentapp.js b/packages/server/src/middleware/currentapp.js index 63470b9e27..ba1b94559c 100644 --- a/packages/server/src/middleware/currentapp.js +++ b/packages/server/src/middleware/currentapp.js @@ -1,5 +1,6 @@ const { getAppId, setCookie, getCookie, Cookies } = require("@budibase/auth") const { getRole } = require("../utilities/security/roles") +const { generateUserMetadataID } = require("../db/utils") const { getGlobalUsers } = require("../utilities/workerRequests") const { BUILTIN_ROLE_IDS } = require("../utilities/security/roles") @@ -35,9 +36,14 @@ module.exports = async (ctx, next) => { if (appId) { ctx.appId = appId if (roleId) { + const userId = ctx.user + ? generateUserMetadataID(ctx.user.email) + : undefined ctx.roleId = roleId ctx.user = { ...ctx.user, + _id: userId, + userId, role: await getRole(appId, roleId), } } diff --git a/packages/server/src/middleware/tests/currentapp.spec.js b/packages/server/src/middleware/tests/currentapp.spec.js index 9e7c1e20e4..44c1c6b7ad 100644 --- a/packages/server/src/middleware/tests/currentapp.spec.js +++ b/packages/server/src/middleware/tests/currentapp.spec.js @@ -109,6 +109,7 @@ describe("Current app middleware", () => { expect(cookieFn).not.toHaveBeenCalled() } expect(config.ctx.roleId).toEqual("BASIC") + expect(config.ctx.user.role._id).toEqual("BASIC") expect(config.ctx.appId).toEqual("app_test") expect(config.next).toHaveBeenCalled() }