air-lib
Version:
This is Air's angular component library
178 lines • 14.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { CookieService } from 'ngx-cookie-service';
import { Router } from '@angular/router';
import { User } from '../entities/user';
import { BusMessageType } from '../entities/bus-message-type';
import { SessionContext } from './../entities/session-context';
import * as moment from 'moment'; // add this 1 of 4
// add this 1 of 4
import { CommunicationService } from './communication.service';
import * as i0 from "@angular/core";
import * as i1 from "ngx-cookie-service/cookie-service/cookie.service";
import * as i2 from "@angular/router";
import * as i3 from "../entities/session-context";
export class SessionService {
/**
* @param {?} cookiesService
* @param {?} router
* @param {?} sessionContext
*/
constructor(cookiesService, router, sessionContext) {
this.cookiesService = cookiesService;
this.router = router;
this.sessionContext = sessionContext;
this.userKey = 'AirUser';
this.adminAccessTokenKey = 'AirAdminToken';
this.adminReturnUrlKey = 'AirAdminReturnUrl';
this.isImpersonatedKey = 'AirIsImpersonated';
this.apiServer = sessionContext.apiServer;
/** @type {?} */
const userJson = localStorage.getItem(this.userKey);
this.user = userJson ? JSON.parse(userJson) : new User();
this.InitComponent();
this.isAuthenticated = false;
this.accessToken = '' + localStorage.getItem(SessionService.AccessTokenKey);
this.activities = new Array();
this.subscribeMessageBus = CommunicationService.getMessageBus()
.subscribe((msg) => {
if (msg.name === BusMessageType.NewUserLogin) {
this.referralTree = null;
}
});
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.subscribeMessageBus) {
this.subscribeMessageBus.unsubscribe();
}
}
/**
* @param {?} activity
* @return {?}
*/
hasActivity(activity) {
if (this.isAuthenticated && !this.activities.length) {
this.getActivitiesFromCookie();
}
if (!this.activities || !activity || !this.isAuthenticated) {
return false;
}
return this.activities.indexOf(activity) !== -1;
}
/**
* @param {?} userData
* @return {?}
*/
setUser(userData) {
this.user = userData;
/** @type {?} */
const userJson = JSON.stringify(this.user);
localStorage.setItem(this.userKey, userJson);
this.InitComponent();
}
/**
* @param {?} userProfileData
* @return {?}
*/
setUserProfile(userProfileData) {
this.userProfile = userProfileData;
CommunicationService.get().emit(this.userProfile);
}
/**
* @param {?} referralTree
* @return {?}
*/
setReferralTree(referralTree) {
this.referralTree = referralTree;
CommunicationService.get().emit(this.referralTree);
}
/**
* @private
* @return {?}
*/
InitComponent() {
moment.locale(this.user.locale ? this.user.locale : 'ru');
}
/**
* @private
* @return {?}
*/
getActivitiesFromCookie() {
/** @type {?} */
const activities = this.cookiesService.get('Activities');
this.activities = activities ? JSON.parse(activities) : [];
}
/**
* @return {?}
*/
isImpersonated() {
return Boolean(localStorage.getItem(this.isImpersonatedKey) === 'true'
? localStorage.getItem(this.isImpersonatedKey)
: false);
}
}
SessionService.AccessTokenKey = 'AirToken';
SessionService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
SessionService.ctorParameters = () => [
{ type: CookieService },
{ type: Router },
{ type: SessionContext }
];
/** @nocollapse */ SessionService.ngInjectableDef = i0.defineInjectable({ factory: function SessionService_Factory() { return new SessionService(i0.inject(i1.CookieService), i0.inject(i2.Router), i0.inject(i3.SessionContext)); }, token: SessionService, providedIn: "root" });
if (false) {
/** @type {?} */
SessionService.AccessTokenKey;
/** @type {?} */
SessionService.prototype.user;
/** @type {?} */
SessionService.prototype.isAuthenticated;
/** @type {?} */
SessionService.prototype.userProfile;
/** @type {?} */
SessionService.prototype.referralTree;
/** @type {?} */
SessionService.prototype.userKey;
/** @type {?} */
SessionService.prototype.adminAccessTokenKey;
/** @type {?} */
SessionService.prototype.adminReturnUrlKey;
/** @type {?} */
SessionService.prototype.isImpersonatedKey;
/** @type {?} */
SessionService.prototype.apiServer;
/** @type {?} */
SessionService.prototype.accessToken;
/** @type {?} */
SessionService.prototype.activities;
/**
* @type {?}
* @private
*/
SessionService.prototype.subscribeMessageBus;
/**
* @type {?}
* @private
*/
SessionService.prototype.cookiesService;
/**
* @type {?}
* @private
*/
SessionService.prototype.router;
/**
* @type {?}
* @private
*/
SessionService.prototype.sessionContext;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQjs7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBTS9ELE1BQU07Ozs7OztJQW1CSixZQUNVLGNBQTZCLEVBQzdCLE1BQWMsRUFDZCxjQUE4QjtRQUY5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBZmpDLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFFcEIsd0JBQW1CLEdBQUcsZUFBZSxDQUFDO1FBQ3RDLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLG1CQUFtQixDQUFDO1FBYTdDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQzs7Y0FFcEMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxD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LENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUM5QyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDOztBQXBGYSw2QkFBYyxHQUFHLFVBQVUsQ0FBQzs7WUFMM0MsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkUSxhQUFhO1lBQ2IsTUFBTTtZQU1OLGNBQWM7Ozs7O0lBVXJCLDhCQUEwQzs7SUFFMUMsOEJBQWtCOztJQUNsQix5Q0FBZ0M7O0lBQ2hDLHFDQUF1Qzs7SUFDdkMsc0NBQXlCOztJQUN6QixpQ0FBMkI7O0lBRTNCLDZDQUE2Qzs7SUFDN0MsMkNBQStDOztJQUMvQywyQ0FBK0M7O0lBRy9DLG1DQUF5Qjs7SUFDekIscUNBQTJCOztJQUMzQixvQ0FBaUM7Ozs7O0lBQ2pDLDZDQUEwQzs7Ozs7SUFHeEMsd0NBQXFDOzs7OztJQUNyQyxnQ0FBc0I7Ozs7O0lBQ3RCLHdDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lbnRpdGllcy91c2VyJztcclxuaW1wb3J0IHsgVXNlclByb2ZpbGUgfSBmcm9tICcuLi9lbnRpdGllcy91c2VyLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBCdXNNZXNzYWdlIH0gZnJvbSAnLi4vZW50aXRpZXMvYnVzLW1lc3NhZ2UnO1xyXG5pbXBvcnQgeyBCdXNNZXNzYWdlVHlwZSB9IGZyb20gJy4uL2VudGl0aWVzL2J1cy1tZXNzYWdlLXR5cGUnO1xyXG5pbXBvcnQgeyBTZXNzaW9uQ29udGV4dCB9IGZyb20gJy4vLi4vZW50aXRpZXMvc2Vzc2lvbi1jb250ZXh0JztcclxuXHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnOyAvLyBhZGQgdGhpcyAxIG9mIDRcclxuaW1wb3J0IHsgQ29tbXVuaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbW11bmljYXRpb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgU2Vzc2lvblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBzdGF0aWMgQWNjZXNzVG9rZW5LZXkgPSAnQWlyVG9rZW4nO1xyXG5cclxuICBwdWJsaWMgdXNlcjogVXNlcjtcclxuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyB1c2VyUHJvZmlsZTogVXNlclByb2ZpbGUgfCBudWxsO1xyXG4gIHB1YmxpYyByZWZlcnJhbFRyZWU6IGFueTtcclxuICBwdWJsaWMgdXNlcktleSA9ICdBaXJVc2VyJztcclxuXHJcbiAgcHVibGljIGFkbWluQWNjZXNzVG9rZW5LZXkgPSAnQWlyQWRtaW5Ub2tlbic7XHJcbiAgcHVibGljIGFkbWluUmV0dXJuVXJsS2V5ID0gJ0FpckFkbWluUmV0dXJuVXJsJztcclxuICBwdWJsaWMgaXNJbXBlcnNvbmF0ZWRLZXkgPSAnQWlySXNJbXBlcnNvbmF0ZWQnO1xyXG5cclxuXHJcbiAgcHVibGljIGFwaVNlcnZlcjogc3RyaW5nO1xyXG4gIHB1YmxpYyBhY2Nlc3NUb2tlbjogc3RyaW5nO1xyXG4gIHB1YmxpYyBhY3Rpdml0aWVzOiBBcnJheTxzdHJpbmc+O1xyXG4gIHByaXZhdGUgc3Vic2NyaWJlTWVzc2FnZUJ1czogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29va2llc1NlcnZpY2U6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uQ29udGV4dDogU2Vzc2lvbkNvbnRleHRcclxuICApIHtcclxuICAgIHRoaXMuYXBpU2VydmVyID0gc2Vzc2lvbkNvbnRleHQuYXBpU2VydmVyO1xyXG5cclxuICAgIGNvbnN0IHVzZXJKc29uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy51c2VyS2V5KTtcclxuICAgIHRoaXMudXNlciA9IHVzZXJKc29uID8gSlNPTi5wYXJzZSh1c2VySnNvbikgOiBuZXcgVXNlcigpO1xyXG4gICAgdGhpcy5Jbml0Q29tcG9uZW50KCk7XHJcblxyXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSAnJyArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNlc3Npb25TZXJ2aWNlLkFjY2Vzc1Rva2VuS2V5KTtcclxuICAgIHRoaXMuYWN0aXZpdGllcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVNZXNzYWdlQnVzID0gQ29tbXVuaWNhdGlvblNlcnZpY2UuZ2V0TWVzc2FnZUJ1cygpXHJcbiAgICAuc3Vic2NyaWJlKChtc2c6IEJ1c01lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1zZy5uYW1lID09PSBCdXNNZXNzYWdlVHlwZS5OZXdVc2VyTG9naW4pIHtcclxuICAgICAgICB0aGlzLnJlZmVycmFsVHJlZSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpYmVNZXNzYWdlQnVzKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlTWVzc2FnZUJ1cy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzQWN0aXZpdHkoYWN0aXZpdHk6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuaXNBdXRoZW50aWNhdGVkICYmICF0aGlzLmFjdGl2aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2V0QWN0aXZpdGllc0Zyb21Db29raWUoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5hY3Rpdml0aWVzIHx8ICFhY3Rpdml0eSB8fCAhdGhpcy5pc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdGllcy5pbmRleE9mKGFjdGl2aXR5KSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXNlcih1c2VyRGF0YTogVXNlcikge1xyXG4gICAgdGhpcy51c2VyID0gdXNlckRhdGE7XHJcbiAgICBjb25zdCB1c2VySnNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcik7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnVzZXJLZXksIHVzZXJKc29uKTtcclxuICAgIHRoaXMuSW5pdENvbXBvbmVudCgpO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0VXNlclByb2ZpbGUodXNlclByb2ZpbGVEYXRhOiBVc2VyUHJvZmlsZSkge1xyXG4gICAgdGhpcy51c2VyUHJvZmlsZSA9IHVzZXJQcm9maWxlRGF0YTtcclxuICAgIENvbW11bmljYXRpb25TZXJ2aWNlLmdldCgpLmVtaXQodGhpcy51c2VyUHJvZmlsZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXRSZWZlcnJhbFRyZWUocmVmZXJyYWxUcmVlOiBhbnkpIHtcclxuICAgIHRoaXMucmVmZXJyYWxUcmVlID0gcmVmZXJyYWxUcmVlO1xyXG4gICAgQ29tbXVuaWNhdGlvblNlcnZpY2UuZ2V0KCkuZW1pdCh0aGlzLnJlZmVycmFsVHJlZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEluaXRDb21wb25lbnQoKSB7XHJcbiAgICBtb21lbnQubG9jYWxlKHRoaXMudXNlci5sb2NhbGUgPyB0aGlzLnVzZXIubG9jYWxlIDogJ3J1Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFjdGl2aXRpZXNGcm9tQ29va2llKCkge1xyXG4gICAgY29uc3QgYWN0aXZpdGllcyA9IHRoaXMuY29va2llc1NlcnZpY2UuZ2V0KCdBY3Rpdml0aWVzJyk7XHJcbiAgICB0aGlzLmFjdGl2aXRpZXMgPSBhY3Rpdml0aWVzID8gSlNPTi5wYXJzZShhY3Rpdml0aWVzKSA6IFtdO1xyXG4gIH1cclxuICBwdWJsaWMgaXNJbXBlcnNvbmF0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmlzSW1wZXJzb25hdGVkS2V5KSA9PT0gJ3RydWUnXHJcbiAgICAgID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pc0ltcGVyc29uYXRlZEtleSlcclxuICAgICAgOiBmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==