diff --git a/packages/builder/src/dataBinding.js b/packages/builder/src/dataBinding.js index 64257e7a7b..6defe94108 100644 --- a/packages/builder/src/dataBinding.js +++ b/packages/builder/src/dataBinding.js @@ -30,6 +30,7 @@ import ActionDefinitions from "components/design/settings/controls/ButtonActionE import { environment, licensing } from "stores/portal" import { convertOldFieldFormat } from "components/design/settings/controls/FieldConfiguration/utils" import { FIELDS } from "constants/backend" +import { FieldType } from "@budibase/types" const { ContextScopes } = Constants @@ -555,6 +556,9 @@ const getComponentBindingCategory = (component, context, def) => { export const getUserBindings = () => { let bindings = [] const { schema } = getSchemaForDatasourcePlus(TableNames.USERS) + // add props that are not in the user metadata table schema + // but will be there for logged-in user + schema["globalId"] = { type: FieldType.STRING } const keys = Object.keys(schema).sort() const safeUser = makePropSafe("user") diff --git a/packages/server/src/api/controllers/auth.ts b/packages/server/src/api/controllers/auth.ts index 9b1b78ed9e..4ff592534d 100644 --- a/packages/server/src/api/controllers/auth.ts +++ b/packages/server/src/api/controllers/auth.ts @@ -1,7 +1,7 @@ import { outputProcessing } from "../../utilities/rowProcessor" import { InternalTables } from "../../db/utils" import { getFullUser } from "../../utilities/users" -import { roles, context } from "@budibase/backend-core" +import { roles, context, db as dbCore } from "@budibase/backend-core" import { ContextUser, Row, UserCtx } from "@budibase/types" import sdk from "../../sdk" import { processUser } from "../../utilities/global" @@ -27,6 +27,8 @@ export async function fetchSelf(ctx: UserCtx) { const appId = context.getAppId() let user: ContextUser = await getFullUser(userId) + // add globalId of user + user.globalId = dbCore.getGlobalIDFromUserMetadataID(userId) // this shouldn't be returned by the app self delete user.roles // forward the csrf token from the session diff --git a/packages/server/src/api/routes/tests/auth.spec.js b/packages/server/src/api/routes/tests/auth.spec.js index 5fbead99b7..64952db17c 100644 --- a/packages/server/src/api/routes/tests/auth.spec.js +++ b/packages/server/src/api/routes/tests/auth.spec.js @@ -1,5 +1,8 @@ const setup = require("./utilities") -const { generateUserMetadataID } = require("../../../db/utils") +const { + generateUserMetadataID, + getGlobalIDFromUserMetadataID, +} = require("../../../db/utils") describe("/authenticate", () => { let request = setup.getRequest() @@ -20,5 +23,16 @@ describe("/authenticate", () => { .expect(200) expect(res.body._id).toEqual(generateUserMetadataID(config.user._id)) }) + + it("should container the global user ID", async () => { + const res = await request + .get(`/api/self`) + .set(config.defaultHeaders()) + .expect("Content-Type", /json/) + .expect(200) + expect(res.body.globalId).toEqual( + getGlobalIDFromUserMetadataID(config.user._id) + ) + }) }) })