UNPKG

angular-simple-oidc

Version:

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

50 lines 5.96 kB
import { Injectable } from '@angular/core'; import { RequiredConfigurationMissingError, NullConfigurationProvidedError } from './errors'; import { ReplaySubject } from 'rxjs'; import { EventsService, SimpleOidcInfoEvent } from 'angular-simple-oidc/events'; export class ConfigService { constructor(events) { this.events = events; this.configSubject = new ReplaySubject(1); } get current$() { return this.configSubject.asObservable(); } configure(config, options = {}) { try { if (!config) { throw new NullConfigurationProvidedError({ config }); } const current = Object.assign({}, options.defaultConfig, config); if (options.requiredFields) { this.validateConfiguration(current, options.requiredFields); } this.configSubject.next(current); this.events.dispatch(new SimpleOidcInfoEvent('Configuration obtained', current)); } catch (e) { // Make sure we error on the subject too // so that subscribers can react accordingly this.configSubject.error(e); throw e; } } validateConfiguration(config, requiredFields) { // Fields that are not in the config aka == undefined const invalidFields = requiredFields .filter(field => !(field in config)); if (invalidFields.length) { throw new RequiredConfigurationMissingError({ config, requiredFields }); } } } ConfigService.decorators = [ { type: Injectable } ]; ConfigService.ctorParameters = () => [ { type: EventsService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXNpbXBsZS1vaWRjL2NvbmZpZy9saWIvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEYsTUFBTSxPQUFPLGFBQWE7SUFReEIsWUFBK0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUYxQyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFJLENBQUMsQ0FBQyxDQUFDO0lBRU0sQ0FBQztJQU56RCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFNTSxTQUFTLENBQUMsTUFBUyxFQUFFLFVBQW1DLEVBQUU7UUFDL0QsSUFBSTtZQUNGLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLDhCQUE4QixDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUN0RDtZQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFakUsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFO2dCQUMxQixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM3RDtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNsRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1Ysd0NBQXdDO1lBQ3hDLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVTLHFCQUFxQixDQUFDLE1BQVMsRUFBRSxjQUEyQjtRQUNwRSxxREFBcUQ7UUFDckQsTUFBTSxhQUFhLEdBQUcsY0FBYzthQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFdkMsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ3hCLE1BQU0sSUFBSSxpQ0FBaUMsQ0FBQztnQkFDMUMsTUFBTTtnQkFDTixjQUFjO2FBQ2YsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUE1Q0YsVUFBVTs7O1lBUEYsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcXVpcmVkQ29uZmlndXJhdGlvbk1pc3NpbmdFcnJvciwgTnVsbENvbmZpZ3VyYXRpb25Qcm92aWRlZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSwgU2ltcGxlT2lkY0luZm9FdmVudCB9IGZyb20gJ2FuZ3VsYXItc2ltcGxlLW9pZGMvZXZlbnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdTZXJ2aWNlT3B0aW9uczxUPiB7XG4gIGRlZmF1bHRDb25maWc/OiBQYXJ0aWFsPFQ+O1xuICByZXF1aXJlZEZpZWxkcz86IChrZXlvZiBUKVtdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZTxUPiB7XG5cbiAgcHVibGljIGdldCBjdXJyZW50JCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxUPigxKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgZXZlbnRzOiBFdmVudHNTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgY29uZmlndXJlKGNvbmZpZzogVCwgb3B0aW9uczogQ29uZmlnU2VydmljZU9wdGlvbnM8VD4gPSB7fSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgTnVsbENvbmZpZ3VyYXRpb25Qcm92aWRlZEVycm9yKHsgY29uZmlnIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucy5kZWZhdWx0Q29uZmlnLCBjb25maWcpO1xuXG4gICAgICBpZiAob3B0aW9ucy5yZXF1aXJlZEZpZWxkcykge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29uZmlndXJhdGlvbihjdXJyZW50LCBvcHRpb25zLnJlcXVpcmVkRmllbGRzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29uZmlnU3ViamVjdC5uZXh0KGN1cnJlbnQpO1xuXG4gICAgICB0aGlzLmV2ZW50cy5kaXNwYXRjaChuZXcgU2ltcGxlT2lkY0luZm9FdmVudCgnQ29uZmlndXJhdGlvbiBvYnRhaW5lZCcsIGN1cnJlbnQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgd2UgZXJyb3Igb24gdGhlIHN1YmplY3QgdG9vXG4gICAgICAvLyBzbyB0aGF0IHN1YnNjcmliZXJzIGNhbiByZWFjdCBhY2NvcmRpbmdseVxuICAgICAgdGhpcy5jb25maWdTdWJqZWN0LmVycm9yKGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb25maWd1cmF0aW9uKGNvbmZpZzogVCwgcmVxdWlyZWRGaWVsZHM6IChrZXlvZiBUKVtdKSB7XG4gICAgLy8gRmllbGRzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY29uZmlnIGFrYSA9PSB1bmRlZmluZWRcbiAgICBjb25zdCBpbnZhbGlkRmllbGRzID0gcmVxdWlyZWRGaWVsZHNcbiAgICAgIC5maWx0ZXIoZmllbGQgPT4gIShmaWVsZCBpbiBjb25maWcpKTtcblxuICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJlcXVpcmVkQ29uZmlndXJhdGlvbk1pc3NpbmdFcnJvcih7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWlyZWRGaWVsZHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19