@slashid/docusaurus-theme-slashid
Version:
SlashID theme for Docusaurus.
89 lines (87 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useSlashIDConfig = void 0;
var _react = require("react");
var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
var _domain = require("../../domain");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* ============================================================================
* Copyright (c) SlashID
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
* ========================================================================== */
function isLegacyConfig(config) {
if (config.hasOwnProperty("oidcClientID") && config.hasOwnProperty("oidcProvider")) {
return true;
}
return false;
}
const DEFAULT_CONFIG = {
orgID: "",
forceLogin: false,
baseURL: "https://api.slashid.com",
sdkURL: "https://cdn.slashid.com/sdk.html",
uxMode: "redirect",
privateRedirectPath: "/",
formConfiguration: {
storeLastHandle: true,
factors: [{
method: "email_link"
}]
}
};
const useSlashIDConfig = () => {
const {
siteConfig
} = (0, _useDocusaurusContext.default)();
const {
slashID
} = siteConfig.themeConfig;
const safeOptions = (0, _react.useMemo)(() => {
// handle the legacy theme config
if (isLegacyConfig(slashID) && slashID.oidcClientID && slashID.oidcProvider) {
const {
orgID,
forceLogin,
baseURL,
sdkURL,
privatePaths,
privateRedirectPath
} = slashID;
const options = {
orgID,
forceLogin,
baseURL,
sdkURL,
privatePaths,
privateRedirectPath,
formConfiguration: {
factors: [{
method: "email_link"
}, {
method: "oidc",
options: {
client_id: slashID.oidcClientID,
provider: slashID.oidcProvider,
ux_mode: "popup"
}
}]
}
};
return (0, _domain.convertGlobToRegex)({
...DEFAULT_CONFIG,
...options
});
}
const optionsWithDefaults = {
...DEFAULT_CONFIG,
...slashID
};
return (0, _domain.convertGlobToRegex)(optionsWithDefaults);
}, [slashID]);
return safeOptions;
};
exports.useSlashIDConfig = useSlashIDConfig;