UNPKG

moleculer-iam

Version:

Centralized IAM module for moleculer. Including a certified OIDC provider and an Identity provider for user profile, credentials, and custom claims management. Custom claims could be defined/updated by declarative schema which contains claims validation a

74 lines 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildApplication = void 0; const tslib_1 = require("tslib"); const _ = tslib_1.__importStar(require("lodash")); const oidc_provider_1 = require("oidc-provider"); const proxy_1 = require("../proxy"); const federation_1 = require("./federation"); const routes_1 = require("./routes"); const abort_1 = require("./abort"); const find_email_1 = require("./find_email"); const reset_password_1 = require("./reset_password"); const verify_email_1 = require("./verify_email"); const verify_phone_1 = require("./verify_phone"); const register_1 = require("./register"); const federate_1 = require("./federate"); const login_1 = require("./login"); const consent_1 = require("./consent"); function buildApplication(builder, opts = {}) { const { prefix = "/op", federation = {}, renderer = {} } = opts; builder // set routes url prefix .setPrefix(prefix) // extend client metadata .setExtraClientMetadata({ // skip consent phase for skip_consent feature enabled client properties: ["skip_consent"], validator(k, v, meta) { switch (k) { case "skip_consent": if (typeof v !== "boolean") { // throw new OIDCErrors.InvalidClientMetadata("skip_consent should be boolean type value"); meta.skip_consent = false; } break; default: throw new proxy_1.OIDCErrors.InvalidClientMetadata("unknown client property: " + k); } }, }) .setExtraParams([ // /login?change_account=true to not auto-fill signed in session account "change_account", // /login?federate=google to automatically start federation process "federate", ]) // configure app .app // set supported prompts (), custom policies like: MFA, captcha, rate limit can be added .setPrompts([ oidc_provider_1.interactionPolicy.base().get("login"), oidc_provider_1.interactionPolicy.base().get("consent"), ]) .setRoutesFactory(routes_1.createApplicationRoutesFactory(builder, opts)) // set app renderer .setRendererFactory(renderer.factory || require("moleculer-iam-app"), renderer.options) // configure federation .federation // callback URL is /op/federate/:providerName .setCallbackPrefix("/federate") .setProviderConfigurationMap(_.defaultsDeep(federation, federation_1.identityFederationProviderOptionsPreset)); // build app routes abort_1.buildAbortRoutes(builder, opts); find_email_1.buildFindEmailRoutes(builder, opts); verify_email_1.buildVerifyEmailRoutes(builder, opts); verify_phone_1.buildVerifyPhoneRoutes(builder, opts); reset_password_1.buildResetPasswordRoutes(builder, opts); register_1.buildRegisterRoutes(builder, opts); federate_1.buildFederateRoutes(builder, opts); login_1.buildLoginRoutes(builder, opts); consent_1.buildConsentRoutes(builder, opts); } exports.buildApplication = buildApplication; //# sourceMappingURL=index.js.map