{"version":3,"sources":["webpack:///./src/components/CloseButton.vue?d90c","webpack:///./src/components/CloseButton.vue","webpack:///./src/components/CloseButton.vue?6241","webpack:///./src/components/CloseButton.vue?5645","webpack:///./src/views/SignIn.vue?4437","webpack:///./src/views/SignIn.vue","webpack:///./src/views/SignIn.vue?4637","webpack:///./src/views/SignIn.vue?5361","webpack:///./node_modules/vue-recaptcha/dist/vue-recaptcha.es.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","hide","_e","staticClass","staticStyle","attrs","on","goToHome","_v","staticRenderFns","Vue","extend","computed","mapGetters","$route","path","methods","user","$router","push","signoutConfirm","component","VBtn","mobile","$vuetify","breakpoint","smAndDown","$images","brandMark","$event","preventDefault","signin","apply","arguments","directives","name","rawName","value","expression","isApp","errors","collect","model","form","callback","$$v","$set","showPassword","loading","ref","recaptchaKey","onCaptchaVerified","onCaptchaExpired","registrationRedirect","termsLink","linkTarget","privacyLink","usePolicyLink","googlePrivacy","googleTerms","metaInfo","title","meta","vmid","content","components","CloseButton","VueRecaptcha","mixins","tenantNavMixin","data","footerStyle","position","left","right","margin","display","email","password","created_at","hk","process","submitting","recaptchaAllowedAttempts","recaptchaAttempts","mounted","$store","getters","isMobile","encryptForm","encoder","TextEncoder","secretBuffer","encode","window","crypto","subtle","importKey","hash","hmacKey","Date","now","credentials","JSON","stringify","sign","signatureBuffer","btoa","String","fromCharCode","Uint8Array","$validator","validateAll","valid","isVerified","recaptchaVerified","Number","recaptchaVerifiedTime","useRecaptcha","showRecaptcha","$refs","recaptcha","execute","encryptedForm","dispatch","error","routeLogin","status","commit","icon","message","type","token","reset","success","open","VCol","VForm","VRow","VTextField","_extends","Object","assign","target","i","length","source","key","prototype","hasOwnProperty","call","defer","state","callbacks","resolve","val","len","then","cb","deferred","resolved","promise","ownProp","createRecaptcha","notify","wait","ele","options","grecaptcha","widgetId","assertLoaded","checkRecaptchaLoad","Error","vueRecaptchaApiLoaded","props","sitekey","required","theme","badge","size","tabindex","loadRecaptchaScript","Boolean","recaptchaScriptId","recaptchaHost","language","beforeMount","document","getElementById","script","createElement","id","src","async","head","appendChild","_this","opts","$props","emitVerify","emitExpired","emitError","container","$slots","$el","children","$widgetId","$emit","response","h"],"mappings":"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","file":"js/signin.eafc417d.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hide)?_c('v-btn',{staticClass:\"subtitle black--text\",staticStyle:{\"position\":\"fixed\",\"left\":\"10px\",\"top\":\"10px\",\"z-index\":\"1\"},attrs:{\"icon\":\"\",\"large\":\"\"},on:{\"click\":_vm.goToHome}},[_vm._v(\" Back \")]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { mapGetters } from 'vuex'\nimport Vue from 'vue'\nimport { signoutConfirm } from '@/utility/helpers'\nexport default Vue.extend({\n computed: {\n ...mapGetters(['user']),\n hide(): boolean {\n // Array of routes we do not want to display on\n const hide = {\n '/': true,\n '/register/user': true,\n '/signin': true\n }\n\n // Hide if we are on one of those routes\n return hide[this.$route.path] || false\n }\n },\n methods: {\n goToHome(): void {\n // If an authenticated user does NOT exist, route to home\n if (!this.user) return this.$router.push('/')\n\n // Else, we need to signout the user, so pop signout confirm\n signoutConfirm()\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CloseButton.vue?vue&type=template&id=7efbfe72&\"\nimport script from \"./CloseButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./CloseButton.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\ninstallComponents(component, {VBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.mobile !== null)?_c('main-page-template',[_c('close-button'),_c('v-row',{staticClass:\"d-flex justify-center align-center\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":_vm.$vuetify.breakpoint.smAndDown ? '12' : '4'}},[_c('div',[_c('img',{staticClass:\"mb-2\",attrs:{\"src\":_vm.$images.brandMark,\"width\":\"100px;\"}}),_c('h1',{staticClass:\"ml-2\",staticStyle:{\"font-family\":\"gt-alpina\",\"font-weight\":\"300\",\"text-align\":\"center\"}},[_vm._v(\" Welcome back! \")]),_c('div',{staticClass:\"ml-2 mt-1 mb-8 grey--text text--darken-3\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\" It's great to see you 👋 \")]),_c('v-form',{staticClass:\"mx-2 mt-2\",on:{\"submit\":function($event){$event.preventDefault();return _vm.signin.apply(null, arguments)}}},[_c('v-text-field',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required|max:191|email'),expression:\"'required|max:191|email'\"}],attrs:{\"name\":\"Email\",\"label\":_vm.isApp ? 'Email' : 'Enter your email',\"type\":\"email\",\"id\":\"email\",\"error-messages\":_vm.errors.collect('Email')},model:{value:(_vm.form.email),callback:function ($$v) {_vm.$set(_vm.form, \"email\", $$v)},expression:\"form.email\"}}),_c('v-text-field',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],attrs:{\"name\":\"Password\",\"label\":_vm.isApp ? 'Password' : 'Enter your password',\"type\":_vm.showPassword ? 'text' : 'password',\"append-icon\":_vm.showPassword ? 'mdi-eye' : 'mdi-eye-off',\"error-messages\":_vm.errors.collect('Password')},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.form.password),callback:function ($$v) {_vm.$set(_vm.form, \"password\", $$v)},expression:\"form.password\"}}),_c('div',{staticClass:\"mt-3 caption text-left\"},[_c('a',{on:{\"click\":function($event){return _vm.$router.push('/forgot-password')}}},[_vm._v(\" Forgot Password? \")])]),_c('v-btn',{staticClass:\"mt-6 white--text\",staticStyle:{\"width\":\"200px\",\"height\":\"50px\",\"font-weight\":\"700\",\"font-size\":\"16px\"},attrs:{\"depressed\":\"\",\"color\":\"#8068BF\",\"loading\":_vm.loading,\"disabled\":_vm.loading,\"type\":\"submit\"}},[_vm._v(\" Log In \")]),(_vm.showRecaptcha)?_c('vue-recaptcha',{ref:\"recaptcha\",attrs:{\"sitekey\":_vm.recaptchaKey,\"size\":\"invisible\"},on:{\"verify\":_vm.onCaptchaVerified,\"expired\":_vm.onCaptchaExpired}}):_vm._e()],1),(!_vm.isApp)?_c('div',{staticClass:\"caption grey--text text--darken-1 mt-12 pt-12\"},[_vm._v(\" Don't have an account? \"),_c('div',{staticClass:\"my-2 subtitle-3\"},[_c('a',{staticStyle:{\"text-decoration\":\"none\"},on:{\"click\":_vm.registrationRedirect}},[_vm._v(\" Get Started Here \")])])]):_vm._e(),_c('div',{staticClass:\"caption grey--text text--darken-1 mt-3\"},[_vm._v(\" By continuing, you acknowledge and accept our \"),_c('br'),_c('a',{staticStyle:{\"text-decoration\":\"none\"},attrs:{\"href\":_vm.termsLink,\"target\":_vm.linkTarget}},[_vm._v(\"Terms of Service \")]),_vm._v(\" , \"),_c('a',{staticStyle:{\"text-decoration\":\"none\"},attrs:{\"href\":_vm.privacyLink,\"target\":_vm.linkTarget}},[_vm._v(\"Privacy Policy\")]),_vm._v(\" and \"),_c('a',{staticStyle:{\"text-decoration\":\"none\"},attrs:{\"href\":_vm.usePolicyLink,\"target\":_vm.linkTarget}},[_vm._v(\"Use Agreement\")])]),_c('div',{staticClass:\"caption grey--text text--darken-1 mt-3\"},[_vm._v(\" This site is protected by reCAPTCHA and the Google \"),_c('a',{staticStyle:{\"text-decoration\":\"none\"},attrs:{\"href\":_vm.googlePrivacy,\"target\":_vm.linkTarget}},[_vm._v(\"Privacy Policy \")]),_vm._v(\" and \"),_c('a',{staticStyle:{\"text-decoration\":\"none\"},attrs:{\"href\":_vm.googleTerms,\"target\":_vm.linkTarget}},[_vm._v(\"Terms of Service \")])])],1)])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { mapGetters } from 'vuex'\nimport CloseButton from '@/components/CloseButton.vue'\nimport VueRecaptcha from 'vue-recaptcha'\nimport tenantNavMixin from '@/mixins/tenant-nav-mixin'\nimport Credentials from '@/types/Credentials'\nexport default Vue.extend({\n metaInfo: {\n title: \"Log In to MessageDesk | Let's Start Some Conversations\",\n meta: [\n {\n vmid: 'description',\n name: 'description',\n content:\n 'Log in to MessageDesk. Feel free to visit our learning center for tips, tricks, and how-to articles.'\n }\n ]\n },\n components: { CloseButton, VueRecaptcha },\n mixins: [tenantNavMixin],\n data: () => ({\n showPassword: false,\n loading: false,\n // Styles for our elements at the foot of the page\n footerStyle: {\n position: 'absolute',\n left: 0,\n right: 0,\n margin: 'auto',\n display: 'block'\n },\n form: {\n email: '',\n password: '',\n created_at: '',\n },\n hk: process.env.VUE_APP_HASH_KEY,\n mobile: null,\n submitting: false,\n recaptchaAllowedAttempts: 3,\n recaptchaAttempts: 0,\n recaptchaKey: process.env.VUE_APP_RECAPTCHA_KEY, \n }),\n mounted() {\n if (this.$store.getters.isMobile()) this.mobile = true\n else this.mobile = false\n },\n computed: {\n ...mapGetters([\n 'isApp',\n 'recaptchaVerified',\n 'recaptchaVerifiedTime',\n 'showRecaptcha'\n ]),\n linkTarget(): string {\n // If we are on app, use system, else use blank\n return this.isApp ? '_system' : '_blank'\n },\n termsLink(): string {\n return `${process.env.VUE_APP_URL_SITE}/terms`\n },\n privacyLink(): string {\n return `${process.env.VUE_APP_URL_SITE}/privacy`\n },\n usePolicyLink(): string {\n return `${process.env.VUE_APP_URL_SITE}/use-agreement`\n },\n googlePrivacy(): string {\n return `https://policies.google.com/privacy`\n },\n googleTerms(): string {\n return `https://policies.google.com/terms`\n }\n },\n methods: {\n async encryptForm(): Promise {\n const encoder = new TextEncoder()\n const secretBuffer = encoder.encode(this.hk)\n\n const hmacKey = await window.crypto.subtle.importKey(\n 'raw',\n secretBuffer,\n {name: 'HMAC', hash: 'SHA-256'},\n false,\n ['sign']\n )\n\n this.form.created_at = Date.now()\n\n const credentials = encoder.encode(JSON.stringify(this.form))\n\n const signatureBuffer = await window.crypto.subtle.sign(\n 'HMAC',\n hmacKey,\n credentials\n )\n\n return {\n hash: btoa(String.fromCharCode(...new Uint8Array(signatureBuffer))),\n email: this.form.email,\n password: this.form.password,\n created_at: this.form.created_at\n }\n },\n async signin(): Promise {\n // Validate the form\n const valid = await this.$validator.validateAll()\n\n // If the form is NOT valid, exit function\n if (!valid) return\n\n // Start the loading spinner\n this.loading = true\n\n // Check if recaptcha is already verified (ie verified OR last verification was under two minutes ago\n const isVerified =\n this.recaptchaVerified ||\n Number(new Date()) - this.recaptchaVerifiedTime < 120000\n\n // Check if we should use Recaptcha\n const useRecaptcha = this.showRecaptcha && !isVerified\n\n // If we need to use Recaptcha, do it! rather than signin\n if (useRecaptcha) return this.$refs.recaptcha.execute()\n\n const encryptedForm = await this.encryptForm()\n\n // Send the login request\n const user = await this.$store.dispatch('login', encryptedForm)\n\n // Stop the loading spinner\n this.loading = false\n\n // If no errors were returned, routelogin\n if (!user.error) return this.routeLogin(user)\n\n // Else, if the error status is 401 pop error\n if (user.error.status === 401) {\n this.$store.commit('appNotificationBarSet', {\n icon: 'mdi-alert',\n message: 'Username or Password is not correct',\n position: 'bottom',\n type: 'error'\n })\n }\n\n // Else, if the error status is 401 pop error\n if (user.error.status === 429) {\n this.$store.commit('appNotificationBarSet', {\n icon: 'mdi-alert',\n message: 'Too many login attempts, please try again later',\n position: 'bottom',\n type: 'error'\n })\n }\n },\n async onCaptchaVerified(token: number): Promise {\n // Set the submission flag to true to disable the submit button\n this.submitting = true\n\n // Reset the reCAPTCHA widget\n this.$refs.recaptcha.reset()\n\n // Verify the reCAPTCHA token\n const success = await this.$store.dispatch('verifyRecaptcha', token)\n\n // If NOT successful (reCAPTCHA thinks user is a bot), pop the challenge (misnomer as we don't actually pop a typical recaptcha 'enter what you see above' screen)\n if (!success) {\n // We increment the total number of attempts so far, we need to do this as the previous code caused an infinite loop with unlimited retry attempts causing the server to crash when the api was down\n this.recaptchaAttempts++\n \n // If our total attempts is below the allowed amount we retry the recaptcha in case that the recapcha failed due to an accidental reason like user misinput\n if (this.recaptchaAttempts < this.recaptchaAllowedAttempts) this.$refs.recaptcha.execute()\n \n // Otherwise we return out of this function ending the endless loop and preventing server resources being 100% utilized and crashing the app. if they want to retry signing in they will then need to refresh the page\n if (this.recaptchaAttempts >= this.recaptchaAllowedAttempts) return\n }\n\n // Set the submission flag to true to enable the submit button\n this.submitting = false\n\n // If successful (reCAPTCHA thinks user is human), submit\n this.signin()\n },\n onCaptchaExpired(): void {\n // Reset the reCAPTCHA widget\n this.$refs.recaptcha.reset()\n },\n registrationRedirect(): void {\n // Redirect user to tal to sales page, MCS will now give SLG leads the /register/user link to prevent accidental PLG sign ups\n window.open(\n 'https://www.messagedesk.com/talk-to-sales',\n this.$store.getters.isApp ? '_system' : '_blank'\n )\n }\n }\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SignIn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SignIn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SignIn.vue?vue&type=template&id=21033716&\"\nimport script from \"./SignIn.vue?vue&type=script&lang=ts&\"\nexport * from \"./SignIn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VForm,VRow,VTextField})\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar defer = function defer() {\n var state = false; // Resolved or not\n\n var callbacks = [];\n\n var resolve = function resolve(val) {\n if (state) {\n return;\n }\n\n state = true;\n\n for (var i = 0, len = callbacks.length; i < len; i++) {\n callbacks[i](val);\n }\n };\n\n var then = function then(cb) {\n if (!state) {\n callbacks.push(cb);\n return;\n }\n\n cb();\n };\n\n var deferred = {\n resolved: function resolved() {\n return state;\n },\n resolve: resolve,\n promise: {\n then: then\n }\n };\n return deferred;\n};\n\nvar ownProp = Object.prototype.hasOwnProperty;\nfunction createRecaptcha() {\n var deferred = defer();\n return {\n notify: function notify() {\n deferred.resolve();\n },\n wait: function wait() {\n return deferred.promise;\n },\n render: function render(ele, options, cb) {\n this.wait().then(function () {\n cb(window.grecaptcha.render(ele, options));\n });\n },\n reset: function reset(widgetId) {\n if (typeof widgetId === 'undefined') {\n return;\n }\n\n this.assertLoaded();\n this.wait().then(function () {\n return window.grecaptcha.reset(widgetId);\n });\n },\n execute: function execute(widgetId) {\n if (typeof widgetId === 'undefined') {\n return;\n }\n\n this.assertLoaded();\n this.wait().then(function () {\n return window.grecaptcha.execute(widgetId);\n });\n },\n checkRecaptchaLoad: function checkRecaptchaLoad() {\n if (ownProp.call(window, 'grecaptcha') && ownProp.call(window.grecaptcha, 'render')) {\n this.notify();\n }\n },\n assertLoaded: function assertLoaded() {\n if (!deferred.resolved()) {\n throw new Error('ReCAPTCHA has not been loaded');\n }\n }\n };\n}\nvar recaptcha = createRecaptcha();\n\nif (typeof window !== 'undefined') {\n window.vueRecaptchaApiLoaded = recaptcha.notify;\n}\n\nvar VueRecaptcha = {\n name: 'VueRecaptcha',\n props: {\n sitekey: {\n type: String,\n required: true\n },\n theme: {\n type: String\n },\n badge: {\n type: String\n },\n type: {\n type: String\n },\n size: {\n type: String\n },\n tabindex: {\n type: String\n },\n loadRecaptchaScript: {\n type: Boolean,\n \"default\": false\n },\n recaptchaScriptId: {\n type: String,\n \"default\": '__RECAPTCHA_SCRIPT'\n },\n recaptchaHost: {\n type: String,\n \"default\": 'www.google.com'\n },\n language: {\n type: String,\n \"default\": ''\n }\n },\n beforeMount: function beforeMount() {\n if (this.loadRecaptchaScript) {\n if (!document.getElementById(this.recaptchaScriptId)) {\n // Note: vueRecaptchaApiLoaded load callback name is per the latest documentation\n var script = document.createElement('script');\n script.id = this.recaptchaScriptId;\n script.src = \"https://\" + this.recaptchaHost + \"/recaptcha/api.js?onload=vueRecaptchaApiLoaded&render=explicit&hl=\" + this.language;\n script.async = true;\n script.defer = true;\n document.head.appendChild(script);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n recaptcha.checkRecaptchaLoad();\n\n var opts = _extends({}, this.$props, {\n callback: this.emitVerify,\n 'expired-callback': this.emitExpired,\n 'error-callback': this.emitError\n });\n\n var container = this.$slots[\"default\"] ? this.$el.children[0] : this.$el;\n recaptcha.render(container, opts, function (id) {\n _this.$widgetId = id;\n\n _this.$emit('render', id);\n });\n },\n methods: {\n reset: function reset() {\n recaptcha.reset(this.$widgetId);\n },\n execute: function execute() {\n recaptcha.execute(this.$widgetId);\n },\n emitVerify: function emitVerify(response) {\n this.$emit('verify', response);\n },\n emitExpired: function emitExpired() {\n this.$emit('expired');\n },\n emitError: function emitError() {\n this.$emit('error');\n }\n },\n render: function render(h) {\n return h('div', {}, this.$slots[\"default\"]);\n }\n};\n\nexport default VueRecaptcha;\n"],"sourceRoot":""}