This commit is contained in:
mike12345567 2021-08-03 15:41:51 +01:00
parent 54e765a182
commit 55ff798803
5 changed files with 43 additions and 22 deletions

View File

@ -1,9 +1,5 @@
const redis = require("../redis/authRedis") const redis = require("../redis/authRedis")
const { const { getTenantId, lookupTenantId, getGlobalDB } = require("../tenancy")
getTenantId,
lookupTenantId,
getGlobalDB,
} = require("../tenancy")
const EXPIRY_SECONDS = 3600 const EXPIRY_SECONDS = 3600

View File

@ -7,8 +7,9 @@ class FunctionContext {
static getMiddleware(updateCtxFn = null) { static getMiddleware(updateCtxFn = null) {
const namespace = this.createNamespace() const namespace = this.createNamespace()
return async function(ctx, next) { return async function (ctx, next) {
await new Promise(namespace.bind(function(resolve, reject) { await new Promise(
namespace.bind(function (resolve, reject) {
// store a contextual request ID that can be used anywhere (audit logs) // store a contextual request ID that can be used anywhere (audit logs)
namespace.set(REQUEST_ID_KEY, newid()) namespace.set(REQUEST_ID_KEY, newid())
namespace.bindEmitter(ctx.req) namespace.bindEmitter(ctx.req)
@ -18,7 +19,8 @@ class FunctionContext {
updateCtxFn(ctx) updateCtxFn(ctx)
} }
next().then(resolve).catch(reject) next().then(resolve).catch(reject)
})) })
)
} }
} }
@ -35,7 +37,9 @@ class FunctionContext {
static getContextStorage() { static getContextStorage() {
if (this._namespace && this._namespace.active) { if (this._namespace && this._namespace.active) {
const { id, _ns_name, ...contextData } = this._namespace.active let contextData = this._namespace.active
delete contextData.id
delete contextData._ns_name
return contextData return contextData
} }

View File

@ -35,7 +35,10 @@ exports.updateTenantId = tenantId => {
cls.setOnContext(TENANT_ID, tenantId) cls.setOnContext(TENANT_ID, tenantId)
} }
exports.setTenantId = (ctx, opts = { allowQs: false, allowNoTenant: false }) => { exports.setTenantId = (
ctx,
opts = { allowQs: false, allowNoTenant: false }
) => {
let tenantId let tenantId
// exit early if not multi-tenant // exit early if not multi-tenant
if (!exports.isMultiTenant()) { if (!exports.isMultiTenant()) {

View File

@ -13,7 +13,13 @@ const { user: userCache } = require("@budibase/auth/cache")
const { invalidateSessions } = require("@budibase/auth/sessions") const { invalidateSessions } = require("@budibase/auth/sessions")
const CouchDB = require("../../../db") const CouchDB = require("../../../db")
const env = require("../../../environment") const env = require("../../../environment")
const { getGlobalDB, getTenantId, doesTenantExist, tryAddTenant, updateTenantId } = require("@budibase/auth/tenancy") const {
getGlobalDB,
getTenantId,
doesTenantExist,
tryAddTenant,
updateTenantId,
} = require("@budibase/auth/tenancy")
const PLATFORM_INFO_DB = StaticDatabases.PLATFORM_INFO.name const PLATFORM_INFO_DB = StaticDatabases.PLATFORM_INFO.name

View File

@ -54,14 +54,26 @@ router
authController.resetUpdate authController.resetUpdate
) )
.post("/api/global/auth/logout", authController.logout) .post("/api/global/auth/logout", authController.logout)
.get("/api/global/auth/:tenantId/google", updateTenant, authController.googlePreAuth) .get(
.get("/api/global/auth/:tenantId/google/callback", updateTenant, authController.googleAuth) "/api/global/auth/:tenantId/google",
updateTenant,
authController.googlePreAuth
)
.get(
"/api/global/auth/:tenantId/google/callback",
updateTenant,
authController.googleAuth
)
.get( .get(
"/api/global/auth/:tenantId/oidc/configs/:configId", "/api/global/auth/:tenantId/oidc/configs/:configId",
updateTenant, updateTenant,
authController.oidcPreAuth authController.oidcPreAuth
) )
.get("/api/global/auth/:tenantId/oidc/callback", updateTenant, authController.oidcAuth) .get(
"/api/global/auth/:tenantId/oidc/callback",
updateTenant,
authController.oidcAuth
)
// deprecated - used by the default system before tenancy // deprecated - used by the default system before tenancy
.get("/api/admin/auth/google/callback", authController.googleAuth) .get("/api/admin/auth/google/callback", authController.googleAuth)
.get("/api/admin/auth/oidc/callback", authController.oidcAuth) .get("/api/admin/auth/oidc/callback", authController.oidcAuth)