angular-simple-oidc
Version:
Angular Library implementing Open Id Connect specification. Code Flow, Refresh Tokens, Session Management, Discovery Document.
42 lines • 5.81 kB
JavaScript
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