{"version":3,"file":"../js/qmc.login.min.js","sources":["qmc.login.min.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n(function () {\n angular.module('QMC.NewsFeed', []);\n angular.module('QMC.Login', ['QMC.NewsFeed']).run(['$rootScope', '$document', '$window', function ($rootScope, $document, $window) {\n function setCapsLockOn(isOn) {\n $rootScope.isCapsLockOn = isOn;\n $rootScope.$apply();\n }\n ;\n function bindingForAppleDevice() {\n $document.bind(\"keydown\", function (event) {\n if (event.keyCode === 20) {\n setCapsLockOn(true);\n }\n });\n $document.bind(\"keyup\", function (event) {\n if (event.keyCode === 20) {\n setCapsLockOn(false);\n }\n });\n $document.bind(\"keypress\", function (event) {\n var code = event.charCode || event.keyCode;\n var shift = event.shiftKey;\n if (code > 96 && code < 123) {\n setCapsLockOn(false);\n }\n if (code > 64 && code < 91 && !shift) {\n setCapsLockOn(true);\n }\n });\n }\n ;\n function bindingForOthersDevices() {\n var isKeyPressed = true;\n $document.bind(\"keydown\", function (event) {\n if (event.originalEvent && event.originalEvent.getModifierState) {\n return setCapsLockOn(event.originalEvent.getModifierState('CapsLock'));\n }\n if (!isKeyPressed && event.keyCode === 20) {\n isKeyPressed = true;\n if ($rootScope.isCapsLockOn) {\n setCapsLockOn(!$rootScope.isCapsLockOn);\n }\n }\n });\n $document.bind(\"keyup\", function (event) {\n if (event.keyCode === 20) {\n isKeyPressed = false;\n }\n });\n $document.bind(\"keypress\", function (event) {\n var code = event.charCode || event.keyCode;\n var shift = event.shiftKey;\n if (code > 96 && code < 123) {\n setCapsLockOn(shift);\n }\n if (code > 64 && code < 91) {\n setCapsLockOn(!shift);\n }\n });\n }\n ;\n // Once the window goes out of focus, we can't be sure of the caps lock state\n // so we have to default to not showing.\n $window.addEventListener('blur', function () {\n setCapsLockOn(false);\n });\n if (/Mac|iPad|iPhone|iPod/.test(navigator.platform)) {\n bindingForAppleDevice();\n }\n else {\n bindingForOthersDevices();\n }\n }]);\n})();\nvar QMC;\n(function (QMC) {\n var Login;\n (function (Login) {\n var LoginController = /** @class */ (function () {\n function LoginController(loginService, $scope) {\n var _this = this;\n this.loginService = loginService;\n this.$scope = $scope;\n this.targetVersion = [8, 0];\n this.version = {\n target: this.targetVersion.join('.'),\n current: \"\"\n };\n this.isInternetExplorer = false;\n this.isChrome = false;\n this.isApple = false;\n this.startTimeTrackingWithLogin = true;\n this.isLoginProcessing = false;\n this.errorMessage = \"\";\n this.hasError = false;\n this.showErrorDetails = false;\n //two factor authorization\n this.isZfaProcessing = false;\n this.mustDoZfa = false;\n this.zfaMsg = \"\";\n this.zfaFailedAttempts = 0;\n this.mustChangePw = false;\n this.changePasswordErrorMessage = \"\";\n this.newPassword1 = \"\";\n this.newPassword2 = \"\";\n this.token = \"\";\n this.hasDonePwReset = false;\n this.resetPasswordErrorMessage = \"\";\n this.$scope.zfaInput = [\n { value: undefined, index: 0 }, { value: undefined, index: 1 }, { value: undefined, index: 2 },\n { value: undefined, index: 3 }, { value: undefined, index: 4 }, { value: undefined, index: 5 }\n ];\n sessionStorage.clear();\n var sessionData = $('#session').data();\n this.baseRoute = sessionData.baseUrl;\n this.redirectRoute = sessionData.redirectRoute;\n this.showScreen();\n if (this.baseRoute.length > 0 && this.baseRoute.charAt(this.baseRoute.length - 1) != '/')\n this.baseRoute = this.baseRoute + '/';\n if (this.redirectRoute.charAt(0) != '/')\n this.redirectRoute = '/' + this.redirectRoute;\n if (mustChangePw.toLocaleLowerCase() == \"true\") {\n this.mustChangePw = true;\n this.token = sessionData.apiKey;\n this.deleteAllCookies();\n this.changePasswordErrorMessage = message;\n if (this.token == (null || undefined || \"\"))\n this.goBack();\n }\n var ua = navigator.userAgent;\n this.isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n if ((ua.indexOf('MSIE') > -1) || (ua.indexOf('Trident') > -1))\n this.isInternetExplorer = true;\n if (ua.match(/iPad/i) || ua.match(/iPhone/i))\n this.isApple = true;\n this.init();\n // every 30sec keep session alive\n this.sessionInterval = setInterval(function () {\n if (_this.token && _this.token.length > 0) {\n _this.loginService.keepSessionAlive(_this.token);\n }\n }, 30000);\n }\n LoginController.prototype.init = function () {\n var _this = this;\n this.isLoginProcessing = true;\n this.loginService.getLanguages()\n .then(function (data) {\n data.push({ id: QMC.Common.Constants.GUID_EMPTY, name: \"Letzte Sprache\", default: true });\n _this.languages = data;\n _this.isLoginProcessing = false;\n _this.hasError = false;\n _this.selectedLanguageId = QMC.Common.Constants.GUID_EMPTY;\n _this.showScreen();\n }).catch(function (e) {\n _this.hasError = true;\n var error = [];\n if (e && Array.isArray(e.GlobalErrors))\n error = error.concat(e.GlobalErrors);\n if (e && Array.isArray(e.FieldErrors))\n error = error.concat(e.FieldErrors);\n if (error.length === 0)\n error.push('Failed to load languages');\n _this.errorMessage = error.join('; ');\n _this.showScreen();\n _this.isLoginProcessing = false;\n });\n this.loginService.getVersion()\n .then(function (data) {\n _this.version.current = data.buildVersion;\n _this.useAnalytics = data.useAnalytics;\n var currentVersion = _this.version.current.split('.');\n if (currentVersion.length === 0 || parseInt(currentVersion[0]) !== _this.targetVersion[0])\n _this.handleWrongVersion();\n if (currentVersion.length > 1 && parseInt(currentVersion[1]) !== _this.targetVersion[1])\n _this.handleWrongVersion();\n _this.showScreen();\n });\n };\n LoginController.prototype.handleWrongVersion = function () {\n this.wrongVersion = true;\n $('#versionWarningModal').modal('show');\n };\n LoginController.prototype.showScreen = function () {\n var _this = this;\n if (!document.getElementById('login-container')) {\n setTimeout(function () { _this.showScreen(); }, 500);\n }\n document.getElementById('login-container').style.display = 'block';\n document.getElementById('load-placeholder').style.display = 'none';\n };\n LoginController.prototype.login = function () {\n var _this = this;\n this.showErrorDetails = false;\n this.hasError = false;\n this.isLoginProcessing = true;\n this.errorMessage = \"\";\n // make sure there is no 2FA session cookie at this moment\n document.cookie = \"AspNet.WebClient.46946=false; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/\";\n var selectedLanguage = \"00000000-0000-0000-0000-000000000000\";\n if (this.selectedLanguageId != null && this.selectedLanguageId !== \"\")\n selectedLanguage = this.selectedLanguageId;\n //! rework\n this.loginService.login(this.username, this.password, selectedLanguage, window.navigator.userAgent, this.startTimeTrackingWithLogin)\n .then(function (data) {\n _this.userLoginResult = data;\n _this.mustChangePw = false;\n if (data.zfaCheck) {\n if (data.zfaNoEmailAdress || !data.zfaEmailSent) {\n _this.deleteAllCookies();\n _this.userLoginResult = null;\n _this.isLoginProcessing = false;\n _this.mustDoZfa = false;\n if (data.zfaNoEmailAdress) {\n _this.errorMessage = (data.zfaErrMessage && (data.zfaErrMessage !== \"\")) ? data.zfaErrMessage : \"Ohne gültige E-Mailadresse ist ein Log in mit 2-Faktor-Authentisierung nicht möglich. Wenden Sie sich bitte an Ihren Administrator\";\n }\n else if (!data.zfaEmailSent) {\n _this.errorMessage = (data.zfaErrMessage && (data.zfaErrMessage !== \"\")) ? data.zfaErrMessage : \"Fehler bei E-Mailversand\";\n }\n _this.hasError = true;\n console.log(_this.errorMessage);\n return;\n }\n _this.mustDoZfa = true;\n //set a session cookie to remember that two factor authentication is still needed\n document.cookie = \"AspNet.WebClient.46946=true; path=/\";\n _this.focusFirstZfaInputField();\n }\n else {\n _this.setLocationOnSuccessfulLogin();\n }\n })\n .catch(function (data) {\n _this.mustChangePw = false;\n if (data.mustChangePassword) {\n _this.userLoginResult = data;\n _this.setLocationToChangePassword();\n return;\n }\n _this.errorMessage = data.resultMessage;\n _this.hasError = data.hasError;\n _this.isLoginProcessing = false;\n console.log(_this.errorMessage);\n });\n };\n LoginController.prototype.setLocationOnSuccessfulLogin = function () {\n this.isLoginProcessing = false;\n if (!this.userLoginResult) {\n this.goBack();\n }\n window.localStorage.removeItem(\"NAVIGATION\");\n localStorage.setItem(QMC.Common.LocalStorageConstants.LAST_LANGUAGE_SELECTION, String(this.selectedLanguageId));\n window.location.href = this.baseRoute + \"#\" + this.redirectRoute;\n localStorage.setItem(QMC.Common.LocalStorageConstants.USER_MODULE_PERMISSIONS, JSON.stringify(this.userLoginResult.modulePermissions));\n };\n LoginController.prototype.setLocationToChangePassword = function () {\n this.isLoginProcessing = false;\n if (!this.userLoginResult) {\n this.goBack();\n }\n window.location.href = this.baseRoute + 'Login?dbConnectionString=' + angular.element('#connection').data(\"db-options\") + '&changePassword=true&error=' + this.userLoginResult.resultMessage;\n };\n /*\n private toggleTimeTrackingStart() {\n this.startTimeTrackingWithLogin = !this.startTimeTrackingWithLogin;\n localStorage.setItem(\"timeTrackingStartToggle\", this.startTimeTrackingWithLogin? \"true\":\"false\" );\n }\n */\n LoginController.prototype.zfaCancel = function () {\n this.isZfaProcessing = true;\n this.goBack();\n };\n LoginController.prototype.userZfaCheckKey = function () {\n var _this = this;\n this.isZfaProcessing = true;\n this.zfaMsg = '';\n this.loginService.userZfaCheckKey(this.getZfaInputKey(), window.navigator.userAgent, this.userLoginResult.userId)\n .then(function (data) {\n if (data.zfaResult) {\n if (_this.userLoginResult) {\n //two factor authentication is done, remove the session cookie\n document.cookie = \"AspNet.WebClient.46946=false; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/\";\n _this.setLocationOnSuccessfulLogin();\n }\n else {\n _this.isZfaProcessing = false;\n _this.goBack();\n }\n }\n else {\n _this.zfaFailedAttempts++;\n //if (this.zfaFailedAttempts > 2) {\n //\tthis.deleteAllCookies();\n //\tthis.userLoginResult = null;\n //\tthis.errorMessage = \"Die maximale Anzahl an Versuchen für die Eingabe des Sicherheitscodes wurde überschritten, Sie wurden ausgeloggt\";\n //\tthis.hasError = data.hasError;\n //\tthis.isLoginProcessing = false;\n //\tthis.mustDoZfa = false;\n //\treturn;\n //}\n _this.isZfaProcessing = false;\n _this.zfaMsg = (data.ZfaResultMessage && data.ZfaResultMessage !== \"\") ? data.ZfaResultMessage : \"Der angegebene Sicherheitscode ist nicht korrekt, versuchen Sie es bitte erneut\";\n }\n })\n .catch(function (e) {\n console.error('userZfaCheckKey failed', e);\n _this.zfaMsg = 'Es ist ein fehler aufgetreten, versuchen Sie es bitte erneut';\n _this.isZfaProcessing = false;\n });\n };\n LoginController.prototype.getZfaInputKey = function () {\n var result = \"\";\n this.$scope.zfaInput.map(function (ítem) { return result += ítem.value.toString().replace(\" \", \"\").trim(); });\n return result;\n };\n LoginController.prototype.focusFirstZfaInputField = function () {\n var _a;\n if (this.$scope.zfaInput.length > 0) {\n (_a = document.getElementById('zfaInput0')) === null || _a === void 0 ? void 0 : _a.focus();\n }\n };\n LoginController.prototype.isZfaInputFilled = function () {\n return !this.$scope.zfaInput.some(function (item) { return item.value === undefined; });\n };\n LoginController.prototype.setZfaFocusEvent = function () {\n var _this = this;\n this.$scope.zfaInput.map(function (item) {\n if (item) {\n var element = document.getElementById('zfaInput' + item.index);\n element.addEventListener('onfocus', function (e) { return _this.onZfaFocus(e); });\n }\n });\n };\n LoginController.prototype.onZfaFocus = function (event) {\n if (!event || !event.target || this.$scope.zfaInput.length === 0)\n return;\n var element = event.target;\n //lenght of 'zfaInput' + index\n if (element.id.length < 9) {\n return;\n }\n var slice = element.id.slice(8, element.id.length);\n if (Number.isNaN(slice)) {\n return;\n }\n var index = Number(slice);\n this.$scope.zfaInput[index].value = undefined;\n };\n LoginController.prototype.onZfaKeyUp = function (event) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var element, index, clipboardValue_1, _loop_1, this_1, i, e_1;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!event || !event.target || this.$scope.zfaInput.length === 0)\n return [2 /*return*/];\n element = event.target;\n element.setAttribute('disabled', 'disabled'); //lock the input field for the time of this event\n index = +((_a = element.id) === null || _a === void 0 ? void 0 : _a.charAt(element.id.length > 0 ? element.id.length - 1 : 0));\n switch (event.key) {\n case 'ArrowLeft':\n case 'Backspace':\n this.zfaGoLeft(index);\n break;\n case 'ArrowRight':\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n this.zfaGoRight(index);\n break;\n }\n if (!(event.keyCode === 86)) return [3 /*break*/, 4];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n this.$scope.zfaInput.map(function (item) { return document.getElementById('zfaInput' + item.index).setAttribute('disabled', 'disabled'); });\n return [4 /*yield*/, navigator.clipboard.readText()];\n case 2:\n clipboardValue_1 = _b.sent();\n //number inside the clipboard?\n if (clipboardValue_1 === '' || Number.isNaN(clipboardValue_1)) {\n return [2 /*return*/];\n }\n if (clipboardValue_1.length > this.$scope.zfaInput.length) {\n clipboardValue_1 = clipboardValue_1.substring(0, this.$scope.zfaInput.length - 1);\n }\n _loop_1 = function (i) {\n if (!Number.isNaN(clipboardValue_1[i])) {\n // Trigger Angular's change detection manually\n // force Angular to update the view\n this_1.$scope.$apply(function () {\n _this.$scope.zfaInput[i].value = Number(clipboardValue_1[i]);\n //const inputElement: HTMLInputElement = document.getElementById('zfaInput' + i) as HTMLInputElement;\n //inputElement.value = clipboardValue[i];\n });\n }\n };\n this_1 = this;\n for (i = 0; i < clipboardValue_1.length; i++) {\n _loop_1(i);\n }\n this.$scope.$apply();\n this.$scope.zfaInput.map(function (item) { return document.getElementById('zfaInput' + item.index).removeAttribute('disabled'); });\n element.setAttribute('disabled', 'disabled');\n return [3 /*break*/, 4];\n case 3:\n e_1 = _b.sent();\n console.error('failure while trying to paste clipboard into input fields', e_1);\n return [3 /*break*/, 4];\n case 4:\n // this input has or should have ng-maximun = 1, but sometimes that doesn´t do the job...\n if (element.value.length > 1)\n element.value = element.value.slice(0, 1);\n element.removeAttribute('disabled'); //unlock the input field\n return [2 /*return*/];\n }\n });\n });\n };\n //get the next element and set focus\n LoginController.prototype.zfaGoRight = function (index) {\n var nextIndex = index + 1;\n if (nextIndex > this.$scope.zfaInput.length - 1)\n return;\n var nextElementId = 'zfaInput' + nextIndex;\n var nextElement = document.getElementById(nextElementId);\n if (nextElement) {\n nextElement.focus();\n }\n };\n //get the previous element and set focus\n LoginController.prototype.zfaGoLeft = function (index) {\n var previousIndex = index - 1;\n if (previousIndex < 0) {\n this.focusFirstZfaInputField();\n return;\n }\n var previousElementId = 'zfaInput' + previousIndex;\n var previousElement = document.getElementById(previousElementId);\n if (previousElement) {\n previousElement.focus();\n }\n };\n LoginController.prototype.changePw = function () {\n var _this = this;\n this.isLoginProcessing = true;\n this.changePasswordErrorMessage = '';\n this.loginService.checkPasswordRules(this.newPassword1).then(function (data) {\n if (data.error) {\n data.errorList.map(function (errorListItem) {\n if (_this.changePasswordErrorMessage.length > 0) {\n _this.changePasswordErrorMessage += '\\r\\n';\n }\n _this.changePasswordErrorMessage += errorListItem;\n });\n _this.isLoginProcessing = false;\n }\n else {\n _this.loginService.putNewPassword(null, _this.newPassword1, _this.token).then(function (data) {\n _this.isLoginProcessing = false;\n _this.goBack();\n }).catch(function (data) {\n console.error('Pw update failed', data);\n _this.isLoginProcessing = false;\n _this.changePasswordErrorMessage = \"\";\n if (data.fieldErrors && data.fieldErrors.hasOwnProperty('currentPassword')) {\n for (var _i = 0, _a = data.fieldErrors.currentPassword; _i < _a.length; _i++) {\n var element = _a[_i];\n _this.changePasswordErrorMessage += element + \" \";\n }\n return;\n }\n if (data.fieldErrors && data.fieldErrors.hasOwnProperty('newPassword')) {\n for (var _b = 0, _c = data.fieldErrors.newPassword; _b < _c.length; _b++) {\n var element = _c[_b];\n _this.changePasswordErrorMessage += element + \" \";\n }\n return;\n }\n _this.changePasswordErrorMessage = \"Ein unbekannter Fehler ist aufgetreten. Das Passwort konnte nicht geändert werden.\";\n });\n }\n });\n };\n LoginController.prototype.resetPw = function () {\n var _this = this;\n this.hasDonePwReset = false;\n this.resetPasswordErrorMessage = \"\";\n this.loginService.resetUserPassword(this.email).then(function (data) {\n _this.hasDonePwReset = true;\n }).catch(function (e) {\n var error = [];\n if (e && Array.isArray(e.GlobalErrors))\n error = error.concat(e.GlobalErrors);\n if (e && Array.isArray(e.FieldErrors))\n error = error.concat(e.FieldErrors);\n if (error.length === 0)\n error.push('Es ist ein Fehler aufgetreten. Das Passwort konnte nicht zurückgesetzt werden.');\n _this.resetPasswordErrorMessage = error.join('; ');\n console.error('Pw reset failed', e);\n });\n };\n LoginController.prototype.toggleShowErrorDetails = function () {\n this.showErrorDetails = !this.showErrorDetails;\n };\n LoginController.prototype.getCookie = function (cname) {\n var name = cname + \"=\";\n var decodedCookie = decodeURIComponent(document.cookie);\n var ca = decodedCookie.split(';');\n for (var _i = 0, ca_1 = ca; _i < ca_1.length; _i++) {\n var element = ca_1[_i];\n var c = element;\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return \"\";\n };\n LoginController.prototype.deleteAllCookies = function () {\n var cookies = document.cookie.split(\";\");\n for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) {\n var element = cookies_1[_i];\n var cookie = element;\n var eqPos = cookie.indexOf(\"=\");\n var name_1 = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = name_1 + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n };\n LoginController.prototype.goBack = function () {\n window.location.href = this.baseRoute + \"#\" + this.redirectRoute + (this.redirectRoute.indexOf('?') ? '&' : '?') + 'dbConnectionString=' + angular.element('#connection').data(\"db-options\");\n };\n LoginController.$inject = ['LoginService', '$scope'];\n return LoginController;\n }());\n Login.LoginController = LoginController;\n })(Login = QMC.Login || (QMC.Login = {}));\n})(QMC || (QMC = {}));\n(function () {\n angular\n .module('QMC.Login')\n .controller('LoginController', QMC.Login.LoginController);\n})();\nvar QMC;\n(function (QMC) {\n var Login;\n (function (Login) {\n var LoginService = /** @class */ (function () {\n function LoginService($http, $q) {\n this.$http = $http;\n this.$q = $q;\n var sessionData = $('#session').data();\n this.apiData = { url: sessionData.api, key: sessionData.apiKey };\n }\n LoginService.prototype.getLanguages = function () {\n var deferred = this.$q.defer();\n this.$http.get(this.apiData.url + '/Languages', { params: { dbConnectionString: angular.element('#connection').data(\"db-options\") } })\n .then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.getVersion = function () {\n var deferred = this.$q.defer();\n this.$http.get(this.apiData.url + '/Info', { params: { dbConnectionString: angular.element('#connection').data(\"db-options\") } })\n .then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.login = function (username, password, languageId, clientKey, startTimeTracking) {\n var deferred = this.$q.defer();\n // Current url without parameters\n var currentUrl = location.protocol + '//' + location.host + location.pathname;\n this.$http.post(currentUrl, {\n UserName: username,\n Password: password,\n LanguageId: languageId,\n ClientKey: clientKey,\n DbConnection: angular.element('#connection').data(\"db-options\")\n }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.userZfaCheckKey = function (key, clientKey, userId) {\n var deferred = this.$q.defer();\n var url = this.apiData.url + \"/User/ZfaCheck\";\n this.$http.post(url, { Key: key, ClientKey: clientKey, UserId: userId }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.resetUserPassword = function (email) {\n var deferred = this.$q.defer();\n var url = this.apiData.url + \"/User/ResetPassword\";\n this.$http.post(url, { email: email }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.checkPasswordRules = function (newPassword) {\n var deferred = this.$q.defer();\n var url = this.apiData.url + \"/User/CheckPasswordRules/\";\n this.$http.post(url, { Password: newPassword }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.putNewPassword = function (currentPassword, newPassword, token) {\n if (token === void 0) { token = \"\"; }\n var deferred = this.$q.defer();\n this.$http.put(this.apiData.url + '/User/Password', {\n CurrentPassword: currentPassword,\n NewPassword: newPassword\n }, { headers: { 'Authorization': \"Bearer \" + token } }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.startTimeTracking = function () {\n var deferred = this.$q.defer();\n this.$http.post(this.apiData.url + '/TimeTracking/Start', {}).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.prototype.keepSessionAlive = function (token) {\n var deferred = this.$q.defer();\n this.$http.put(this.apiData.url + '/session/qmc', {}, { headers: { 'Authorization': \"Bearer \" + token } }).then(function (response) {\n deferred.resolve(response.data);\n }).catch(function (response) {\n deferred.reject(response.data);\n });\n return deferred.promise;\n };\n LoginService.$inject = ['$http', '$q'];\n return LoginService;\n }());\n Login.LoginService = LoginService;\n })(Login = QMC.Login || (QMC.Login = {}));\n})(QMC || (QMC = {}));\n(function () {\n angular\n .module('QMC.Login')\n .service('LoginService', QMC.Login.LoginService);\n})();\nvar QMC;\n(function (QMC) {\n var NewsFeed;\n (function (NewsFeed) {\n var NewsFeedDirective = /** @class */ (function () {\n function NewsFeedDirective(newsFeedService) {\n var _this = this;\n this.newsFeedService = newsFeedService;\n this.mainFeed = new NewsFeed.NewsFeedItem();\n this.subFeeds = [];\n this.backgroundImgUrl = '';\n this.currentYear = new Date().getFullYear().toString();\n this.hasError = false;\n this.errorMessage = '';\n this.maxDisplayedSubFeeds = 5;\n this.$postLink = function () { _this.init(); };\n }\n NewsFeedDirective.prototype.init = function () {\n this.getNewsFeedData();\n if (!this.hasError && this.mainFeed) {\n this.show();\n }\n };\n NewsFeedDirective.prototype.show = function () {\n var _this = this;\n if (!document.getElementById('newsfeed-content')) {\n setTimeout(function () { _this.show(); }, 500);\n }\n document.getElementById('newsfeed-load-placeholder').style.display = 'none';\n document.getElementById('newsfeed-content').style.display = 'block';\n document.getElementById('newsfeed-container').style.flexGrow = \"1\";\n };\n NewsFeedDirective.prototype.getNewsFeedData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var feed;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.newsFeedService.getNewsFeed()];\n case 1:\n feed = _a.sent();\n if (feed) {\n this.getNewsFeedImage(feed);\n this.getNewsFeedItems(feed);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n NewsFeedDirective.prototype.getNewsFeedImage = function (feed) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n try {\n this.backgroundImgUrl = (_a = feed.rss.channel.image.url) !== null && _a !== void 0 ? _a : '';\n }\n catch (_c) {\n console.error('A problem occurred while loading the Background Image.');\n }\n return [2 /*return*/];\n });\n });\n };\n NewsFeedDirective.prototype.getNewsFeedItems = function (feed) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var feedsLength, arr;\n return __generator(this, function (_b) {\n try {\n //main feed\n if (feed.rss.channel.item.length > 0) {\n this.mainFeed = (_a = feed.rss.channel.item[0]) !== null && _a !== void 0 ? _a : new NewsFeed.NewsFeedItem();\n }\n //sub feeds\n if (feed.rss.channel.item.length > 1) {\n feedsLength = Math.min(feed.rss.channel.item.length + 1, this.maxDisplayedSubFeeds + 1);\n arr = feed.rss.channel.item.slice(1, feedsLength);\n this.subFeeds = arr;\n }\n }\n catch (_c) {\n this.subFeeds = [];\n this.hasError = true;\n console.error('A problem occurred while loading the NewsFeed items.');\n }\n return [2 /*return*/];\n });\n });\n };\n return NewsFeedDirective;\n }());\n NewsFeed.NewsFeedDirective = NewsFeedDirective;\n angular\n .module('QMC.NewsFeed')\n .component('newsfeed', {\n templateUrl: $('#session').data().baseUrl + 'Templates/LoginNewsFeed',\n controller: ['NewsFeedService', NewsFeedDirective],\n controllerAs: 'vm'\n });\n })(NewsFeed = QMC.NewsFeed || (QMC.NewsFeed = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var NewsFeed;\n (function (NewsFeed_1) {\n var NewsFeed = /** @class */ (function () {\n function NewsFeed() {\n }\n return NewsFeed;\n }());\n NewsFeed_1.NewsFeed = NewsFeed;\n var NewsFeedRss = /** @class */ (function () {\n function NewsFeedRss() {\n }\n return NewsFeedRss;\n }());\n NewsFeed_1.NewsFeedRss = NewsFeedRss;\n var NewsFeedChannel = /** @class */ (function () {\n function NewsFeedChannel() {\n this.item = [];\n }\n return NewsFeedChannel;\n }());\n NewsFeed_1.NewsFeedChannel = NewsFeedChannel;\n var NewsFeedImage = /** @class */ (function () {\n function NewsFeedImage() {\n }\n return NewsFeedImage;\n }());\n NewsFeed_1.NewsFeedImage = NewsFeedImage;\n var NewsFeedItem = /** @class */ (function () {\n function NewsFeedItem(jsonItem) {\n var _a, _b, _c, _d, _e;\n this.link = (_a = jsonItem === null || jsonItem === void 0 ? void 0 : jsonItem.link) !== null && _a !== void 0 ? _a : \"\";\n this.title = (_b = jsonItem === null || jsonItem === void 0 ? void 0 : jsonItem.title) !== null && _b !== void 0 ? _b : \"\";\n this.description = (_c = jsonItem === null || jsonItem === void 0 ? void 0 : jsonItem.description[0]) !== null && _c !== void 0 ? _c : \"\";\n this.published = (_d = jsonItem === null || jsonItem === void 0 ? void 0 : jsonItem.published) !== null && _d !== void 0 ? _d : \"\";\n this.category = (_e = jsonItem === null || jsonItem === void 0 ? void 0 : jsonItem.category) !== null && _e !== void 0 ? _e : \"\";\n }\n return NewsFeedItem;\n }());\n NewsFeed_1.NewsFeedItem = NewsFeedItem;\n })(NewsFeed = QMC.NewsFeed || (QMC.NewsFeed = {}));\n})(QMC || (QMC = {}));\nvar QMC;\n(function (QMC) {\n var NewsFeed;\n (function (NewsFeed) {\n var NewsFeedService = /** @class */ (function () {\n function NewsFeedService($http, $q) {\n this.$http = $http;\n this.$q = $q;\n this.newsfeedUrl = 'https://update.qmcenter.de/technews-de.xml';\n var sessionData = $('#session').data();\n this.apiData = { url: sessionData.api, key: sessionData.apiKey };\n }\n NewsFeedService.prototype.getNewsFeed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.getFeedFromUrl()];\n case 1:\n result = _b.sent();\n return [3 /*break*/, 3];\n case 2:\n _a = _b.sent();\n console.error('A problem occurred while loading the NewsFeed from ' + this.newsfeedUrl);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/, result];\n }\n });\n });\n };\n NewsFeedService.prototype.getFeedFromUrl = function () {\n return __awaiter(this, void 0, void 0, function () {\n var xmlDoc, feed;\n return __generator(this, function (_a) {\n xmlDoc = this.getNewsFeedAsXml();\n feed = this.parseFeed(xmlDoc);\n return [2 /*return*/, feed];\n });\n });\n };\n NewsFeedService.prototype.getNewsFeedAsXml = function () {\n var result = null;\n var xmlHttpRequest = new XMLHttpRequest();\n xmlHttpRequest.open('GET', this.newsfeedUrl, false);\n xmlHttpRequest.send(null);\n if (xmlHttpRequest.responseXML)\n result = xmlHttpRequest.responseXML;\n return result;\n };\n NewsFeedService.prototype.parseFeed = function (xmlDoc) {\n var feed = new NewsFeed.NewsFeed();\n feed.rss = new NewsFeed.NewsFeedRss();\n feed.rss.channel = new NewsFeed.NewsFeedChannel();\n if (!xmlDoc)\n return feed;\n var rssElement = xmlDoc.getElementsByTagName('rss')[0];\n var channelElement = rssElement.getElementsByTagName('channel')[0];\n feed.rss.channel = this.parseNewsFeedChannel(channelElement);\n return feed;\n };\n NewsFeedService.prototype.parseNewsFeedChannel = function (channelElement) {\n var result = new NewsFeed.NewsFeedChannel();\n //image\n var imageElement = channelElement.getElementsByTagName('image')[0];\n result.image = this.parseNewsFeedImage(imageElement);\n //item\n var itemElements = channelElement.getElementsByTagName('item');\n for (var i = 0; i < itemElements.length; i++) {\n var itemElement = itemElements[i];\n var item = this.parseItem(itemElement);\n result.item.push(item);\n }\n return result;\n };\n NewsFeedService.prototype.parseNewsFeedImage = function (imageElement) {\n var result = new NewsFeed.NewsFeedImage();\n if (imageElement) {\n result.url = this.getElementTextContent(imageElement, 'url');\n result.title = this.getElementTextContent(imageElement, 'title');\n result.link = this.getElementTextContent(imageElement, 'link');\n }\n return result;\n };\n NewsFeedService.prototype.parseItem = function (itemElement) {\n var item = new NewsFeed.NewsFeedItem();\n if (itemElement) {\n item.link = this.getElementTextContent(itemElement, 'link');\n item.title = this.getElementTextContent(itemElement, 'title');\n item.description = this.getElementTextContent(itemElement, 'description');\n item.published = new Date(this.getElementTextContent(itemElement, 'pubDate'));\n item.category = this.getElementTextContent(itemElement, 'category');\n }\n return item;\n };\n NewsFeedService.prototype.getElementTextContent = function (parentElement, tagName) {\n var elements = parentElement.getElementsByTagName(tagName);\n if (elements.length > 0) {\n return elements[0].textContent || '';\n }\n return '';\n };\n NewsFeedService.$inject = ['$http', '$q'];\n return NewsFeedService;\n }());\n NewsFeed.NewsFeedService = NewsFeedService;\n })(NewsFeed = QMC.NewsFeed || (QMC.NewsFeed = {}));\n})(QMC || (QMC = {}));\n(function () {\n angular\n .module('QMC.NewsFeed')\n .service('NewsFeedService', [QMC.NewsFeed.NewsFeedService]);\n})();\n\n//# sourceMappingURL=../maps/qmc.login.js.map\n"],"names":["QMC","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","_","label","sent","trys","ops","g","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","angular","module","run","$rootScope","$document","$window","setCapsLockOn","isOn","isCapsLockOn","$apply","isKeyPressed","addEventListener","test","navigator","platform","bind","event","keyCode","code","charCode","shift","shiftKey","originalEvent","getModifierState","Login","LoginController","loginService","$scope","_this","sessionData","targetVersion","version","target","join","current","isInternetExplorer","isChrome","isApple","startTimeTrackingWithLogin","isLoginProcessing","errorMessage","hasError","showErrorDetails","isZfaProcessing","mustDoZfa","zfaMsg","zfaFailedAttempts","mustChangePw","changePasswordErrorMessage","newPassword1","newPassword2","token","hasDonePwReset","resetPasswordErrorMessage","zfaInput","undefined","index","sessionStorage","clear","$","data","ua","baseRoute","baseUrl","redirectRoute","showScreen","charAt","toLocaleLowerCase","apiKey","deleteAllCookies","message","goBack","userAgent","vendor","indexOf","match","init","sessionInterval","setInterval","keepSessionAlive","prototype","getLanguages","id","Common","Constants","GUID_EMPTY","name","default","languages","selectedLanguageId","catch","error","Array","isArray","GlobalErrors","concat","FieldErrors","getVersion","buildVersion","useAnalytics","currentVersion","split","parseInt","handleWrongVersion","wrongVersion","modal","document","getElementById","setTimeout","style","display","login","selectedLanguage","cookie","username","password","window","userLoginResult","zfaCheck","zfaNoEmailAdress","zfaEmailSent","zfaErrMessage","console","log","focusFirstZfaInputField","setLocationOnSuccessfulLogin","mustChangePassword","setLocationToChangePassword","resultMessage","localStorage","removeItem","setItem","LocalStorageConstants","LAST_LANGUAGE_SELECTION","String","location","href","USER_MODULE_PERMISSIONS","JSON","stringify","modulePermissions","element","zfaCancel","userZfaCheckKey","getZfaInputKey","userId","zfaResult","ZfaResultMessage","map","ítem","toString","replace","trim","_a","focus","isZfaInputFilled","some","item","setZfaFocusEvent","onZfaFocus","slice","Number","isNaN","onZfaKeyUp","clipboardValue_1","_loop_1","this_1","i","e_1","_b","setAttribute","key","zfaGoLeft","zfaGoRight","clipboard","readText","substring","removeAttribute","nextIndex","nextElement","previousIndex","previousElement","changePw","checkPasswordRules","errorList","errorListItem","putNewPassword","fieldErrors","hasOwnProperty","_i","currentPassword","_c","newPassword","resetPw","resetUserPassword","email","toggleShowErrorDetails","getCookie","cname","ca_1","decodeURIComponent","c","cookies_1","eqPos","name_1","substr","$inject","controller","LoginService","$http","$q","apiData","url","api","deferred","defer","get","params","dbConnectionString","response","promise","languageId","clientKey","startTimeTracking","currentUrl","protocol","host","pathname","post","UserName","Password","LanguageId","ClientKey","DbConnection","Key","UserId","put","CurrentPassword","NewPassword","headers","Authorization","service","NewsFeed","NewsFeedDirective","newsFeedService","mainFeed","NewsFeedItem","subFeeds","backgroundImgUrl","currentYear","Date","getFullYear","maxDisplayedSubFeeds","$postLink","getNewsFeedData","show","flexGrow","feed","getNewsFeed","getNewsFeedImage","getNewsFeedItems","rss","channel","image","feedsLength","arr","Math","min","component","templateUrl","controllerAs","NewsFeed_1","NewsFeedRss","NewsFeedChannel","NewsFeedImage","jsonItem","_e","link","title","description","published","_d","category","NewsFeedService","newsfeedUrl","getFeedFromUrl","xmlDoc","getNewsFeedAsXml","parseFeed","xmlHttpRequest","XMLHttpRequest","open","send","responseXML","channelElement","getElementsByTagName","parseNewsFeedChannel","imageElement","itemElements","parseNewsFeedImage","itemElement","parseItem","getElementTextContent","parentElement","tagName","elements","textContent"],"mappings":"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"}