UNPKG

angular-simple-oidc

Version:

Angular Library implementing Open Id Connect specification. Code Flow, Refresh Tokens, Session Management, Discovery Document.

46 lines 7.43 kB
import { InjectionToken, APP_INITIALIZER, Optional } from '@angular/core'; import { SESSION_MANAGEMENT_CONFIG_REQUIRED_FIELDS } from './models'; import { isObservable, of } from 'rxjs'; import { ConfigService } from 'angular-simple-oidc/config'; import { EventsService } from 'angular-simple-oidc/events'; import { tap, catchError } from 'rxjs/operators'; import { SessionManagementConfigurationMissingError } from './errors'; export const SESSION_MANAGEMENT_CONFIG_SERVICE = new InjectionToken('SESSION_MANAGEMENT_CONFIG_SERVICE'); export const SESSION_MANAGEMENT_CONFIG = new InjectionToken('SESSION_MANAGEMENT_CONFIG'); const defaultConfig = { opIframePollInterval: 1 * 1000, iframeTimeout: 10 * 1000 }; export function sessionManagementConfigFactory(configInput, configService, events) { if (!configInput) { throw new SessionManagementConfigurationMissingError(); } const config$ = isObservable(configInput) ? configInput : of(configInput); return () => config$.pipe(tap(config => configService.configure(config, { defaultConfig, requiredFields: SESSION_MANAGEMENT_CONFIG_REQUIRED_FIELDS })), catchError(e => { // make sure this errors get logged. console.error('Callback failed in SESSION_MANAGEMENT_CONFIG_INITIALIZER'); console.error(e); events.dispatchError(e); // Do not prevent bootstrapping in order to be able to handle errors gracefully. return of(null); })) .toPromise(); } export const SESSION_MANAGEMENT_CONFIG_INITIALIZER = { multi: true, provide: APP_INITIALIZER, deps: [ [new Optional(), SESSION_MANAGEMENT_CONFIG], SESSION_MANAGEMENT_CONFIG_SERVICE, EventsService ], useFactory: sessionManagementConfigFactory }; export const SESSION_MANAGEMENT_CONFIG_SERVICE_PROVIDER = { provide: SESSION_MANAGEMENT_CONFIG_SERVICE, useClass: ConfigService, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zaW1wbGUtb2lkYy9zcmMvbGliL3Nlc3Npb24tbWFuYWdlbWVudC9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBMkIseUNBQXlDLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUYsT0FBTyxFQUFjLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FDMUMsSUFBSSxjQUFjLENBQXlDLG1DQUFtQyxDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQ2xDLElBQUksY0FBYyxDQUFnRSwyQkFBMkIsQ0FBQyxDQUFDO0FBRW5ILE1BQU0sYUFBYSxHQUFxQztJQUNwRCxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsSUFBSTtJQUM5QixhQUFhLEVBQUUsRUFBRSxHQUFHLElBQUk7Q0FDM0IsQ0FBQztBQUVGLE1BQU0sVUFBVSw4QkFBOEIsQ0FDMUMsV0FBMEUsRUFDMUUsYUFBcUQsRUFDckQsTUFBcUI7SUFFckIsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNkLE1BQU0sSUFBSSwwQ0FBMEMsRUFBRSxDQUFDO0tBQzFEO0lBRUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxRSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1FBQzFDLGFBQWE7UUFDYixjQUFjLEVBQUUseUNBQXlDO0tBQzVELENBQUMsQ0FBQyxFQUNILFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUVYLG9DQUFvQztRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDMUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhCLGdGQUFnRjtRQUNoRixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FDTDtTQUNJLFNBQVMsRUFBRSxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRztJQUNqRCxLQUFLLEVBQUUsSUFBSTtJQUNYLE9BQU8sRUFBRSxlQUFlO0lBQ3hCLElBQUksRUFBRTtRQUNGLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSx5QkFBeUIsQ0FBQztRQUMzQyxpQ0FBaUM7UUFDakMsYUFBYTtLQUNoQjtJQUNELFVBQVUsRUFBRSw4QkFBOEI7Q0FDN0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFhO0lBQ2hFLE9BQU8sRUFBRSxpQ0FBaUM7SUFDMUMsUUFBUSxFQUFFLGFBQWE7Q0FDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciwgQVBQX0lOSVRJQUxJWkVSLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2Vzc2lvbk1hbmFnZW1lbnRDb25maWcsIFNFU1NJT05fTUFOQUdFTUVOVF9DT05GSUdfUkVRVUlSRURfRklFTERTIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgaXNPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItc2ltcGxlLW9pZGMvY29uZmlnJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL2V2ZW50cyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlbWVudENvbmZpZ3VyYXRpb25NaXNzaW5nRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBTRVNTSU9OX01BTkFHRU1FTlRfQ09ORklHX1NFUlZJQ0UgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjxDb25maWdTZXJ2aWNlPFNlc3Npb25NYW5hZ2VtZW50Q29uZmlnPj4oJ1NFU1NJT05fTUFOQUdFTUVOVF9DT05GSUdfU0VSVklDRScpO1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9NQU5BR0VNRU5UX0NPTkZJRyA9XG4gICAgbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8U2Vzc2lvbk1hbmFnZW1lbnRDb25maWc+IHwgU2Vzc2lvbk1hbmFnZW1lbnRDb25maWc+KCdTRVNTSU9OX01BTkFHRU1FTlRfQ09ORklHJyk7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IFBhcnRpYWw8U2Vzc2lvbk1hbmFnZW1lbnRDb25maWc+ID0ge1xuICAgIG9wSWZyYW1lUG9sbEludGVydmFsOiAxICogMTAwMCxcbiAgICBpZnJhbWVUaW1lb3V0OiAxMCAqIDEwMDBcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uTWFuYWdlbWVudENvbmZpZ0ZhY3RvcnkoXG4gICAgY29uZmlnSW5wdXQ6IE9ic2VydmFibGU8U2Vzc2lvbk1hbmFnZW1lbnRDb25maWc+IHwgU2Vzc2lvbk1hbmFnZW1lbnRDb25maWcsXG4gICAgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZTxTZXNzaW9uTWFuYWdlbWVudENvbmZpZz4sXG4gICAgZXZlbnRzOiBFdmVudHNTZXJ2aWNlKSB7XG5cbiAgICBpZiAoIWNvbmZpZ0lucHV0KSB7XG4gICAgICAgIHRocm93IG5ldyBTZXNzaW9uTWFuYWdlbWVudENvbmZpZ3VyYXRpb25NaXNzaW5nRXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWckID0gaXNPYnNlcnZhYmxlKGNvbmZpZ0lucHV0KSA/IGNvbmZpZ0lucHV0IDogb2YoY29uZmlnSW5wdXQpO1xuXG4gICAgcmV0dXJuICgpID0+IGNvbmZpZyQucGlwZShcbiAgICAgICAgdGFwKGNvbmZpZyA9PiBjb25maWdTZXJ2aWNlLmNvbmZpZ3VyZShjb25maWcsIHtcbiAgICAgICAgICAgIGRlZmF1bHRDb25maWcsXG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkczogU0VTU0lPTl9NQU5BR0VNRU5UX0NPTkZJR19SRVFVSVJFRF9GSUVMRFNcbiAgICAgICAgfSkpLFxuICAgICAgICBjYXRjaEVycm9yKGUgPT4ge1xuXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhpcyBlcnJvcnMgZ2V0IGxvZ2dlZC5cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhbGxiYWNrIGZhaWxlZCBpbiBTRVNTSU9OX01BTkFHRU1FTlRfQ09ORklHX0lOSVRJQUxJWkVSJyk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuXG4gICAgICAgICAgICBldmVudHMuZGlzcGF0Y2hFcnJvcihlKTtcblxuICAgICAgICAgICAgLy8gRG8gbm90IHByZXZlbnQgYm9vdHN0cmFwcGluZyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGhhbmRsZSBlcnJvcnMgZ3JhY2VmdWxseS5cbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICApXG4gICAgICAgIC50b1Byb21pc2UoKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNFU1NJT05fTUFOQUdFTUVOVF9DT05GSUdfSU5JVElBTElaRVIgPSB7XG4gICAgbXVsdGk6IHRydWUsXG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIGRlcHM6IFtcbiAgICAgICAgW25ldyBPcHRpb25hbCgpLCBTRVNTSU9OX01BTkFHRU1FTlRfQ09ORklHXSxcbiAgICAgICAgU0VTU0lPTl9NQU5BR0VNRU5UX0NPTkZJR19TRVJWSUNFLFxuICAgICAgICBFdmVudHNTZXJ2aWNlXG4gICAgXSxcbiAgICB1c2VGYWN0b3J5OiBzZXNzaW9uTWFuYWdlbWVudENvbmZpZ0ZhY3Rvcnlcbn07XG5cbmV4cG9ydCBjb25zdCBTRVNTSU9OX01BTkFHRU1FTlRfQ09ORklHX1NFUlZJQ0VfUFJPVklERVI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IFNFU1NJT05fTUFOQUdFTUVOVF9DT05GSUdfU0VSVklDRSxcbiAgICB1c2VDbGFzczogQ29uZmlnU2VydmljZSxcbn07XG4iXX0=