{ "version": 3, "sources": ["../../../../../../Modules/Membership/Account/Login/LoginPage.ts"], "sourcesContent": ["import { LoginForm, LoginRequest } from \"@/ServerTypes/Membership\";\r\nimport { Texts } from \"@/ServerTypes/Texts\";\r\nimport { PropertyPanel } from \"@serenity-is/corelib\";\r\nimport { ErrorHandling, htmlEncode, isEmptyOrNull, notifyError, parseQueryString, resolveUrl, serviceCall, ServiceResponse, localText } from \"@serenity-is/corelib/q\";\r\nimport { PromptDialog } from \"@serenity-is/extensions\";\r\n\r\n$(function () {\r\n var loginPanel = new LoginPanel($('#LoginPanel')).init();\r\n loginPanel.element.find('.forgot-password').appendTo('.field.Password');\r\n\r\n if ((document.getElementById('IsPublicDemo') as HTMLInputElement)?.value) {\r\n loginPanel[\"byId\"]('Username').val('admin').attr('placeholder', 'admin')\r\n loginPanel[\"byId\"]('Password').val('serenity').attr('placeholder', 'serenity');\r\n }\r\n\r\n if ((document.getElementById('Activated') as HTMLInputElement)?.value) {\r\n loginPanel[\"byId\"]('Username').val((document.getElementById('Activated') as HTMLInputElement)?.value);\r\n loginPanel[\"byId\"]('Password').focus();\r\n }\r\n});\r\n\r\nclass LoginPanel extends PropertyPanel {\r\n\r\n protected getFormKey() { return LoginForm.formKey; }\r\n\r\n constructor(container: JQuery) {\r\n super(container);\r\n\r\n this.byId('LoginButton').click(e => {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm())\r\n return;\r\n\r\n var request = this.getSaveEntity();\r\n\r\n serviceCall({\r\n url: resolveUrl('~/Account/Login'),\r\n request: request,\r\n onSuccess: () => {\r\n this.redirectToReturnUrl();\r\n },\r\n onError: (response: ServiceResponse) => {\r\n if (response != null && response.Error != null && response.Error.Code == \"TwoFactorAuthenticationRequired\") {\r\n var args = response.Error.Arguments.split('|');\r\n this.handleTwoFactorAuthentication(request.Username, request.Password, args[1], args[0]);\r\n return;\r\n }\r\n\r\n if (response != null && response.Error != null && response.Error.Code == \"RedirectUserTo\") {\r\n window.location.href = response.Error.Arguments;\r\n return;\r\n }\r\n\r\n if (response != null && response.Error != null && !isEmptyOrNull(response.Error.Message)) {\r\n notifyError(response.Error.Message);\r\n $('#Password').focus();\r\n\r\n return;\r\n }\r\n\r\n ErrorHandling.showServiceError(response.Error);\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected redirectToReturnUrl() {\r\n var q = parseQueryString();\r\n var returnUrl = q['returnUrl'] || q['ReturnUrl'];\r\n if (returnUrl) {\r\n var hash = window.location.hash;\r\n if (hash != null && hash != '#')\r\n returnUrl += hash;\r\n window.location.href = returnUrl;\r\n }\r\n else {\r\n window.location.href = resolveUrl('~/');\r\n }\r\n }\r\n\r\n protected handleTwoFactorAuthentication(user: string, pass: string, twoFactorGuid: string, info: string) {\r\n var tries = 0;\r\n var remaining = 120;\r\n\r\n var dialog = null;\r\n\r\n var showDialog = () => {\r\n dialog = new PromptDialog({\r\n title: \"Two Factor Authentication\",\r\n editorOptions: {\r\n maxLength: 4,\r\n },\r\n editorType: \"Integer\",\r\n message: info,\r\n isHtml: true,\r\n required: true,\r\n validateValue: (x) => {\r\n if (x >= 1000 && x <= 9999) {\r\n tries++;\r\n\r\n serviceCall({\r\n url: resolveUrl('~/Account/Login'),\r\n request: {\r\n Username: user,\r\n Password: pass,\r\n TwoFactorGuid: twoFactorGuid,\r\n TwoFactorCode: x\r\n },\r\n onSuccess: () => {\r\n this.redirectToReturnUrl();\r\n return;\r\n },\r\n onError: (z: ServiceResponse) => {\r\n notifyError(z.Error.Message);\r\n\r\n if (tries > 2) {\r\n notifyError(\"Code entered is invalid! You can't try more than 3 times!\");\r\n dialog = null;\r\n return;\r\n }\r\n\r\n showDialog();\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n notifyError(\"Please enter a valid code!\");\r\n return false;\r\n }\r\n });\r\n\r\n dialog.dialogOpen();\r\n dialog.element.on(\"dialogclose.me\", function (x) {\r\n if (dialog != null) {\r\n dialog.element.off(\"dialogclose.me\");\r\n dialog = null;\r\n }\r\n });\r\n };\r\n\r\n function updateCounter() {\r\n remaining -= 1;\r\n if (dialog != null) {\r\n dialog.element.find(\"span.counter\").text(remaining.toString());\r\n }\r\n\r\n if (remaining >= 0)\r\n setTimeout(updateCounter, 1000);\r\n else if (dialog != null)\r\n dialog.dialogClose();\r\n };\r\n\r\n showDialog();\r\n window.setTimeout(updateCounter, 1000);\r\n }\r\n\r\n protected getTemplate() {\r\n return `\r\n
\r\n \r\n
\r\n
\r\n
${htmlEncode(Texts.Forms.Membership.Login.LoginToYourAccount)}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n ${htmlEncode(localText(\"Forms.Membership.Login.SignUpButton\"))}\r\n
\r\n`;\r\n }\r\n}"], "mappings": "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", "names": ["import_corelib", "import_q", "import_extensions", "_a", "_b", "_c", "loginPanel", "LoginPanel", "LoginForm", "container", "e", "request", "response", "args", "q", "returnUrl", "hash", "user", "pass", "twoFactorGuid", "info", "tries", "remaining", "dialog", "showDialog", "__name", "x", "z", "updateCounter", "Texts"] }