UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

57 lines 7.49 kB
/** * @packageDocumentation * @module authorization */ import { Injectable } from '@angular/core'; import { from, of, catchError, map, timer, fromEvent, merge, timeout, } from 'rxjs'; import { getGlobalEnvironments, TRUE, catchPromise } from '../core/public-api'; import { checkAuthorizationToken, getCachedAccountInfo, logout, logoutAudit, refreshAuthorizationToken, } from './authorization'; import { LOADING_CACHE, HEARTBEAT_POLLING } from './constants'; import { readStorageAliveRecord, refreshStorageAliveRecord, readStorageToken, } from './storage-token'; import * as i0 from "@angular/core"; export class AuthorizationStateService { get payloadSnapshot() { return getCachedAccountInfo() || null; } constructor() { this.logout = logout; if (getGlobalEnvironments('CLOSE_BROWSER_END_SESSION') === TRUE) { const aliveRecord = readStorageAliveRecord(); if (!aliveRecord || Date.now() - aliveRecord > HEARTBEAT_POLLING + LOADING_CACHE) { this.logoutWithAudit(); return; } merge(timer(0, HEARTBEAT_POLLING), fromEvent(window, 'beforeunload')).subscribe(refreshStorageAliveRecord); } } logoutWithAudit() { catchPromise(logoutAudit()) .pipe(timeout(1000), map(res => res?.logout_redirect_url)) .subscribe(redirectUrl => { logout(redirectUrl); }); } refreshToken() { return from(refreshAuthorizationToken()).pipe(catchError(() => from(logout(true)))); } checkToken() { return from(checkAuthorizationToken()); } getTokenPayload() { return of(this.payloadSnapshot); } getAccountInfo() { return of(this.payloadSnapshot || {}); } getTokenByStorage() { return readStorageToken(); } static { this.ɵfac = function AuthorizationStateService_Factory(t) { return new (t || AuthorizationStateService)(); }; } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthorizationStateService, factory: AuthorizationStateService.ɵfac, providedIn: 'root' }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthorizationStateService, [{ type: Injectable, args: [{ providedIn: 'root' }] }], () => [], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsSUFBSSxFQUNKLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0UsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLFdBQVcsRUFDWCx5QkFBeUIsR0FDMUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDOztBQUd6QixNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLElBQUksZUFBZTtRQUNqQixPQUFPLG9CQUFvQixFQUFFLElBQUksSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFJRDtRQUZBLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFHZCxJQUFJLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDaEUsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztZQUM3QyxJQUNFLENBQUMsV0FBVztnQkFDWixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsV0FBVyxHQUFHLGlCQUFpQixHQUFHLGFBQWEsRUFDNUQsQ0FBQztnQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87WUFDVCxDQUFDO1lBRUQsS0FBSyxDQUNILEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFDM0IsU0FBUyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FDbEMsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FDckM7YUFDQSxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQzswRkF4RFUseUJBQXlCO3VFQUF6Qix5QkFBeUIsV0FBekIseUJBQXlCLG1CQURaLE1BQU07O2lGQUNuQix5QkFBeUI7Y0FEckMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGF1dGhvcml6YXRpb25cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBmcm9tLFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICB0aW1lcixcbiAgZnJvbUV2ZW50LFxuICBtZXJnZSxcbiAgdGltZW91dCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGdldEdsb2JhbEVudmlyb25tZW50cywgVFJVRSwgY2F0Y2hQcm9taXNlIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHtcbiAgY2hlY2tBdXRob3JpemF0aW9uVG9rZW4sXG4gIGdldENhY2hlZEFjY291bnRJbmZvLFxuICBsb2dvdXQsXG4gIGxvZ291dEF1ZGl0LFxuICByZWZyZXNoQXV0aG9yaXphdGlvblRva2VuLFxufSBmcm9tICcuL2F1dGhvcml6YXRpb24nO1xuaW1wb3J0IHsgTE9BRElOR19DQUNIRSwgSEVBUlRCRUFUX1BPTExJTkcgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZWFkU3RvcmFnZUFsaXZlUmVjb3JkLFxuICByZWZyZXNoU3RvcmFnZUFsaXZlUmVjb3JkLFxuICByZWFkU3RvcmFnZVRva2VuLFxufSBmcm9tICcuL3N0b3JhZ2UtdG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25TdGF0ZVNlcnZpY2Uge1xuICBnZXQgcGF5bG9hZFNuYXBzaG90KCkge1xuICAgIHJldHVybiBnZXRDYWNoZWRBY2NvdW50SW5mbygpIHx8IG51bGw7XG4gIH1cblxuICBsb2dvdXQgPSBsb2dvdXQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGdldEdsb2JhbEVudmlyb25tZW50cygnQ0xPU0VfQlJPV1NFUl9FTkRfU0VTU0lPTicpID09PSBUUlVFKSB7XG4gICAgICBjb25zdCBhbGl2ZVJlY29yZCA9IHJlYWRTdG9yYWdlQWxpdmVSZWNvcmQoKTtcbiAgICAgIGlmIChcbiAgICAgICAgIWFsaXZlUmVjb3JkIHx8XG4gICAgICAgIERhdGUubm93KCkgLSBhbGl2ZVJlY29yZCA+IEhFQVJUQkVBVF9QT0xMSU5HICsgTE9BRElOR19DQUNIRVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9nb3V0V2l0aEF1ZGl0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbWVyZ2UoXG4gICAgICAgIHRpbWVyKDAsIEhFQVJUQkVBVF9QT0xMSU5HKSxcbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JlZm9yZXVubG9hZCcpLFxuICAgICAgKS5zdWJzY3JpYmUocmVmcmVzaFN0b3JhZ2VBbGl2ZVJlY29yZCk7XG4gICAgfVxuICB9XG5cbiAgbG9nb3V0V2l0aEF1ZGl0KCkge1xuICAgIGNhdGNoUHJvbWlzZShsb2dvdXRBdWRpdCgpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRpbWVvdXQoMTAwMCksXG4gICAgICAgIG1hcChyZXMgPT4gcmVzPy5sb2dvdXRfcmVkaXJlY3RfdXJsKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVkaXJlY3RVcmwgPT4ge1xuICAgICAgICBsb2dvdXQocmVkaXJlY3RVcmwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKSB7XG4gICAgcmV0dXJuIGZyb20ocmVmcmVzaEF1dGhvcml6YXRpb25Ub2tlbigpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBmcm9tKGxvZ291dCh0cnVlKSkpLFxuICAgICk7XG4gIH1cblxuICBjaGVja1Rva2VuKCkge1xuICAgIHJldHVybiBmcm9tKGNoZWNrQXV0aG9yaXphdGlvblRva2VuKCkpO1xuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkPFQ+KCkge1xuICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCBhcyBUKTtcbiAgfVxuXG4gIGdldEFjY291bnRJbmZvKCkge1xuICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCB8fCB7fSk7XG4gIH1cblxuICBnZXRUb2tlbkJ5U3RvcmFnZSgpIHtcbiAgICByZXR1cm4gcmVhZFN0b3JhZ2VUb2tlbigpO1xuICB9XG59XG4iXX0=