angular-simple-oidc
Version:
Angular Library implementing Open Id Connect specification. Code Flow, Refresh Tokens, Session Management, Discovery Document.
31 lines • 3.91 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil, switchMap } from 'rxjs/operators';
import { EventsService } from 'angular-simple-oidc/events';
import { filterInstanceOf } from 'angular-simple-oidc/operators';
import { AuthService } from '../auth.service';
import { AccessTokenExpiringEvent } from '../auth.events';
export class ExpiringTokenRefresherDaemonService {
constructor(auth, events) {
this.auth = auth;
this.events = events;
this.destroyedSubject = new Subject();
}
startDaemon() {
this.auth.events$
.pipe(filterInstanceOf(AccessTokenExpiringEvent), switchMap(() => this.auth.refreshAccessToken()), takeUntil(this.destroyedSubject))
.subscribe();
}
ngOnDestroy() {
this.destroyedSubject.next();
this.destroyedSubject.complete();
}
}
ExpiringTokenRefresherDaemonService.decorators = [
{ type: Injectable }
];
ExpiringTokenRefresherDaemonService.ctorParameters = () => [
{ type: AuthService },
{ type: EventsService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwaXJpbmctdG9rZW4tcmVmcmVzaGVyLWRhZW1vbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1zaW1wbGUtb2lkYy9zcmMvbGliL2RhZW1vbnMvZXhwaXJpbmctdG9rZW4tcmVmcmVzaGVyLWRhZW1vbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUQsTUFBTSxPQUFPLG1DQUFtQztJQUc5QyxZQUNxQixJQUFpQixFQUNqQixNQUFxQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFKdkIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUtqRCxDQUFDO0lBRUcsV0FBVztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87YUFDZCxJQUFJLENBQ0gsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsRUFDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQ2pDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7WUF0QkYsVUFBVTs7O1lBSEYsV0FBVztZQUZYLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItc2ltcGxlLW9pZGMvZXZlbnRzJztcbmltcG9ydCB7IGZpbHRlckluc3RhbmNlT2YgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkV4cGlyaW5nRXZlbnQgfSBmcm9tICcuLi9hdXRoLmV2ZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFeHBpcmluZ1Rva2VuUmVmcmVzaGVyRGFlbW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWRTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIHN0YXJ0RGFlbW9uKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aC5ldmVudHMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVySW5zdGFuY2VPZihBY2Nlc3NUb2tlbkV4cGlyaW5nRXZlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hdXRoLnJlZnJlc2hBY2Nlc3NUb2tlbigpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkU3ViamVjdClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkU3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=