UNPKG

angular-simple-oidc

Version:

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

42 lines 5.81 kB
import { APP_INITIALIZER } from '@angular/core'; import { WINDOW_REF, AUTH_CONFIG_SERVICE } from './providers'; import { OidcCodeFlowClient } from './oidc-code-flow-client.service'; import { of } from 'rxjs'; import { catchError, take, switchMap } from 'rxjs/operators'; import { EventsService } from 'angular-simple-oidc/events'; // This APP_INITIALIZER makes sure the OAuthService is ready // must be an export function for AOT to work export function simpleOidcInitializer(configService, oidcCodeFlowClient, events, window) { return () => { return configService.current$ .pipe(take(1), switchMap(config => { if (config.enableAuthorizationCallbackAppInitializer && window.location.pathname.includes(config.tokenCallbackRoute)) { return oidcCodeFlowClient.currentWindowCodeFlowCallback(); } else { return of(null); } }), catchError(e => { // make sure this errors get logged. console.error('Callback failed in APP_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 SIMPLE_OIDC_APP_INITIALIZER = { provide: APP_INITIALIZER, useFactory: simpleOidcInitializer, deps: [ AUTH_CONFIG_SERVICE, OidcCodeFlowClient, EventsService, WINDOW_REF ], multi: true, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ib290c3RyYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNpbXBsZS1vaWRjL3NyYy9saWIvYXV0aC5ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCw0REFBNEQ7QUFDNUQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsYUFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLE1BQXFCLEVBQ3JCLE1BQWM7SUFDZCxPQUFPLEdBQUcsRUFBRTtRQUVWLE9BQU8sYUFBYSxDQUFDLFFBQVE7YUFDMUIsSUFBSSxDQUNILElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakIsSUFBSSxNQUFNLENBQUMseUNBQXlDO21CQUMvQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ2pFLE9BQU8sa0JBQWtCLENBQUMsNkJBQTZCLEVBQUUsQ0FBQzthQUMzRDtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtRQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUViLG9DQUFvQztZQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7WUFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXhCLGdGQUFnRjtZQUNoRixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBb0I7SUFDMUQsT0FBTyxFQUFFLGVBQWU7SUFDeEIsVUFBVSxFQUFFLHFCQUFxQjtJQUNqQyxJQUFJLEVBQUU7UUFDSixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixVQUFVO0tBQ1g7SUFDRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEZhY3RvcnlQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV0lORE9XX1JFRiwgQVVUSF9DT05GSUdfU0VSVklDRSB9IGZyb20gJy4vcHJvdmlkZXJzJztcbmltcG9ydCB7IE9pZGNDb2RlRmxvd0NsaWVudCB9IGZyb20gJy4vb2lkYy1jb2RlLWZsb3ctY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2UsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL2NvbmZpZyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvbW9kZWxzJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL2V2ZW50cyc7XG5cbi8vIFRoaXMgQVBQX0lOSVRJQUxJWkVSIG1ha2VzIHN1cmUgdGhlIE9BdXRoU2VydmljZSBpcyByZWFkeVxuLy8gbXVzdCBiZSBhbiBleHBvcnQgZnVuY3Rpb24gZm9yIEFPVCB0byB3b3JrXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxlT2lkY0luaXRpYWxpemVyKFxuICBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlPEF1dGhDb25maWc+LFxuICBvaWRjQ29kZUZsb3dDbGllbnQ6IE9pZGNDb2RlRmxvd0NsaWVudCxcbiAgZXZlbnRzOiBFdmVudHNTZXJ2aWNlLFxuICB3aW5kb3c6IFdpbmRvdykge1xuICByZXR1cm4gKCkgPT4ge1xuXG4gICAgcmV0dXJuIGNvbmZpZ1NlcnZpY2UuY3VycmVudCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgICAgICBpZiAoY29uZmlnLmVuYWJsZUF1dGhvcml6YXRpb25DYWxsYmFja0FwcEluaXRpYWxpemVyXG4gICAgICAgICAgICAmJiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5jbHVkZXMoY29uZmlnLnRva2VuQ2FsbGJhY2tSb3V0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvaWRjQ29kZUZsb3dDbGllbnQuY3VycmVudFdpbmRvd0NvZGVGbG93Q2FsbGJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG5cbiAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhpcyBlcnJvcnMgZ2V0IGxvZ2dlZC5cbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdDYWxsYmFjayBmYWlsZWQgaW4gQVBQX0lOSVRJQUxJWkVSJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcblxuICAgICAgICAgIGV2ZW50cy5kaXNwYXRjaEVycm9yKGUpO1xuXG4gICAgICAgICAgLy8gRG8gbm90IHByZXZlbnQgYm9vdHN0cmFwcGluZyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGhhbmRsZSBlcnJvcnMgZ3JhY2VmdWxseS5cbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBTSU1QTEVfT0lEQ19BUFBfSU5JVElBTElaRVI6IEZhY3RvcnlQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICB1c2VGYWN0b3J5OiBzaW1wbGVPaWRjSW5pdGlhbGl6ZXIsXG4gIGRlcHM6IFtcbiAgICBBVVRIX0NPTkZJR19TRVJWSUNFLFxuICAgIE9pZGNDb2RlRmxvd0NsaWVudCxcbiAgICBFdmVudHNTZXJ2aWNlLFxuICAgIFdJTkRPV19SRUZcbiAgXSxcbiAgbXVsdGk6IHRydWUsXG59O1xuIl19