angular-simple-oidc
Version:
Angular Library implementing Open Id Connect specification. Code Flow, Refresh Tokens, Session Management, Discovery Document.
36 lines • 4.83 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { switchMap, takeUntil } from 'rxjs/operators';
import { TokensReadyEvent } from '../auth.events';
import { SessionCheckService } from './session-check.service';
import { SessionChangedEvent } from './events';
import { filterInstanceOf } from 'angular-simple-oidc/operators';
import { EventsService } from 'angular-simple-oidc/events';
export class SessionCheckDaemonService {
constructor(sessionCheck, events) {
this.sessionCheck = sessionCheck;
this.events = events;
this.destroyedSubject = new Subject();
}
startDaemon() {
const sessionChanged$ = this.events.events$
.pipe(filterInstanceOf(SessionChangedEvent));
// Start session checks when we receive tokens.
this.events.events$
.pipe(filterInstanceOf(TokensReadyEvent), switchMap(() => this.sessionCheck.startSessionCheck()
.pipe(takeUntil(sessionChanged$))), takeUntil(this.destroyedSubject))
.subscribe();
}
ngOnDestroy() {
this.destroyedSubject.next();
this.destroyedSubject.complete();
}
}
SessionCheckDaemonService.decorators = [
{ type: Injectable }
];
SessionCheckDaemonService.ctorParameters = () => [
{ type: SessionCheckService },
{ type: EventsService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1jaGVjay1kYWVtb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItc2ltcGxlLW9pZGMvc3JjL2xpYi9zZXNzaW9uLW1hbmFnZW1lbnQvc2Vzc2lvbi1jaGVjay1kYWVtb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFDcUIsWUFBaUMsRUFDakMsTUFBcUI7UUFEckIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFKdkIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQU1wRCxDQUFDO0lBRU0sV0FBVztRQUNoQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87YUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUUvQywrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2FBQ2hCLElBQUksQ0FDSCxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNsQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRTthQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQ3BDLEVBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNqQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7O1lBOUJGLFVBQVU7OztZQUxGLG1CQUFtQjtZQUduQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25EZXN0cm95LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRva2Vuc1JlYWR5RXZlbnQgfSBmcm9tICcuLi9hdXRoLmV2ZW50cyc7XG5pbXBvcnQgeyBTZXNzaW9uQ2hlY2tTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLWNoZWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkNoYW5nZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGZpbHRlckluc3RhbmNlT2YgfSBmcm9tICdhbmd1bGFyLXNpbXBsZS1vaWRjL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1zaW1wbGUtb2lkYy9ldmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkNoZWNrRGFlbW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWRTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Vzc2lvbkNoZWNrOiBTZXNzaW9uQ2hlY2tTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudHM6IEV2ZW50c1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgcHVibGljIHN0YXJ0RGFlbW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb25DaGFuZ2VkJCA9IHRoaXMuZXZlbnRzLmV2ZW50cyRcbiAgICAgIC5waXBlKGZpbHRlckluc3RhbmNlT2YoU2Vzc2lvbkNoYW5nZWRFdmVudCkpO1xuXG4gICAgLy8gU3RhcnQgc2Vzc2lvbiBjaGVja3Mgd2hlbiB3ZSByZWNlaXZlIHRva2Vucy5cbiAgICB0aGlzLmV2ZW50cy5ldmVudHMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVySW5zdGFuY2VPZihUb2tlbnNSZWFkeUV2ZW50KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgdGhpcy5zZXNzaW9uQ2hlY2suc3RhcnRTZXNzaW9uQ2hlY2soKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHNlc3Npb25DaGFuZ2VkJCkpXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZFN1YmplY3QpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkU3ViamVjdC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==