@tsed/oidc-provider 7.2.2 → 7.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -131,7 +131,7 @@ let OidcProvider = class OidcProvider {
|
|
|
131
131
|
const options = provider.store.get("interactionOptions");
|
|
132
132
|
if (!policy.get(options.name)) {
|
|
133
133
|
const prompt = this.createPrompt(instance, options);
|
|
134
|
-
policy.add(prompt);
|
|
134
|
+
policy.add(prompt, options.priority);
|
|
135
135
|
}
|
|
136
136
|
if (instance.$onCreate) {
|
|
137
137
|
instance.$onCreate(policy.get(options.name));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OidcProvider.js","sourceRoot":"","sources":["../../../src/services/OidcProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Env, setValue} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {Configuration, interactionPolicy, Provider as OIDCProvider} from \"oidc-provider\";\nimport {INTERACTIONS} from \"../constants/constants\";\nimport {InteractionMethods} from \"../domain/InteractionMethods\";\nimport {OidcAccountsMethods} from \"../domain/OidcAccountsMethods\";\nimport {OidcInteractionOptions} from \"../domain/OidcInteractionOptions\";\nimport {OidcSettings} from \"../domain/OidcSettings\";\nimport {OidcAdapters} from \"./OidcAdapters\";\nimport {OidcInteractions} from \"./OidcInteractions\";\nimport {OidcJwks} from \"./OidcJwks\";\n\n@Injectable()\nexport class OidcProvider {\n raw: OIDCProvider;\n\n @Constant(\"env\")\n protected env: Env;\n\n @Constant(\"httpPort\")\n protected httpPort: number | string;\n\n @Constant(\"httpsPort\")\n protected httpsPort: number | string;\n\n @Constant(\"oidc.issuer\", \"\")\n protected issuer: string;\n\n @Constant(\"oidc\")\n protected oidc: OidcSettings;\n\n @Constant(\"PLATFORM_NAME\")\n protected platformName: string;\n\n @Inject()\n protected oidcJwks: OidcJwks;\n\n @Inject()\n protected oidcInteractions: OidcInteractions;\n\n @Inject()\n protected adapters: OidcAdapters;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected app: PlatformApplication;\n\n hasConfiguration() {\n return !!this.oidc;\n }\n\n async getConfiguration(): Promise<Configuration> {\n const [jwks, adapter] = await Promise.all([this.oidcJwks.getJwks(), this.adapters.createAdapterClass()]);\n const {\n issuer,\n jwksPath,\n secureKey,\n proxy,\n Accounts,\n secureCookies = this.env == Env.PROD,\n Adapter,\n connectionName,\n ...options\n } = this.oidc;\n\n const configuration: Configuration = {\n interactions: {\n /* istanbul ignore next */\n url: (ctx, interaction) => `interaction/${interaction.uid}`\n },\n ...options,\n adapter,\n jwks\n };\n\n if (Accounts) {\n configuration.findAccount = (ctx, id, token) => this.injector.get<OidcAccountsMethods>(Accounts)!.findAccount(id, token);\n }\n\n if (secureCookies) {\n setValue(configuration, \"cookies.short.secure\", true);\n setValue(configuration, \"cookies.long.secure\", true);\n }\n\n const policy = this.getPolicy();\n if (policy) {\n setValue(configuration, \"interactions.policy\", policy);\n }\n\n const url = this.getInteractionsUrl();\n if (url) {\n setValue(configuration, \"interactions.url\", url);\n }\n\n return configuration;\n }\n\n getIssuer() {\n if (this.issuer) {\n return this.issuer;\n }\n\n // istanbul ignore next\n if (this.httpsPort) {\n return `https://localhost:${this.httpsPort}`;\n }\n\n return `http://localhost:${this.httpPort}`;\n }\n\n get(): OIDCProvider {\n return this.raw;\n }\n\n /**\n * Create a new instance of OidcProvider\n */\n async create(): Promise<void | OIDCProvider> {\n const {proxy = this.env === Env.PROD, secureKey, allowHttpLocalhost = this.env !== Env.PROD} = this.oidc;\n const configuration = await this.getConfiguration();\n\n await this.injector.alterAsync(\"$alterOidcConfiguration\", configuration);\n\n const oidcProvider = new OIDCProvider(this.getIssuer(), configuration);\n\n if (proxy) {\n // istanbul ignore next\n switch (this.platformName) {\n default:\n case \"express\":\n oidcProvider.proxy = true;\n break;\n case \"koa\":\n (this.app.rawApp as any).proxy = true;\n break;\n }\n }\n\n if (secureKey) {\n oidcProvider.app.keys = secureKey;\n }\n\n this.raw = oidcProvider;\n\n if (allowHttpLocalhost) {\n this.allowHttpLocalhost();\n }\n\n await this.injector.emit(\"$onCreateOIDC\", this.raw);\n\n return this.raw;\n }\n\n public createPrompt(instance: InteractionMethods, options: OidcInteractionOptions) {\n const {checks: originalChecks = [], details, ...promptOptions} = options;\n const checks = [...(instance.checks ? instance.checks() : originalChecks)].filter(Boolean);\n\n return new interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks);\n }\n\n private getInteractionsUrl() {\n const provider = this.injector.getProviders().find((provider) => provider.subType === INTERACTIONS);\n\n if (provider) {\n return (ctx: any, interaction: any) => {\n // eslint-disable-line no-unused-vars\n return provider.path.replace(/:uid/, interaction.uid);\n };\n }\n }\n\n private allowHttpLocalhost() {\n const {invalidate: orig} = (this.raw.Client as any).Schema.prototype;\n\n (this.raw.Client as any).Schema.prototype.invalidate = function invalidate(message: string, code: string) {\n if (code === \"implicit-force-https\" || code === \"implicit-forbid-localhost\") {\n return;\n }\n\n /* istanbul ignore next */\n return orig.call(this, message);\n };\n }\n\n private getPolicy() {\n const policy = interactionPolicy.base();\n const interactions = this.oidcInteractions.getInteractions();\n\n if (interactions.length) {\n interactions.forEach((provider) => {\n const instance = this.injector.get<InteractionMethods>(provider.token)!;\n const options = provider.store.get(\"interactionOptions\");\n\n if (!policy.get(options.name)) {\n const prompt = this.createPrompt(instance, options);\n\n policy.add(prompt);\n }\n\n if (instance.$onCreate) {\n instance.$onCreate(policy.get(options.name)!);\n }\n });\n }\n\n return this.injector.alter(\"$alterOidcPolicy\", policy);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"OidcProvider.js","sourceRoot":"","sources":["../../../src/services/OidcProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Env, setValue} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {Configuration, interactionPolicy, Provider as OIDCProvider} from \"oidc-provider\";\nimport {INTERACTIONS} from \"../constants/constants\";\nimport {InteractionMethods} from \"../domain/InteractionMethods\";\nimport {OidcAccountsMethods} from \"../domain/OidcAccountsMethods\";\nimport {OidcInteractionOptions} from \"../domain/OidcInteractionOptions\";\nimport {OidcSettings} from \"../domain/OidcSettings\";\nimport {OidcAdapters} from \"./OidcAdapters\";\nimport {OidcInteractions} from \"./OidcInteractions\";\nimport {OidcJwks} from \"./OidcJwks\";\n\n@Injectable()\nexport class OidcProvider {\n raw: OIDCProvider;\n\n @Constant(\"env\")\n protected env: Env;\n\n @Constant(\"httpPort\")\n protected httpPort: number | string;\n\n @Constant(\"httpsPort\")\n protected httpsPort: number | string;\n\n @Constant(\"oidc.issuer\", \"\")\n protected issuer: string;\n\n @Constant(\"oidc\")\n protected oidc: OidcSettings;\n\n @Constant(\"PLATFORM_NAME\")\n protected platformName: string;\n\n @Inject()\n protected oidcJwks: OidcJwks;\n\n @Inject()\n protected oidcInteractions: OidcInteractions;\n\n @Inject()\n protected adapters: OidcAdapters;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected app: PlatformApplication;\n\n hasConfiguration() {\n return !!this.oidc;\n }\n\n async getConfiguration(): Promise<Configuration> {\n const [jwks, adapter] = await Promise.all([this.oidcJwks.getJwks(), this.adapters.createAdapterClass()]);\n const {\n issuer,\n jwksPath,\n secureKey,\n proxy,\n Accounts,\n secureCookies = this.env == Env.PROD,\n Adapter,\n connectionName,\n ...options\n } = this.oidc;\n\n const configuration: Configuration = {\n interactions: {\n /* istanbul ignore next */\n url: (ctx, interaction) => `interaction/${interaction.uid}`\n },\n ...options,\n adapter,\n jwks\n };\n\n if (Accounts) {\n configuration.findAccount = (ctx, id, token) => this.injector.get<OidcAccountsMethods>(Accounts)!.findAccount(id, token);\n }\n\n if (secureCookies) {\n setValue(configuration, \"cookies.short.secure\", true);\n setValue(configuration, \"cookies.long.secure\", true);\n }\n\n const policy = this.getPolicy();\n if (policy) {\n setValue(configuration, \"interactions.policy\", policy);\n }\n\n const url = this.getInteractionsUrl();\n if (url) {\n setValue(configuration, \"interactions.url\", url);\n }\n\n return configuration;\n }\n\n getIssuer() {\n if (this.issuer) {\n return this.issuer;\n }\n\n // istanbul ignore next\n if (this.httpsPort) {\n return `https://localhost:${this.httpsPort}`;\n }\n\n return `http://localhost:${this.httpPort}`;\n }\n\n get(): OIDCProvider {\n return this.raw;\n }\n\n /**\n * Create a new instance of OidcProvider\n */\n async create(): Promise<void | OIDCProvider> {\n const {proxy = this.env === Env.PROD, secureKey, allowHttpLocalhost = this.env !== Env.PROD} = this.oidc;\n const configuration = await this.getConfiguration();\n\n await this.injector.alterAsync(\"$alterOidcConfiguration\", configuration);\n\n const oidcProvider = new OIDCProvider(this.getIssuer(), configuration);\n\n if (proxy) {\n // istanbul ignore next\n switch (this.platformName) {\n default:\n case \"express\":\n oidcProvider.proxy = true;\n break;\n case \"koa\":\n (this.app.rawApp as any).proxy = true;\n break;\n }\n }\n\n if (secureKey) {\n oidcProvider.app.keys = secureKey;\n }\n\n this.raw = oidcProvider;\n\n if (allowHttpLocalhost) {\n this.allowHttpLocalhost();\n }\n\n await this.injector.emit(\"$onCreateOIDC\", this.raw);\n\n return this.raw;\n }\n\n public createPrompt(instance: InteractionMethods, options: OidcInteractionOptions) {\n const {checks: originalChecks = [], details, ...promptOptions} = options;\n const checks = [...(instance.checks ? instance.checks() : originalChecks)].filter(Boolean);\n\n return new interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks);\n }\n\n private getInteractionsUrl() {\n const provider = this.injector.getProviders().find((provider) => provider.subType === INTERACTIONS);\n\n if (provider) {\n return (ctx: any, interaction: any) => {\n // eslint-disable-line no-unused-vars\n return provider.path.replace(/:uid/, interaction.uid);\n };\n }\n }\n\n private allowHttpLocalhost() {\n const {invalidate: orig} = (this.raw.Client as any).Schema.prototype;\n\n (this.raw.Client as any).Schema.prototype.invalidate = function invalidate(message: string, code: string) {\n if (code === \"implicit-force-https\" || code === \"implicit-forbid-localhost\") {\n return;\n }\n\n /* istanbul ignore next */\n return orig.call(this, message);\n };\n }\n\n private getPolicy() {\n const policy = interactionPolicy.base();\n const interactions = this.oidcInteractions.getInteractions();\n\n if (interactions.length) {\n interactions.forEach((provider) => {\n const instance = this.injector.get<InteractionMethods>(provider.token)!;\n const options = provider.store.get(\"interactionOptions\");\n\n if (!policy.get(options.name)) {\n const prompt = this.createPrompt(instance, options);\n\n policy.add(prompt, options.priority);\n }\n\n if (instance.$onCreate) {\n instance.$onCreate(policy.get(options.name)!);\n }\n });\n }\n\n return this.injector.alter(\"$alterOidcPolicy\", policy);\n }\n}\n"]}
|
|
@@ -128,7 +128,7 @@ let OidcProvider = class OidcProvider {
|
|
|
128
128
|
const options = provider.store.get("interactionOptions");
|
|
129
129
|
if (!policy.get(options.name)) {
|
|
130
130
|
const prompt = this.createPrompt(instance, options);
|
|
131
|
-
policy.add(prompt);
|
|
131
|
+
policy.add(prompt, options.priority);
|
|
132
132
|
}
|
|
133
133
|
if (instance.$onCreate) {
|
|
134
134
|
instance.$onCreate(policy.get(options.name));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OidcProvider.js","sourceRoot":"","sources":["../../../src/services/OidcProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Env, setValue} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {Configuration, interactionPolicy, Provider as OIDCProvider} from \"oidc-provider\";\nimport {INTERACTIONS} from \"../constants/constants\";\nimport {InteractionMethods} from \"../domain/InteractionMethods\";\nimport {OidcAccountsMethods} from \"../domain/OidcAccountsMethods\";\nimport {OidcInteractionOptions} from \"../domain/OidcInteractionOptions\";\nimport {OidcSettings} from \"../domain/OidcSettings\";\nimport {OidcAdapters} from \"./OidcAdapters\";\nimport {OidcInteractions} from \"./OidcInteractions\";\nimport {OidcJwks} from \"./OidcJwks\";\n\n@Injectable()\nexport class OidcProvider {\n raw: OIDCProvider;\n\n @Constant(\"env\")\n protected env: Env;\n\n @Constant(\"httpPort\")\n protected httpPort: number | string;\n\n @Constant(\"httpsPort\")\n protected httpsPort: number | string;\n\n @Constant(\"oidc.issuer\", \"\")\n protected issuer: string;\n\n @Constant(\"oidc\")\n protected oidc: OidcSettings;\n\n @Constant(\"PLATFORM_NAME\")\n protected platformName: string;\n\n @Inject()\n protected oidcJwks: OidcJwks;\n\n @Inject()\n protected oidcInteractions: OidcInteractions;\n\n @Inject()\n protected adapters: OidcAdapters;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected app: PlatformApplication;\n\n hasConfiguration() {\n return !!this.oidc;\n }\n\n async getConfiguration(): Promise<Configuration> {\n const [jwks, adapter] = await Promise.all([this.oidcJwks.getJwks(), this.adapters.createAdapterClass()]);\n const {\n issuer,\n jwksPath,\n secureKey,\n proxy,\n Accounts,\n secureCookies = this.env == Env.PROD,\n Adapter,\n connectionName,\n ...options\n } = this.oidc;\n\n const configuration: Configuration = {\n interactions: {\n /* istanbul ignore next */\n url: (ctx, interaction) => `interaction/${interaction.uid}`\n },\n ...options,\n adapter,\n jwks\n };\n\n if (Accounts) {\n configuration.findAccount = (ctx, id, token) => this.injector.get<OidcAccountsMethods>(Accounts)!.findAccount(id, token);\n }\n\n if (secureCookies) {\n setValue(configuration, \"cookies.short.secure\", true);\n setValue(configuration, \"cookies.long.secure\", true);\n }\n\n const policy = this.getPolicy();\n if (policy) {\n setValue(configuration, \"interactions.policy\", policy);\n }\n\n const url = this.getInteractionsUrl();\n if (url) {\n setValue(configuration, \"interactions.url\", url);\n }\n\n return configuration;\n }\n\n getIssuer() {\n if (this.issuer) {\n return this.issuer;\n }\n\n // istanbul ignore next\n if (this.httpsPort) {\n return `https://localhost:${this.httpsPort}`;\n }\n\n return `http://localhost:${this.httpPort}`;\n }\n\n get(): OIDCProvider {\n return this.raw;\n }\n\n /**\n * Create a new instance of OidcProvider\n */\n async create(): Promise<void | OIDCProvider> {\n const {proxy = this.env === Env.PROD, secureKey, allowHttpLocalhost = this.env !== Env.PROD} = this.oidc;\n const configuration = await this.getConfiguration();\n\n await this.injector.alterAsync(\"$alterOidcConfiguration\", configuration);\n\n const oidcProvider = new OIDCProvider(this.getIssuer(), configuration);\n\n if (proxy) {\n // istanbul ignore next\n switch (this.platformName) {\n default:\n case \"express\":\n oidcProvider.proxy = true;\n break;\n case \"koa\":\n (this.app.rawApp as any).proxy = true;\n break;\n }\n }\n\n if (secureKey) {\n oidcProvider.app.keys = secureKey;\n }\n\n this.raw = oidcProvider;\n\n if (allowHttpLocalhost) {\n this.allowHttpLocalhost();\n }\n\n await this.injector.emit(\"$onCreateOIDC\", this.raw);\n\n return this.raw;\n }\n\n public createPrompt(instance: InteractionMethods, options: OidcInteractionOptions) {\n const {checks: originalChecks = [], details, ...promptOptions} = options;\n const checks = [...(instance.checks ? instance.checks() : originalChecks)].filter(Boolean);\n\n return new interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks);\n }\n\n private getInteractionsUrl() {\n const provider = this.injector.getProviders().find((provider) => provider.subType === INTERACTIONS);\n\n if (provider) {\n return (ctx: any, interaction: any) => {\n // eslint-disable-line no-unused-vars\n return provider.path.replace(/:uid/, interaction.uid);\n };\n }\n }\n\n private allowHttpLocalhost() {\n const {invalidate: orig} = (this.raw.Client as any).Schema.prototype;\n\n (this.raw.Client as any).Schema.prototype.invalidate = function invalidate(message: string, code: string) {\n if (code === \"implicit-force-https\" || code === \"implicit-forbid-localhost\") {\n return;\n }\n\n /* istanbul ignore next */\n return orig.call(this, message);\n };\n }\n\n private getPolicy() {\n const policy = interactionPolicy.base();\n const interactions = this.oidcInteractions.getInteractions();\n\n if (interactions.length) {\n interactions.forEach((provider) => {\n const instance = this.injector.get<InteractionMethods>(provider.token)!;\n const options = provider.store.get(\"interactionOptions\");\n\n if (!policy.get(options.name)) {\n const prompt = this.createPrompt(instance, options);\n\n policy.add(prompt);\n }\n\n if (instance.$onCreate) {\n instance.$onCreate(policy.get(options.name)!);\n }\n });\n }\n\n return this.injector.alter(\"$alterOidcPolicy\", policy);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"OidcProvider.js","sourceRoot":"","sources":["../../../src/services/OidcProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Env, setValue} from \"@tsed/core\";\nimport {Constant, Inject, Injectable, InjectorService} from \"@tsed/di\";\nimport {Configuration, interactionPolicy, Provider as OIDCProvider} from \"oidc-provider\";\nimport {INTERACTIONS} from \"../constants/constants\";\nimport {InteractionMethods} from \"../domain/InteractionMethods\";\nimport {OidcAccountsMethods} from \"../domain/OidcAccountsMethods\";\nimport {OidcInteractionOptions} from \"../domain/OidcInteractionOptions\";\nimport {OidcSettings} from \"../domain/OidcSettings\";\nimport {OidcAdapters} from \"./OidcAdapters\";\nimport {OidcInteractions} from \"./OidcInteractions\";\nimport {OidcJwks} from \"./OidcJwks\";\n\n@Injectable()\nexport class OidcProvider {\n raw: OIDCProvider;\n\n @Constant(\"env\")\n protected env: Env;\n\n @Constant(\"httpPort\")\n protected httpPort: number | string;\n\n @Constant(\"httpsPort\")\n protected httpsPort: number | string;\n\n @Constant(\"oidc.issuer\", \"\")\n protected issuer: string;\n\n @Constant(\"oidc\")\n protected oidc: OidcSettings;\n\n @Constant(\"PLATFORM_NAME\")\n protected platformName: string;\n\n @Inject()\n protected oidcJwks: OidcJwks;\n\n @Inject()\n protected oidcInteractions: OidcInteractions;\n\n @Inject()\n protected adapters: OidcAdapters;\n\n @Inject()\n protected injector: InjectorService;\n\n @Inject()\n protected app: PlatformApplication;\n\n hasConfiguration() {\n return !!this.oidc;\n }\n\n async getConfiguration(): Promise<Configuration> {\n const [jwks, adapter] = await Promise.all([this.oidcJwks.getJwks(), this.adapters.createAdapterClass()]);\n const {\n issuer,\n jwksPath,\n secureKey,\n proxy,\n Accounts,\n secureCookies = this.env == Env.PROD,\n Adapter,\n connectionName,\n ...options\n } = this.oidc;\n\n const configuration: Configuration = {\n interactions: {\n /* istanbul ignore next */\n url: (ctx, interaction) => `interaction/${interaction.uid}`\n },\n ...options,\n adapter,\n jwks\n };\n\n if (Accounts) {\n configuration.findAccount = (ctx, id, token) => this.injector.get<OidcAccountsMethods>(Accounts)!.findAccount(id, token);\n }\n\n if (secureCookies) {\n setValue(configuration, \"cookies.short.secure\", true);\n setValue(configuration, \"cookies.long.secure\", true);\n }\n\n const policy = this.getPolicy();\n if (policy) {\n setValue(configuration, \"interactions.policy\", policy);\n }\n\n const url = this.getInteractionsUrl();\n if (url) {\n setValue(configuration, \"interactions.url\", url);\n }\n\n return configuration;\n }\n\n getIssuer() {\n if (this.issuer) {\n return this.issuer;\n }\n\n // istanbul ignore next\n if (this.httpsPort) {\n return `https://localhost:${this.httpsPort}`;\n }\n\n return `http://localhost:${this.httpPort}`;\n }\n\n get(): OIDCProvider {\n return this.raw;\n }\n\n /**\n * Create a new instance of OidcProvider\n */\n async create(): Promise<void | OIDCProvider> {\n const {proxy = this.env === Env.PROD, secureKey, allowHttpLocalhost = this.env !== Env.PROD} = this.oidc;\n const configuration = await this.getConfiguration();\n\n await this.injector.alterAsync(\"$alterOidcConfiguration\", configuration);\n\n const oidcProvider = new OIDCProvider(this.getIssuer(), configuration);\n\n if (proxy) {\n // istanbul ignore next\n switch (this.platformName) {\n default:\n case \"express\":\n oidcProvider.proxy = true;\n break;\n case \"koa\":\n (this.app.rawApp as any).proxy = true;\n break;\n }\n }\n\n if (secureKey) {\n oidcProvider.app.keys = secureKey;\n }\n\n this.raw = oidcProvider;\n\n if (allowHttpLocalhost) {\n this.allowHttpLocalhost();\n }\n\n await this.injector.emit(\"$onCreateOIDC\", this.raw);\n\n return this.raw;\n }\n\n public createPrompt(instance: InteractionMethods, options: OidcInteractionOptions) {\n const {checks: originalChecks = [], details, ...promptOptions} = options;\n const checks = [...(instance.checks ? instance.checks() : originalChecks)].filter(Boolean);\n\n return new interactionPolicy.Prompt(promptOptions, instance.details ? instance.details.bind(instance) : details, ...checks);\n }\n\n private getInteractionsUrl() {\n const provider = this.injector.getProviders().find((provider) => provider.subType === INTERACTIONS);\n\n if (provider) {\n return (ctx: any, interaction: any) => {\n // eslint-disable-line no-unused-vars\n return provider.path.replace(/:uid/, interaction.uid);\n };\n }\n }\n\n private allowHttpLocalhost() {\n const {invalidate: orig} = (this.raw.Client as any).Schema.prototype;\n\n (this.raw.Client as any).Schema.prototype.invalidate = function invalidate(message: string, code: string) {\n if (code === \"implicit-force-https\" || code === \"implicit-forbid-localhost\") {\n return;\n }\n\n /* istanbul ignore next */\n return orig.call(this, message);\n };\n }\n\n private getPolicy() {\n const policy = interactionPolicy.base();\n const interactions = this.oidcInteractions.getInteractions();\n\n if (interactions.length) {\n interactions.forEach((provider) => {\n const instance = this.injector.get<InteractionMethods>(provider.token)!;\n const options = provider.store.get(\"interactionOptions\");\n\n if (!policy.get(options.name)) {\n const prompt = this.createPrompt(instance, options);\n\n policy.add(prompt, options.priority);\n }\n\n if (instance.$onCreate) {\n instance.$onCreate(policy.get(options.name)!);\n }\n });\n }\n\n return this.injector.alter(\"$alterOidcPolicy\", policy);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/oidc-provider",
|
|
3
|
-
"version": "7.2.
|
|
3
|
+
"version": "7.2.3",
|
|
4
4
|
"description": "OIDC provider package for Ts.ED framework",
|
|
5
5
|
"private": false,
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test": "cross-env NODE_ENV=test yarn jest --max-workers=2"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@tsed/adapters": "7.2.
|
|
25
|
+
"@tsed/adapters": "7.2.3",
|
|
26
26
|
"express-urlrewrite": "^1.4.0",
|
|
27
27
|
"jose2": "npm:jose@^2.0.4",
|
|
28
28
|
"koa-mount": "^4.0.0",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"uuid": "8.3.2"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@tsed/common": "7.2.
|
|
35
|
-
"@tsed/core": "7.2.
|
|
36
|
-
"@tsed/di": "7.2.
|
|
37
|
-
"@tsed/exceptions": "7.2.
|
|
34
|
+
"@tsed/common": "7.2.3",
|
|
35
|
+
"@tsed/core": "7.2.3",
|
|
36
|
+
"@tsed/di": "7.2.3",
|
|
37
|
+
"@tsed/exceptions": "7.2.3",
|
|
38
38
|
"@types/lowdb": "1.0.11",
|
|
39
39
|
"@types/oidc-provider": "^7.1.1",
|
|
40
40
|
"@types/uuid": "8.3.4",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"oidc-provider": "7.11.1"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@tsed/common": "^7.2.
|
|
45
|
+
"@tsed/common": "^7.2.3",
|
|
46
46
|
"oidc-provider": ">=7.3.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|