supertokens-node
Version:
NodeJS driver for SuperTokens core
104 lines (103 loc) • 4.09 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,
};
}