@alauda-fe/common
Version:
Alauda frontend team common codes.
57 lines • 7.49 kB
JavaScript
/**
* @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=