supertokens-node
Version:
NodeJS driver for SuperTokens core
72 lines (71 loc) • 3.48 kB
JavaScript
;
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,
};
}