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