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