UNPKG

angular-simple-oidc

Version:

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

56 lines 6.97 kB
import { __awaiter } from "tslib"; import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil, take } from 'rxjs/operators'; import { TokensReadyEvent, } from '../auth.events'; import { TokenHelperService } from 'angular-simple-oidc/core'; import { EventsService, SimpleOidcInfoEvent } from 'angular-simple-oidc/events'; import { TokenStorageService } from '../token-storage.service'; export class TokenFromStorageInitializerDaemonService { constructor(events, storage, tokenHelper) { this.events = events; this.storage = storage; this.tokenHelper = tokenHelper; this.destroyedSubject = new Subject(); } startDaemon() { this.loadTokenFromStorage(); } loadTokenFromStorage() { return __awaiter(this, void 0, void 0, function* () { const currentState = yield this.storage.currentState$ .pipe(take(1), takeUntil(this.destroyedSubject)) .toPromise(); if (!currentState.accessToken && !currentState.identityToken && !currentState.refreshToken) { return; } if (!this.tokenHelper.isTokenExpired(currentState.accessTokenExpiration)) { this.events.dispatch(new TokensReadyEvent({ accessToken: currentState.accessToken, accessTokenExpiresAt: currentState.accessTokenExpiration, decodedIdToken: currentState.decodedIdentityToken, idToken: currentState.identityToken, refreshToken: currentState.refreshToken, })); } else { this.events.dispatch(new SimpleOidcInfoEvent('Found token in storage but it\'s expired')); } }); } ngOnDestroy() { this.destroyedSubject.next(); this.destroyedSubject.complete(); } } TokenFromStorageInitializerDaemonService.decorators = [ { type: Injectable } ]; TokenFromStorageInitializerDaemonService.ctorParameters = () => [ { type: EventsService }, { type: TokenStorageService }, { type: TokenHelperService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tZnJvbS1zdG9yYWdlLWluaXRpYWxpemVyLWRhZW1vbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zaW1wbGUtb2lkYy9zcmMvbGliL2RhZW1vbnMvdG9rZW4tZnJvbS1zdG9yYWdlLWluaXRpYWxpemVyLWRhZW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRyxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9ELE1BQU0sT0FBTyx3Q0FBd0M7SUFHbkQsWUFDcUIsTUFBcUIsRUFDckIsT0FBNEIsRUFDNUIsV0FBK0I7UUFGL0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFMakMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU1qRCxDQUFDO0lBRUcsV0FBVztRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRVksb0JBQW9COztZQUMvQixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtpQkFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQy9DLFNBQVMsRUFBRSxDQUFDO1lBRWYsSUFDRSxDQUFDLFlBQVksQ0FBQyxXQUFXO2dCQUN6QixDQUFDLFlBQVksQ0FBQyxhQUFhO2dCQUMzQixDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQzFCO2dCQUNBLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLElBQUksZ0JBQWdCLENBQUM7b0JBQ25CLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztvQkFDckMsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLHFCQUFxQjtvQkFDeEQsY0FBYyxFQUFFLFlBQVksQ0FBQyxvQkFBb0I7b0JBQ2pELE9BQU8sRUFBRSxZQUFZLENBQUMsYUFBYTtvQkFDbkMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZO2lCQUN4QyxDQUFDLENBQ0gsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNsQixJQUFJLG1CQUFtQixDQUFDLDBDQUEwQyxDQUFDLENBQ3BFLENBQUM7YUFDSDtRQUNILENBQUM7S0FBQTtJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7WUEvQ0YsVUFBVTs7O1lBSEYsYUFBYTtZQUNiLG1CQUFtQjtZQUZuQixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ICBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsICB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgVG9rZW5zUmVhZHlFdmVudCxcbn0gZnJvbSAnLi4vYXV0aC5ldmVudHMnO1xuaW1wb3J0IHsgVG9rZW5IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1zaW1wbGUtb2lkYy9jb3JlJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UsIFNpbXBsZU9pZGNJbmZvRXZlbnQgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL2V2ZW50cyc7XG5pbXBvcnQgeyBUb2tlblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vdG9rZW4tc3RvcmFnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuRnJvbVN0b3JhZ2VJbml0aWFsaXplckRhZW1vblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkU3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmFnZTogVG9rZW5TdG9yYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9rZW5IZWxwZXI6IFRva2VuSGVscGVyU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIHN0YXJ0RGFlbW9uKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZFRva2VuRnJvbVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkVG9rZW5Gcm9tU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuY3VycmVudFN0YXRlJFxuICAgICAgLnBpcGUodGFrZSgxKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkU3ViamVjdCkpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBpZiAoXG4gICAgICAhY3VycmVudFN0YXRlLmFjY2Vzc1Rva2VuICYmXG4gICAgICAhY3VycmVudFN0YXRlLmlkZW50aXR5VG9rZW4gJiZcbiAgICAgICFjdXJyZW50U3RhdGUucmVmcmVzaFRva2VuXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRva2VuSGVscGVyLmlzVG9rZW5FeHBpcmVkKGN1cnJlbnRTdGF0ZS5hY2Nlc3NUb2tlbkV4cGlyYXRpb24pKSB7XG4gICAgICB0aGlzLmV2ZW50cy5kaXNwYXRjaChcbiAgICAgICAgbmV3IFRva2Vuc1JlYWR5RXZlbnQoe1xuICAgICAgICAgIGFjY2Vzc1Rva2VuOiBjdXJyZW50U3RhdGUuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgYWNjZXNzVG9rZW5FeHBpcmVzQXQ6IGN1cnJlbnRTdGF0ZS5hY2Nlc3NUb2tlbkV4cGlyYXRpb24sXG4gICAgICAgICAgZGVjb2RlZElkVG9rZW46IGN1cnJlbnRTdGF0ZS5kZWNvZGVkSWRlbnRpdHlUb2tlbixcbiAgICAgICAgICBpZFRva2VuOiBjdXJyZW50U3RhdGUuaWRlbnRpdHlUb2tlbixcbiAgICAgICAgICByZWZyZXNoVG9rZW46IGN1cnJlbnRTdGF0ZS5yZWZyZXNoVG9rZW4sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV2ZW50cy5kaXNwYXRjaChcbiAgICAgICAgbmV3IFNpbXBsZU9pZGNJbmZvRXZlbnQoJ0ZvdW5kIHRva2VuIGluIHN0b3JhZ2UgYnV0IGl0XFwncyBleHBpcmVkJylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkU3ViamVjdC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==