UNPKG

supertokens-node

Version:
72 lines (71 loc) 3.48 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getTenantInfo; const utils_1 = require("./utils"); const configUtils_1 = require("../../../thirdparty/providers/configUtils"); const querier_1 = require("../../../../querier"); const constants_1 = require("../../../multitenancy/constants"); async function getTenantInfo({ stInstance, tenantId, options, userContext, }) { var _a, _b; const mtRecipe = stInstance.getRecipeInstanceOrThrow("multitenancy"); let tenantRes = await mtRecipe.recipeInterfaceImpl.getTenant({ tenantId, userContext }); if (tenantRes === undefined) { return { status: "UNKNOWN_TENANT_ERROR", }; } let { status } = tenantRes, tenantConfig = __rest(tenantRes, ["status"]); let firstFactors = (0, utils_1.getNormalisedFirstFactorsBasedOnTenantConfigFromCoreAndSDKInit)(stInstance, tenantConfig); if (tenantRes === undefined) { return { status: "UNKNOWN_TENANT_ERROR", }; } const userCount = await stInstance.getUserCount(undefined, tenantId, userContext); const providersFromCore = (_a = tenantRes === null || tenantRes === void 0 ? void 0 : tenantRes.thirdParty) === null || _a === void 0 ? void 0 : _a.providers; const staticProviders = (_b = mtRecipe === null || mtRecipe === void 0 ? void 0 : mtRecipe.staticThirdPartyProviders) !== null && _b !== void 0 ? _b : []; const mergedProvidersFromCoreAndStatic = (0, configUtils_1.mergeProvidersFromCoreAndStatic)(providersFromCore, staticProviders, tenantId === constants_1.DEFAULT_TENANT_ID); let querier = querier_1.Querier.getNewInstanceOrThrowError(stInstance, options.recipeId); let coreConfig = await querier.sendGetRequest({ path: "/<tenantId>/recipe/dashboard/tenant/core-config", params: { tenantId, }, }, {}, userContext); const tenant = { tenantId, thirdParty: { providers: await Promise.all(mergedProvidersFromCoreAndStatic.map(async (provider) => { try { const providerInstance = await (0, configUtils_1.findAndCreateProviderInstance)(tenantId, mergedProvidersFromCoreAndStatic, provider.config.thirdPartyId, provider.config.clients[0].clientType, userContext); return { thirdPartyId: provider.config.thirdPartyId, name: providerInstance === null || providerInstance === void 0 ? void 0 : providerInstance.config.name }; } catch (_) { return { thirdPartyId: provider.config.thirdPartyId, name: provider.config.thirdPartyId, }; } })), }, firstFactors: firstFactors, requiredSecondaryFactors: tenantRes.requiredSecondaryFactors, coreConfig: coreConfig.config, userCount, }; return { status: "OK", tenant, }; }