{"version":3,"file":"js/280.ece5d725.js","mappings":"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","sources":["webpack://vyhub-central-web/../../../src/components/VAlert/VAlert.ts","webpack://vyhub-central-web/../../../src/components/VForm/VForm.ts","webpack://vyhub-central-web/./node_modules/vue-recaptcha/dist/vue-recaptcha.es.js","webpack://vyhub-central-web/./src/components/LoginRegister.vue?98d7","webpack://vyhub-central-web/src/components/LoginRegister.vue","webpack://vyhub-central-web/./src/components/LoginRegister.vue?3f09","webpack://vyhub-central-web/./src/components/LoginRegister.vue"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record<string, boolean> = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record<number, boolean>\ntype VInputInstance = InstanceType<typeof VInput>\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"text-center\"},[(!_vm.register)?_c('h1',{staticClass:\"text-h3\"},[_vm._v(_vm._s(_vm.$t('_loginRegister.welcomeBack')))]):_c('h1',{staticClass:\"text-h3\"},[_vm._v(_vm._s(_vm.$t('_loginRegister.welcome')))]),(!_vm.register)?_c('div',{staticClass:\"d-flex mt-1\"},[_c('v-spacer'),_c('p',[_vm._v(_vm._s(_vm.$t('_loginRegister.noAccount')))]),_c('a',{staticClass:\"ml-1\",on:{\"click\":function($event){_vm.register=true; _vm.emailConfirmationButtonEnabled=true}}},[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.register'))+\" \")]),_c('v-spacer')],1):_c('div',{staticClass:\"d-flex mt-1\"},[_c('v-spacer'),_c('p',[_vm._v(_vm._s(_vm.$t('_loginRegister.alreadyHaveAccount')))]),_c('a',{staticClass:\"ml-1\",on:{\"click\":function($event){_vm.register=false; _vm.emailConfirmationButtonEnabled=false}}},[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.login'))+\" \")]),_c('v-spacer')],1)]),(_vm.errorMessage)?_c('v-alert',{staticClass:\"mt-3 mb-7\",attrs:{\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e(),_c('v-form',{ref:\"form\",staticClass:\"mt-3\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submitForm.apply(null, arguments)}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{ref:\"form\",attrs:{\"type\":\"email\",\"label\":_vm.$t('_form.login.email'),\"rules\":_vm.rules.email,\"validate-on-blur\":\"\",\"data-cy\":\"email-input\",\"outlined\":\"\"},model:{value:(_vm.model.email),callback:function ($$v) {_vm.$set(_vm.model, \"email\", $$v)},expression:\"model.email\"}}),(_vm.register)?_c('v-text-field',{attrs:{\"outlined\":\"\",\"validate-on-blur\":_vm.model.email_confirmation !== ' ',\"label\":_vm.$t('_form.login.emailConfirmation'),\"rules\":_vm.rules.mailConfirmation},on:{\"focus\":_vm.removeSpaces,\"click\":_vm.removeSpaces},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [(_vm.register)?_c('v-btn',{staticClass:\"darken-3\",staticStyle:{\"margin-top\":\"-5px\"},attrs:{\"height\":\"30px\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!_vm.emailConfirmationButtonEnabled ||\n (_vm.captchaVersion === 'v2' && _vm.captcha_v2_token === '') ||\n !_vm.model.email},on:{\"click\":_vm.sendConfirmationCode}},[_vm._v(\" \"+_vm._s(_vm.emailConfirmationButton)+\" \"),(_vm.emailConfirmationButtonEnabled)?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-email \")]):_vm._e(),_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.sendConfirmationCode'))+\" \")])],1):_vm._e()]},proxy:true}],null,false,1046752435),model:{value:(_vm.model.email_confirmation),callback:function ($$v) {_vm.$set(_vm.model, \"email_confirmation\", $$v)},expression:\"model.email_confirmation\"}}):_vm._e(),_c('v-text-field',{attrs:{\"label\":_vm.$t('_form.login.password'),\"rules\":_vm.register ? _vm.rules.password : _vm.rules.required,\"outlined\":\"\",\"validate-on-blur\":\"\",\"data-cy\":\"password-input\",\"type\":_vm.passwordShow ? 'text' : 'password',\"append-icon\":_vm.passwordShow ? 'mdi-eye' : 'mdi-eye-off'},on:{\"click:append\":function($event){_vm.passwordShow = !_vm.passwordShow}},model:{value:(_vm.model.password),callback:function ($$v) {_vm.$set(_vm.model, \"password\", $$v)},expression:\"model.password\"}}),(_vm.register)?_c('v-text-field',{attrs:{\"type\":\"password\",\"rules\":_vm.rules.passwordConfirmation,\"validate-on-blur\":\"\",\"outlined\":\"\",\"label\":_vm.$t('_form.login.passwordConfirmation')},model:{value:(_vm.model.password_confirmation),callback:function ($$v) {_vm.$set(_vm.model, \"password_confirmation\", $$v)},expression:\"model.password_confirmation\"}}):_vm._e(),(_vm.register)?_c('v-text-field',{attrs:{\"label\":_vm.$t('_form.login.username'),\"rules\":_vm.rules.username,\"validate-on-blur\":\"\",\"outlined\":\"\"},model:{value:(_vm.model.username),callback:function ($$v) {_vm.$set(_vm.model, \"username\", $$v)},expression:\"model.username\"}}):_vm._e(),(_vm.register)?_c('v-select',{attrs:{\"rules\":_vm.rules.required,\"outlined\":\"\",\"items\":_vm.howDoYouKnowUsOptions,\"label\":_vm.$t('_form.login.howDidYouHearAboutUs')},model:{value:(_vm.model.how_do_you_know_us),callback:function ($$v) {_vm.$set(_vm.model, \"how_do_you_know_us\", $$v)},expression:\"model.how_do_you_know_us\"}}):_vm._e(),(_vm.captchaVersion === 'v2')?_c('VueRecaptcha',{staticClass:\"mb-3\",attrs:{\"sitekey\":_vm.captcha_v2_secret,\"loadRecaptchaScript\":true},on:{\"verify\":_vm.captchaVerified,\"expired\":_vm.captchaExpired}}):_vm._e(),_c('v-btn',{staticClass:\"darken-3\",attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"width\":\"100%\",\"loading\":_vm.buttonLoading,\"x-large\":\"\",\"depressed\":\"\",\"disabled\":_vm.captchaVersion === 'v2' && _vm.captcha_v2_token === ''}},[(!_vm.register)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.login'))+\" \")]):_vm._e(),(_vm.register)?_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('_form.login.register'))+\" \")]):_vm._e(),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-arrow-right \")])],1),(_vm.register === false)?_c('div',{staticClass:\"mt-3 text-center\"},[_c('router-link',{staticClass:\"mt-2\",staticStyle:{\"text-decoration\":\"none\"},attrs:{\"to\":\"/auth/forgot\"}},[_c('a',[_vm._v(_vm._s(_vm.$t('_form.login.forgotPassword'))+\"?\")])])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <div class=\"text-center\">\n <h1 v-if=\"!register\" class=\"text-h3\">{{ $t('_loginRegister.welcomeBack') }}</h1>\n <h1 v-else class=\"text-h3\">{{ $t('_loginRegister.welcome') }}</h1>\n <div class=\"d-flex mt-1\" v-if=\"!register\">\n <v-spacer />\n <p>{{ $t('_loginRegister.noAccount') }}</p>\n <a @click=\"register=true; emailConfirmationButtonEnabled=true\" class=\"ml-1\">\n {{ $t('_form.login.register') }}\n </a>\n <v-spacer />\n </div>\n <div class=\"d-flex mt-1\" v-else>\n <v-spacer />\n <p>{{ $t('_loginRegister.alreadyHaveAccount') }}</p>\n <a @click=\"register=false; emailConfirmationButtonEnabled=false\" class=\"ml-1\">\n {{ $t('_form.login.login') }}\n </a>\n <v-spacer />\n </div>\n </div>\n <v-alert v-if=\"errorMessage\"\n type=\"error\" class=\"mt-3 mb-7\">\n {{ errorMessage }}\n </v-alert>\n <v-form v-model=\"valid\" @submit.prevent=\"submitForm\" ref=\"form\" lazy-validation class=\"mt-3\">\n <v-text-field v-model=\"model.email\" type=\"email\" :label=\"$t('_form.login.email')\" ref=\"form\"\n :rules=\"rules.email\" validate-on-blur data-cy=\"email-input\" outlined/>\n <v-text-field v-if=\"register\" v-model=\"model.email_confirmation\" @focus=\"removeSpaces\"\n @click=\"removeSpaces\" outlined\n :validate-on-blur=\"model.email_confirmation !== ' '\"\n :label=\"$t('_form.login.emailConfirmation')\" :rules=\"rules.mailConfirmation\">\n <template v-slot:prepend>\n <v-btn height=\"30px\" color=\"secondary\" class=\"darken-3\" style=\"margin-top: -5px;\"\n @click=\"sendConfirmationCode\" v-if=\"register\" depressed\n :disabled=\"!emailConfirmationButtonEnabled ||\n (captchaVersion === 'v2' && captcha_v2_token === '') ||\n !model.email\">\n {{ emailConfirmationButton }}\n <v-icon v-if=\"emailConfirmationButtonEnabled\" left>\n mdi-email\n </v-icon>\n <span>\n {{ $t('_form.login.sendConfirmationCode') }}\n </span>\n </v-btn>\n </template>\n </v-text-field>\n <v-text-field v-model=\"model.password\" :label=\"$t('_form.login.password')\"\n :rules=\"register ? rules.password : rules.required\" outlined\n validate-on-blur data-cy=\"password-input\"\n :type=\"passwordShow ? 'text' : 'password'\"\n @click:append=\"passwordShow = !passwordShow\"\n :append-icon=\"passwordShow ? 'mdi-eye' : 'mdi-eye-off'\"/>\n <v-text-field v-if=\"register\" v-model=\"model.password_confirmation\" type=\"password\"\n :rules=\"rules.passwordConfirmation\" validate-on-blur outlined\n :label=\"$t('_form.login.passwordConfirmation')\"/>\n <v-text-field v-if=\"register\" v-model=\"model.username\" :label=\"$t('_form.login.username')\"\n :rules=\"rules.username\" validate-on-blur outlined/>\n <v-select :rules=\"rules.required\" v-model=\"model.how_do_you_know_us\" v-if=\"register\" outlined\n :items=\"howDoYouKnowUsOptions\" :label=\"$t('_form.login.howDidYouHearAboutUs')\"></v-select>\n <VueRecaptcha :sitekey=\"captcha_v2_secret\" v-if=\"captchaVersion === 'v2'\" class=\"mb-3\"\n :loadRecaptchaScript=\"true\" @verify=\"captchaVerified\"\n @expired=\"captchaExpired\"></VueRecaptcha>\n <v-btn type=\"submit\" color=\"secondary\" class=\"darken-3\" width=\"100%\"\n :loading=\"buttonLoading\" x-large depressed\n :disabled=\"captchaVersion === 'v2' && captcha_v2_token === ''\">\n <span v-if=\"!register\">\n {{ $t('_form.login.login') }}\n </span>\n <span v-if=\"register\">\n {{ $t('_form.login.register') }}\n </span>\n <v-icon right>\n mdi-arrow-right\n </v-icon>\n </v-btn>\n <div class=\"mt-3 text-center\" v-if=\"register === false\">\n <router-link class=\"mt-2\" style=\"text-decoration: none;\" to=\"/auth/forgot\">\n <a>{{ $t('_form.login.forgotPassword') }}?</a>\n </router-link>\n </div>\n </v-form>\n </div>\n</template>\n\n<script>\nimport VueRecaptcha from 'vue-recaptcha';\nimport AuthService from '@/services/AuthService';\nimport i18n from '@/plugins/i18n';\nimport config from '@/config';\nimport openapi from '../api/openapi';\n\nconst captcha_v2_secret = config.ggl_recaptcha_v2_token;\n\nexport default {\n name: 'LoginRegister.vue',\n components: {\n VueRecaptcha,\n },\n data() {\n return {\n captcha_v2_secret,\n captchaVersion: 'v3',\n captcha_v2_token: '',\n valid: false,\n register: false,\n errorMessage: null,\n emailConfirmationButton: null,\n emailConfirmationButtonEnabled: true,\n buttonLoading: false,\n passwordShow: false,\n howDoYouKnowUsOptions: [\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.searchEngine'),\n value: 'Search Engine',\n },\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.socialMedia'),\n value: 'Social Media',\n },\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.otherCommunity'),\n value: 'Other Community',\n },\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.friends'),\n value: 'Friends',\n },\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.youtube'),\n value: 'YouTube',\n },\n {\n text: this.$t('_form.login.howDidYouHearAboutUsOptions.other'),\n value: 'Other',\n },\n ],\n model: {\n email: '',\n password: '',\n password_confirmation: '',\n username: '',\n email_confirmation: ' ',\n how_do_you_know_us: '',\n },\n rules: {\n email: [\n (v) => !!v || i18n.t('_form.validation.required'),\n (v) => /.+@.+\\..+/.test(v) || i18n.t('_form.validation.emailInvalid'),\n ],\n required: [\n (v) => !!v || i18n.t('_form.validation.required'),\n ],\n passwordConfirmation: [\n (v) => !!v || i18n.t('_form.validation.required'),\n (v) => v === this.model.password || i18n.t('_form.validation.passwordMatch'),\n ],\n password: [\n (v) => v.length >= 8 || i18n.t('_form.validation.passwordLength'),\n (v) => /[.+]?[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?][.+]?/.test(v) || i18n.t('_form.validation.passwordNoSpecialCharacter'),\n (v) => /[.+]?\\d[.+]?/.test(v) || i18n.t('_form.validation.passwordNoNumber'),\n (v) => /[.+]?[A-Z][.+]?/.test(v) || i18n.t('_form.validation.passwordNoUppercase'),\n ],\n username: [\n (v) => !!v || i18n.t('_form.validation.required'),\n (v) => v.length >= 3 || i18n.t('_form.validation.usernameLength'),\n (v) => /^[a-z0-9_.-]+$/.test(v) || i18n.t('_form.validation.usernameFormat'),\n ],\n mailConfirmation: [\n (v) => !!v || i18n.t('_form.validation.required'),\n (v) => v.length === 5 || i18n.t('_form.validation.codeLength'),\n ],\n },\n };\n },\n methods: {\n async submitForm() {\n this.$refs.form.validate();\n if (this.valid && !this.register) {\n await this.login();\n return;\n }\n if (!this.valid || Object.values(this.model).includes('' || ' ')) {\n return;\n }\n if (this.valid && this.register) {\n const token = await this.getCaptchaToken();\n await AuthService.register(this.model, { version: this.captchaVersion, token }, () => {\n // GTag Event for Google Analytics Tracking\n this.$gtag.event('sign_up');\n this.login();\n }, (err) => {\n if (err.response.status === 429) this.captchaVersion = 'v2';\n this.errorMessage = this.$t(`_form.login.error.${err.response.data.detail.code}`);\n });\n }\n },\n async login() {\n const api = await openapi;\n\n try {\n this.buttonLoading = true;\n const data = this.model;\n // const token = await this.getCaptchaToken();\n\n AuthService.loginCredentials(data.email, data.password).then(() => {\n this.loginCompleted();\n this.$gtag.event('login');\n }).catch((error) => {\n api.user_checkEmailInUse({ email: data.email }).then((rsp) => {\n if (rsp.data) {\n // email registered\n this.buttonLoading = false;\n this.errorMessage = this.$t(`_form.login.error.${error.response.data.error}`);\n } else {\n // email not registered\n this.register = true;\n this.errorMessage = null;\n this.emailConfirmationButtonEnabled = true;\n this.buttonLoading = false;\n }\n });\n });\n } catch (error) {\n this.buttonLoading = false;\n this.errorMessage = `Error in phase get_data: ${error.response.data.msg}`;\n }\n },\n async sendConfirmationCode() {\n const token = await this.getCaptchaToken();\n await AuthService.sendConfirmationCode(this.model.email,\n { version: this.captchaVersion, token }, () => {\n this.emailConfirmationButtonEnabled = false;\n this.emailConfirmationButton = 31;\n this.counter();\n }, (err) => {\n if (err.response.data.detail.code === 'captcha_low') this.captchaVersion = 'v2';\n this.errorMessage = this.$t(`_form.login.error.${err.response.data.detail.code}`);\n });\n },\n counter() {\n this.emailConfirmationButton -= 1;\n if (this.emailConfirmationButton !== 0 && !this.emailConfirmationButtonEnabled) {\n setTimeout(() => { this.counter(); }, 1000);\n } else {\n this.emailConfirmationButtonEnabled = true;\n this.emailConfirmationButton = null;\n }\n },\n loginCompleted() {\n this.buttonLoading = false;\n AuthService.refreshUser();\n this.$emit('completed');\n },\n removeSpaces() {\n if (this.model.email_confirmation === ' ') this.model.email_confirmation = '';\n },\n async getCaptchaToken() {\n let captchaToken = '';\n if (this.captchaVersion === 'v3') {\n captchaToken = await this.recaptcha();\n } else {\n console.log('v2');\n console.log(this.captcha_v2_token);\n captchaToken = this.captcha_v2_token;\n }\n return captchaToken;\n },\n async recaptcha() {\n await this.$recaptchaLoaded();\n return this.$recaptcha();\n },\n captchaVerified(token) {\n this.captcha_v2_token = token;\n },\n captchaExpired() {\n this.captcha_v2_token = '';\n },\n },\n mounted() {\n if (this.$store.getters.isLoggedIn) {\n this.$emit('completed');\n }\n if (this.$route.query.register === 'true') {\n this.register = true;\n }\n if (this.$route.query.email) {\n this.model.email = this.$route.query.email;\n }\n },\n computed: {\n getConfirmationCode() {\n return this.model.email_confirmation;\n },\n getUsername() {\n return this.model.username;\n },\n },\n watch: {\n // Makes the Mail Confirmation Code Uppercase\n getConfirmationCode() {\n this.model.email_confirmation = this.model.email_confirmation.toUpperCase();\n },\n // Makes the Username Lowercase\n getUsername() {\n this.model.username = this.model.username.toLowerCase();\n },\n },\n};\n</script>\n\n<style scoped>\n.code input{\n text-transform: uppercase;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginRegister.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoginRegister.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoginRegister.vue?vue&type=template&id=10afa897&scoped=true&\"\nimport script from \"./LoginRegister.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginRegister.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginRegister.vue?vue&type=style&index=0&id=10afa897&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10afa897\",\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 { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VForm,VIcon,VSelect,VSpacer,VTextField})\n"],"names":["mixins","VSheet","Toggleable","Transitionable","extend","name","props","border","type","String","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","VBtn","small","attrs","$vuetify","lang","t","on","click","isActive","VIcon","__cachedIcon","computedIcon","classes","hasColoredIcon","hasText","undefined","isDark","Themeable","created","$attrs","hasOwnProperty","breaking","methods","genWrapper","children","$slots","prepend","genContent","append","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","transition","origin","mode","BindsAttrs","RegistrableProvide","provide","form","inheritAttrs","disabled","lazyValidation","readonly","inputs","watchers","errorBag","watch","handler","errors","Object","values","$emit","deep","immediate","watchInput","input","watcher","$watch","$set","_uid","valid","shouldValidate","validate","filter","length","reset","forEach","resetErrorBag","setTimeout","resetValidation","register","push","unregister","found","find","i","unwatch","$delete","novalidate","attrs$","submit","e","_extends","assign","target","arguments","source","key","prototype","call","apply","defer","state","callbacks","resolve","len","then","cb","deferred","resolved","promise","ownProp","createRecaptcha","notify","wait","ele","options","window","grecaptcha","widgetId","assertLoaded","execute","checkRecaptchaLoad","Error","recaptcha","vueRecaptchaApiLoaded","VueRecaptcha","sitekey","required","theme","badge","size","tabindex","loadRecaptchaScript","recaptchaScriptId","recaptchaHost","language","beforeMount","document","getElementById","script","createElement","id","src","async","head","appendChild","mounted","_this","opts","$props","callback","emitVerify","emitExpired","emitError","container","$el","$widgetId","response","_vm","_h","_c","_self","_v","_s","$t","$event","emailConfirmationButtonEnabled","errorMessage","_e","ref","preventDefault","submitForm","model","$$v","expression","rules","email","email_confirmation","mailConfirmation","removeSpaces","scopedSlots","_u","fn","staticStyle","captchaVersion","captcha_v2_token","sendConfirmationCode","emailConfirmationButton","proxy","password","passwordShow","passwordConfirmation","username","howDoYouKnowUsOptions","captcha_v2_secret","captchaVerified","captchaExpired","buttonLoading","staticRenderFns","config","components","password_confirmation","how_do_you_know_us","v","version","token","AuthService","api","counter","loginCompleted","captchaToken","console","getConfirmationCode","getUsername","component","VAlert"],"sourceRoot":""}