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 {
getTenantId,
lookupTenantId,
getGlobalDB,
} = require("../tenancy")
const { getTenantId, lookupTenantId, getGlobalDB } = require("../tenancy")
const EXPIRY_SECONDS = 3600

View File

@ -7,18 +7,20 @@ class FunctionContext {
static getMiddleware(updateCtxFn = null) {
const namespace = this.createNamespace()
return async function(ctx, next) {
await new Promise(namespace.bind(function(resolve, reject) {
// store a contextual request ID that can be used anywhere (audit logs)
namespace.set(REQUEST_ID_KEY, newid())
namespace.bindEmitter(ctx.req)
namespace.bindEmitter(ctx.res)
return async function (ctx, next) {
await new Promise(
namespace.bind(function (resolve, reject) {
// store a contextual request ID that can be used anywhere (audit logs)
namespace.set(REQUEST_ID_KEY, newid())
namespace.bindEmitter(ctx.req)
namespace.bindEmitter(ctx.res)
if (updateCtxFn) {
updateCtxFn(ctx)
}
next().then(resolve).catch(reject)
}))
if (updateCtxFn) {
updateCtxFn(ctx)
}
next().then(resolve).catch(reject)
})
)
}
}
@ -35,7 +37,9 @@ class FunctionContext {
static getContextStorage() {
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
}

View File

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

View File

@ -13,7 +13,13 @@ const { user: userCache } = require("@budibase/auth/cache")
const { invalidateSessions } = require("@budibase/auth/sessions")
const CouchDB = require("../../../db")
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

View File

@ -54,14 +54,26 @@ router
authController.resetUpdate
)
.post("/api/global/auth/logout", authController.logout)
.get("/api/global/auth/:tenantId/google", updateTenant, authController.googlePreAuth)
.get("/api/global/auth/:tenantId/google/callback", updateTenant, authController.googleAuth)
.get(
"/api/global/auth/:tenantId/google",
updateTenant,
authController.googlePreAuth
)
.get(
"/api/global/auth/:tenantId/google/callback",
updateTenant,
authController.googleAuth
)
.get(
"/api/global/auth/:tenantId/oidc/configs/:configId",
updateTenant,
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
.get("/api/admin/auth/google/callback", authController.googleAuth)
.get("/api/admin/auth/oidc/callback", authController.oidcAuth)