stimulsoft-forms
Version:
Stimulsoft PDF Forms
129 lines • 17.3 kB
JavaScript
import { Injectable } from "@angular/core";
import { StiLocalizationService } from "./sti-localization.service";
import StiJson from "../system/StiJson";
import * as i0 from "@angular/core";
import * as i1 from "./model.service";
export class StiUserService {
constructor(model) {
this.model = model;
this.showLocalizationPreview = false;
this.showUserInfo = false;
this.buildDate = new Date(2022, 8, 27);
this.trialMessage = "";
}
get currentUser() {
return this._currentUser;
}
set currentUser(value) {
if (value) {
if (value == "empty") {
this._currentUser = null;
}
else {
let user = this.model.toCamelCase(value);
this._currentUser = user;
if (user?.created && !this.model.isWebView && (!this.licenseProducts || this.licenseProducts.length == 0)) {
this.buildDate = StiJson.jsonDateFormatToDate(user.created).date;
}
if (this.model.properties) {
this.model.properties.developerRole = user.developerRole;
}
}
this.checkLicense();
}
}
getBackground(user) {
let key = user?.userKey ? user?.userKey : user?.key ?? "key";
var r = 0;
var g = 0;
var b = 0;
for (var i = 0; i < key.length / 3; i += 3) {
r += key.charCodeAt(i);
g += key.charCodeAt(i + 1);
b += key.charCodeAt(i + 2);
}
r = (r % 100) + 100;
g = (g % 100) + 100;
b = (b % 100) + 100;
return `rgb(${r},${g}, ${b})`;
}
checkLicense() {
this.model.userWasChecked = true;
if (this.licenseProducts?.length > 0 || this.currentUser) {
let expirationDate = 0;
if (this.licenseProducts?.length > 0) {
this.licenseProducts.forEach((product) => {
if (product.ident == "Ultimate" ||
product.ident == "FormsWeb" ||
product.ident == 1 ||
product.ident == 26 ||
product.ident == "BICloud" ||
product.ident == 18 ||
product.ident == "BIDesigner" ||
product.ident == 12) {
expirationDate = Math.max(expirationDate, new Date(product.expirationDate).getTime());
}
});
}
if (this.currentUser) {
this.model.userIsAuthorized = true;
}
if (expirationDate != 0 && expirationDate > this.buildDate.getTime()) {
this.model.showTrialBar = this.currentUser?.developerRole == "Owner";
this.model.showTrialModalWindow = false;
this.model.showTrialTitle = this.currentUser?.developerRole == "Owner";
this.model.userIsAuthorized = true;
}
else {
this.showTrial();
}
}
else {
this.showTrial();
}
}
resetTrial() {
this.model.showTrialBar = true;
this.model.showTrialTitle = true;
this.model.canCloseTrialWindow = true;
this.model.disableCloseButton = false;
this.model.showTrialModalWindow = false;
}
showTrial() {
let currentDate = new Date();
let trDays = Math.floor((currentDate.getTime() - this.buildDate.getTime()) / 1000 / 60 / 60 / 24);
this.trialMessage = StiLocalizationService.get("Notices", "YouUsingTrialVersion");
this.resetTrial();
if (trDays > 30) {
this.model.disableCloseButton = true;
}
if (!this.model.buildDate) {
return;
}
if (trDays > 45) {
this.model.showTrialTitle = true;
setTimeout(() => {
if (this.currentUser) {
this.model.showTrialModalWindow = true;
}
}, 3000);
}
if (trDays > 60) {
if (this.currentUser) {
this.model.canCloseTrialWindow = false;
}
this.trialMessage = StiLocalizationService.get("Notices", "YourTrialHasExpired");
setTimeout(() => {
if (this.currentUser) {
this.model.showTrialModalWindow = true;
}
}, 3000);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StiUserService, deps: [{ token: i1.StiModelService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StiUserService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StiUserService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.StiModelService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpLXVzZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0aW11bHNvZnQtZm9ybXMvc3JjL2xpYi9zZXJ2aWNlcy9zdGktdXNlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7OztBQUd4QyxNQUFNLE9BQU8sY0FBYztJQVN6QixZQUFtQixLQUFzQjtRQUF0QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQVBsQyw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDekMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFJOUIsY0FBUyxHQUFTLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsaUJBQVksR0FBVyxFQUFFLENBQUM7SUFDWSxDQUFDO0lBRTlDLElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVcsV0FBVyxDQUFDLEtBQUs7UUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMs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SSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQzsrR0F6SFUsY0FBYzttSEFBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN0aU1vZGVsU2VydmljZSB9IGZyb20gXCIuL21vZGVsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RpTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCIuL3N0aS1sb2NhbGl6YXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgU3RpSnNvbiBmcm9tIFwiLi4vc3lzdGVtL1N0aUpzb25cIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN0aVVzZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9jdXJyZW50VXNlcjogYW55O1xyXG4gIHB1YmxpYyBzaG93TG9jYWxpemF0aW9uUHJldmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93VXNlckluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcHJldmlld1g6IG51bWJlcjtcclxuICBwdWJsaWMgcHJldmlld1k6IG51bWJlcjtcclxuICBwdWJsaWMgbGljZW5zZVByb2R1Y3RzOiBhbnk7XHJcbiAgcHVibGljIGJ1aWxkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKDIwMjIsIDgsIDI3KTtcclxuICBwdWJsaWMgdHJpYWxNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RlbDogU3RpTW9kZWxTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50VXNlcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VXNlcjtcclxuICB9XHJcbiAgcHVibGljIHNldCBjdXJyZW50VXNlcih2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGlmICh2YWx1ZSA9PSBcImVtcHR5XCIpIHtcclxuICAgICAgICB0aGlzLl9jdXJyZW50VXNlciA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHVzZXIgPSB0aGlzLm1vZGVsLnRvQ2FtZWxDYXNlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50VXNlciA9IHVzZXI7XHJcbiAgICAgICAgaWYgKHVzZXI/LmNyZWF0ZWQgJiYgIXRoaXMubW9kZWwuaXNXZWJWaWV3ICYmICghdGhpcy5saWNlbnNlUHJvZHVjdHMgfHwgdGhpcy5saWNlbnNlUHJvZHVjdHMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1aWxkRGF0ZSA9IFN0aUpzb24uanNvbkRhdGVGb3JtYXRUb0RhdGUodXNlci5jcmVhdGVkKS5kYXRlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwucHJvcGVydGllcykge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5wcm9wZXJ0aWVzLmRldmVsb3BlclJvbGUgPSB1c2VyLmRldmVsb3BlclJvbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hlY2tMaWNlbnNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEJhY2tncm91bmQodXNlcjogYW55KSB7XHJcbiAgICBsZXQga2V5ID0gdXNlcj8udXNlcktleSA/IHVzZXI/LnVzZXJLZXkgOiB1c2VyPy5rZXkgPz8gXCJrZXlcIjtcclxuICAgIHZhciByID0gMDtcclxuICAgIHZhciBnID0gMDtcclxuICAgIHZhciBiID0gMDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aCAvIDM7IGkgKz0gMykge1xyXG4gICAgICByICs9IGtleS5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICBnICs9IGtleS5jaGFyQ29kZUF0KGkgKyAxKTtcclxuICAgICAgYiArPSBrZXkuY2hhckNvZGVBdChpICsgMik7XHJcbiAgICB9XHJcbiAgICByID0gKHIgJSAxMDApICsgMTAwO1xyXG4gICAgZyA9IChnICUgMTAwKSArIDEwMDtcclxuICAgIGIgPSAoYiAlIDEwMCkgKyAxMDA7XHJcbiAgICByZXR1cm4gYHJnYigke3J9LCR7Z30sICR7Yn0pYDtcclxuICB9XHJcblxyXG4gIGNoZWNrTGljZW5zZSgpIHtcclxuICAgIHRoaXMubW9kZWwudXNlcldhc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMubGljZW5zZVByb2R1Y3RzPy5sZW5ndGggPiAwIHx8IHRoaXMuY3VycmVudFVzZXIpIHtcclxuICAgICAgbGV0IGV4cGlyYXRpb25EYXRlID0gMDtcclxuICAgICAgaWYgKHRoaXMubGljZW5zZVByb2R1Y3RzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5saWNlbnNlUHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBwcm9kdWN0LmlkZW50ID09IFwiVWx0aW1hdGVcIiB8fFxyXG4gICAgICAgICAgICBwcm9kdWN0LmlkZW50ID09IFwiRm9ybXNXZWJcIiB8fFxyXG4gICAgICAgICAgICBwcm9kdWN0LmlkZW50ID09IDEgfHxcclxuICAgICAgICAgICAgcHJvZHVjdC5pZGVudCA9PSAyNiB8fFxyXG4gICAgICAgICAgICBwcm9kdWN0LmlkZW50ID09IFwiQklDbG91ZFwiIHx8XHJcbiAgICAgICAgICAgIHByb2R1Y3QuaWRlbnQgPT0gMTggfHxcclxuICAgICAgICAgICAgcHJvZHVjdC5pZGVudCA9PSBcIkJJRGVzaWduZXJcIiB8fFxyXG4gICAgICAgICAgICBwcm9kdWN0LmlkZW50ID09IDEyXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZXhwaXJhdGlvbkRhdGUgPSBNYXRoLm1heChleHBpcmF0aW9uRGF0ZSwgbmV3IERhdGUocHJvZHVjdC5leHBpcmF0aW9uRGF0ZSkuZ2V0VGltZSgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VXNlcikge1xyXG4gICAgICAgIHRoaXMubW9kZWwudXNlcklzQXV0aG9yaXplZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cGlyYXRpb25EYXRlICE9IDAgJiYgZXhwaXJhdGlvbkRhdGUgPiB0aGlzLmJ1aWxkRGF0ZS5nZXRUaW1lKCkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLnNob3dUcmlhbEJhciA9IHRoaXMuY3VycmVudFVzZXI/LmRldmVsb3BlclJvbGUgPT0gXCJPd25lclwiO1xyXG4gICAgICAgIHRoaXMubW9kZWwuc2hvd1RyaWFsTW9kYWxXaW5kb3cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vZGVsLnNob3dUcmlhbFRpdGxlID0gdGhpcy5jdXJyZW50VXNlcj8uZGV2ZWxvcGVyUm9sZSA9PSBcIk93bmVyXCI7XHJcbiAgICAgICAgdGhpcy5tb2RlbC51c2VySXNBdXRob3JpemVkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dUcmlhbCgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dUcmlhbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRUcmlhbCgpIHtcclxuICAgIHRoaXMubW9kZWwuc2hvd1RyaWFsQmFyID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kZWwuc2hvd1RyaWFsVGl0bGUgPSB0cnVlO1xyXG4gICAgdGhpcy5tb2RlbC5jYW5DbG9zZVRyaWFsV2luZG93ID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kZWwuZGlzYWJsZUNsb3NlQnV0dG9uID0gZmFsc2U7XHJcbiAgICB0aGlzLm1vZGVsLnNob3dUcmlhbE1vZGFsV2luZG93ID0gZmFsc2U7XHJcbiAgfVxyXG4gIHNob3dUcmlhbCgpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBsZXQgdHJEYXlzID0gTWF0aC5mbG9vcigoY3VycmVudERhdGUuZ2V0VGltZSgpIC0gdGhpcy5idWlsZERhdGUuZ2V0VGltZSgpKSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpO1xyXG4gICAgdGhpcy50cmlhbE1lc3NhZ2UgPSBTdGlMb2NhbGl6YXRpb25TZXJ2aWNlLmdldChcIk5vdGljZXNcIiwgXCJZb3VVc2luZ1RyaWFsVmVyc2lvblwiKTtcclxuICAgIHRoaXMucmVzZXRUcmlhbCgpO1xyXG4gICAgaWYgKHRyRGF5cyA+IDMwKSB7XHJcbiAgICAgIHRoaXMubW9kZWwuZGlzYWJsZUNsb3NlQnV0dG9uID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5tb2RlbC5idWlsZERhdGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRyRGF5cyA+IDQ1KSB7XHJcbiAgICAgIHRoaXMubW9kZWwuc2hvd1RyaWFsVGl0bGUgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VXNlcikge1xyXG4gICAgICAgICAgdGhpcy5tb2RlbC5zaG93VHJpYWxNb2RhbFdpbmRvdyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAzMDAwKTtcclxuICAgIH1cclxuICAgIGlmICh0ckRheXMgPiA2MCkge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VXNlcikge1xyXG4gICAgICAgIHRoaXMubW9kZWwuY2FuQ2xvc2VUcmlhbFdpbmRvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJpYWxNZXNzYWdlID0gU3RpTG9jYWxpemF0aW9uU2VydmljZS5nZXQoXCJOb3RpY2VzXCIsIFwiWW91clRyaWFsSGFzRXhwaXJlZFwiKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVzZXIpIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwuc2hvd1RyaWFsTW9kYWxXaW5kb3cgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMzAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==