{"version":3,"mappings":"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","names":["_sfc_main","ButtonFi","IconFi","DialogModalFi","LinkFi","RichtextFi","breakpointMixin","_hoisted_1","_hoisted_2","_hoisted_5","_hoisted_7","_hoisted_8","_createBlock","_component_dialog_modal_fi","_createElementVNode","_toDisplayString","_a","$props","_openBlock","_createElementBlock","_hoisted_3","_createCommentVNode","_b","_c","_hoisted_4","_createVNode","_component_richtext_fi","_d","_component_link_fi","_withCtx","_createTextVNode","_e","_f","_hoisted_6","_g","_component_button_fi","_normalizeClass","_ctx","_withModifiers","$options","_component_icon_fi","MERGECARTPromise","__vitePreload","clearHandlingFeeLimitCookie","useHandlingFeeCookie","criticalLoginFailure","setDevToken","initializeAuthorization","isSpecialPage","logDebug","getCookies","setCookies","postAccessTokenInSession","notifyLogin","useLogin","fischer","useFischer","vueCookies","useCookies","emit","__emit","mergeCarts","accessToken","idToken","cartId","MERGECART","mutate","useMutation","error","restoreTokenState","stateId","cookies","state","nonce","nonceValidUntil","data","checkIsValidRedirect","redirect","dialogMatch","handleLoginCallback","loginDialog","loginDialogCookies","href","hash","allowedStateChars","isNonceError","loginSuccessPage","usernameCookie","cartMergePromise","markAsNotIDS","onMounted","ConsentDialogFi","SiteLoginStandalone","consentMixin","el","newConsent","registrationConsents","consent","consentTemplate","GIVECONSENT","url","_component_consent_dialog_fi","_cache","$event","_component_site_login_standalone"],"ignoreList":[],"sources":["../../src/components/my-account/site-login/consent-dialog-fi/ConsentDialogFi.vue","../../src/components/my-account/site-login/SiteLoginStandalone.vue","../../src/pages/my-account/login/MyAccountLogin.vue"],"sourcesContent":["<template>\n <dialog-modal-fi\n ref=\"dialogModal\"\n class=\"consent-dialog-fi\"\n only-body-scrollable\n prevent-close-on-click-outside\n pulse-on-block\n hide-close-button\n >\n <template #header>\n <h2 class=\"consent-dialog-fi__headline\">\n {{ fields.consentDialogHeadline?.value }}\n </h2>\n </template>\n\n <template #body>\n <div class=\"consent-dialog-fi__content\">\n <div\n v-if=\"fields.consentDialogInfotext?.value\"\n class=\"consent-dialog-fi__content__info\"\n >\n {{ fields.consentDialogInfotext.value }}\n </div>\n\n <div\n v-if=\"\n fields.consentDialogTermsAndConditionsTitle?.value &&\n fields.consentDialogTermsAndConditionsText?.value\n \"\n class=\"consent-dialog-fi__content__item\"\n >\n <h3 class=\"consent-dialog-fi__content__title\">\n {{ fields.consentDialogTermsAndConditionsTitle.value }}\n </h3>\n\n <richtext-fi\n class=\"consent-dialog-fi__content__text\"\n :html-content=\"fields.consentDialogTermsAndConditionsText\"\n />\n\n <link-fi\n v-if=\"\n fields.consentDialogTermsAndConditionsLink?.value &&\n (fields.consentDialogTermsAndConditionsLink.value.url ||\n fields.consentDialogTermsAndConditionsLink.value.href)\n \"\n class=\"consent-dialog-fi__content__link\"\n :href=\"\n fields.consentDialogTermsAndConditionsLink.value.url ||\n fields.consentDialogTermsAndConditionsLink.value.href\n \"\n :external=\"Boolean(fields.consentDialogTermsAndConditionsLink.value.url)\"\n primary\n target=\"_blank\"\n >\n {{ fields.consentDialogTermsAndConditionsLink.value.text }}\n </link-fi>\n </div>\n <div\n v-if=\"\n fields.consentDialogTermsOfUseTitle?.value && fields.consentDialogTermsOfUseText?.value\n \"\n class=\"consent-dialog-fi__content__item\"\n >\n <h3 class=\"consent-dialog-fi__content__title\">\n {{ fields.consentDialogTermsOfUseTitle.value }}\n </h3>\n\n <richtext-fi\n class=\"consent-dialog-fi__content__text\"\n :html-content=\"fields.consentDialogTermsOfUseText\"\n />\n\n <link-fi\n v-if=\"\n fields.consentDialogTermsOfUseLink?.value &&\n (fields.consentDialogTermsOfUseLink.value.url ||\n fields.consentDialogTermsOfUseLink.value.href)\n \"\n class=\"consent-dialog-fi__content__link\"\n :href=\"\n fields.consentDialogTermsOfUseLink.value.url ||\n fields.consentDialogTermsOfUseLink.value.href\n \"\n :external=\"Boolean(fields.consentDialogTermsOfUseLink.value.url)\"\n target=\"_blank\"\n primary\n >\n {{ fields.consentDialogTermsOfUseLink.value.text }}\n </link-fi>\n </div>\n </div>\n </template>\n\n <template #footer>\n <div class=\"consent-dialog-fi__actions\">\n <button-fi\n :class=\"{\n 'consent-dialog-fi__button button-fi__primary': true,\n 'button-fi--large': isSM,\n }\"\n type=\"button\"\n @click.prevent=\"confirm\"\n >\n {{ fields.consentDialogButton?.value }}\n </button-fi>\n </div>\n </template>\n\n <template #button>\n <icon-fi icon=\"close\" />\n </template>\n </dialog-modal-fi>\n</template>\n\n<script>\nimport { ButtonFi, DialogModalFi, IconFi, LinkFi, RichtextFi } from 'atoms';\nimport breakpointMixin from 'mixins/breakpointMixin';\n\nexport default {\n name: 'ConsentDialogFi',\n components: {\n ButtonFi,\n IconFi,\n DialogModalFi,\n LinkFi,\n RichtextFi,\n },\n mixins: [breakpointMixin],\n props: {\n fields: {\n type: Object,\n default: () => ({}),\n },\n },\n emits: ['confirm'],\n methods: {\n open() {\n this.$refs.dialogModal.open();\n },\n close() {\n this.$refs.dialogModal.close();\n },\n confirm() {\n this.$emit('confirm');\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import './consent-dialog-fi';\n</style>\n","<template>\n <reduced-layout-fi\n :api-data=\"undefined\"\n :interface-language=\"undefined\"\n >\n <loading-indicator variant=\"spinnerFullPageCover\" />\n </reduced-layout-fi>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '@vue/apollo-composable';\nimport { LoadingIndicator } from 'atoms/index';\nimport { useHandlingFeeCookie } from 'components/handling-fee-limit-banner-fi/handlingFeeCookie';\nimport ReducedLayoutFi from 'components/reduced-layout-fi/ReducedLayoutFi.vue';\nimport {\n allowedStateChars,\n isNonceError,\n loginDialogCookies,\n useLogin,\n usernameCookie,\n} from 'composables/login';\nimport { onMounted } from 'vue';\n\nimport { useCookies } from '@/composables/cookies';\nimport { useFischer } from '@/composables/fischerPlugin';\nimport { markAsNotIDS } from '@/utils/idsTools';\n\nconst MERGECARTPromise = () => import('gql/mergeCart.gql');\n\nconst { clearHandlingFeeLimitCookie } = useHandlingFeeCookie();\nconst {\n criticalLoginFailure,\n setDevToken,\n initializeAuthorization,\n isSpecialPage,\n logDebug,\n getCookies,\n setCookies,\n postAccessTokenInSession,\n notifyLogin,\n} = useLogin();\nconst fischer = useFischer();\nconst { cookies: vueCookies } = useCookies();\n\ndefineOptions({\n name: 'SiteLoginStandalone',\n});\n\nconst emit = defineEmits<{\n 'logged-in': [\n {\n redirect: string;\n accessToken: string;\n data?: string;\n },\n ];\n}>();\n\nconst mergeCarts = async (\n accessToken: string,\n idToken: string,\n cartId: string,\n): Promise<boolean | null> => {\n try {\n if (!cartId || cartId === 'current') {\n logDebug('not merging cart, cartId', cartId);\n return null;\n }\n logDebug('started merging carts...');\n const MERGECART = (await MERGECARTPromise()).default;\n const { mutate } = useMutation(MERGECART);\n await mutate({\n variables: {\n cartId,\n accessToken,\n idToken,\n baseSiteId: fischer.baseSiteId(),\n },\n onError: (error: any) => console.error('Could not merge carts', error),\n });\n logDebug('finished merging carts');\n return true;\n } catch (error) {\n console.error('Could not merge cart', error, cartId);\n return false;\n }\n};\n\nconst restoreTokenState = async (stateId: string) => {\n const cookies = getCookies();\n const state = cookies[`state-${stateId}`];\n delete cookies[`state-${stateId}`]; // it is important to remove these to protect against replays, even if we fail later\n\n const { value: nonce, validUntil: nonceValidUntil, data } = cookies[`nonce-${stateId}`] || {};\n delete cookies[`nonce-${stateId}`];\n\n if (nonceValidUntil) {\n // re-set nonce with 'used' flag, so we can see this 'was' a valid login and can re-attempt\n cookies[`nonce-${stateId}`] = { value: 'used', validUntil: nonceValidUntil };\n }\n\n if (!(await setCookies(cookies))) {\n return [];\n }\n return [nonce, state, data];\n};\n\nconst checkIsValidRedirect = (redirect: string | null) => {\n if (!redirect) {\n return false;\n }\n\n // do not redirect to current page or we go in circles\n if (redirect.startsWith(window.location.pathname)) {\n return false;\n }\n if (redirect.startsWith(`${window.location.origin}/${window.location.pathname}`)) {\n return false;\n }\n\n const dialogMatch = /^dialog:(\\/[^@]*)/.exec(redirect);\n if (dialogMatch) {\n if (isSpecialPage(dialogMatch[1])) {\n return fischer.pages.myAccount().url;\n }\n return dialogMatch[1];\n }\n\n return redirect;\n};\n\nconst handleLoginCallback = async () => {\n if (\n /(?:^#|&)brand=http/.test(window.location.hash) ||\n /(?:^\\?|&)brand=http/.test(window.location.search)\n ) {\n const loginDialog: string | null = vueCookies.get(loginDialogCookies);\n if (!loginDialog) {\n console.error('no login dialog');\n return false;\n }\n const href = `${fischer.hostUrlBase()}${loginDialog}${window.location.search}${window.location.hash}`;\n logDebug('redirecting to dialog page', href);\n if (fischer.query('debug-no-redirect')) {\n console.debug('no redirect flag set');\n } else {\n window.location.href = href;\n }\n return true;\n }\n\n const hash = String(window.location.hash);\n logDebug('handling login callback', Boolean(hash));\n if (!hash) {\n logDebug('got no hash, not a login callback');\n return false;\n }\n\n const [, idToken] = /[#&]id_token=([^&]+)/.exec(hash) || [];\n const [, accessToken] = /[#&]access_token=([^&]+)/.exec(hash) || [];\n const [, stateId] = new RegExp(`[#&]state=([${allowedStateChars}]+)`).exec(hash) || [];\n // Unfortunately we can NOT remove the data from the hash, because\n // something causes the component to re-render\n\n if (!stateId) {\n console.error('state not found in hash');\n return false;\n }\n\n if (stateId === 'retry') {\n logDebug('got request to retry login - most likely bookmarked login page');\n return false;\n }\n\n const [nonce, state] = await restoreTokenState(stateId);\n if (nonce === 'used') {\n console.info('Nonce for state already used, re-attempting login');\n return false;\n }\n if (!state) {\n criticalLoginFailure('Could not restore state', state);\n return true;\n }\n if (isNonceError(idToken, nonce)) {\n criticalLoginFailure('Nonce failed');\n return true;\n }\n\n const { redirect, cartId } = state;\n\n let loginSuccessPage;\n clearHandlingFeeLimitCookie();\n vueCookies.remove(usernameCookie);\n if (IS_SHOWROOM) {\n setDevToken(accessToken, idToken);\n loginSuccessPage = '/';\n } else {\n const cartMergePromise = mergeCarts(accessToken, idToken, cartId);\n try {\n logDebug('posting token to sitecore');\n loginSuccessPage = await postAccessTokenInSession(accessToken, idToken);\n } catch {\n logDebug('error occured when posting to sitecore, not redirecting');\n return true;\n }\n await cartMergePromise;\n }\n\n notifyLogin();\n\n markAsNotIDS();\n logDebug('redirecting to login-success-page', redirect, checkIsValidRedirect(redirect));\n\n const data = /@(.*)/.exec(redirect || '')?.[1];\n\n emit('logged-in', {\n redirect: checkIsValidRedirect(redirect) || checkIsValidRedirect(loginSuccessPage) || '/',\n accessToken,\n data,\n });\n return true;\n};\n\nonMounted(async () => {\n try {\n if (IS_SSR) {\n return;\n }\n\n if (!(await handleLoginCallback())) {\n initializeAuthorization(fischer.isLoginDialogEnabled());\n }\n } catch (error) {\n console.error('error in created hook', error);\n }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n@import './site-login-standalone';\n</style>\n","<template>\n <div class=\"my-account-login\">\n <consent-dialog-fi\n ref=\"consentDialog\"\n :fields=\"fields\"\n @confirm=\"redirectTo(successRedirect)\"\n />\n\n <site-login-standalone @logged-in=\"loggedInStandalone\" />\n </div>\n</template>\n\n<script>\nimport ConsentDialogFi from 'components/my-account/site-login/consent-dialog-fi/ConsentDialogFi';\nimport SiteLoginStandalone from 'components/my-account/site-login/SiteLoginStandalone';\nimport GIVECONSENT from 'gql/giveConsent.gql';\nimport consentMixin from 'mixins/consentMixin';\n\nexport default {\n name: 'MyAccountLogin',\n components: {\n ConsentDialogFi,\n SiteLoginStandalone,\n },\n mixins: [consentMixin],\n inject: ['fields'],\n async created() {\n if (IS_SSR) {\n return;\n }\n\n // login will fail (CORS policy) if we are on an unsecure connection\n if (window.location.protocol !== 'https:' && !IS_SHOWROOM) {\n window.location.replace(\n `https:${window.location.href.substring(window.location.protocol.length)}`,\n );\n }\n },\n methods: {\n async loggedInStandalone(el) {\n const newConsent = await this.checkNewConsents(el.accessToken);\n let { redirect } = el;\n if (el.data) {\n redirect = `${redirect}#${el.data}`;\n }\n\n if (newConsent) {\n this.successRedirect = redirect;\n } else {\n this.redirectTo(redirect);\n }\n },\n async checkNewConsents(accessToken) {\n if (!this.fields.enableConsentDialog?.value) {\n return false;\n }\n\n try {\n const userConsentTemplates = await this.getConsentTemplates(accessToken);\n const registrationConsents = userConsentTemplates.filter(\n (consent) =>\n consent.id === `REGISTRATION_DATA_PRIVACY_${this.$fischer.baseSiteId()}` ||\n consent.id === `REGISTRATION_TERMS_AND_CONDITIONS_${this.$fischer.baseSiteId()}`,\n );\n\n let newConsent = false;\n registrationConsents.forEach((consent) => {\n if (!consent.currentConsent) {\n newConsent = true;\n this.newConsentTemplates.push({ id: consent.id, version: consent.version });\n }\n });\n\n if (newConsent) {\n this.$refs.consentDialog.open();\n this.acceptConsent(accessToken);\n }\n\n return newConsent;\n } catch (error) {\n console.error(error);\n return false;\n }\n },\n async acceptConsent(accessToken) {\n await this.newConsentTemplates.forEach(async (consentTemplate) => {\n await this.$apollo.mutate({\n mutation: GIVECONSENT,\n variables: {\n baseSiteId: this.$fischer.baseSiteId(),\n accessToken,\n userId: 'current',\n consentTemplateId: consentTemplate.id,\n consentTemplateVersion: consentTemplate.version,\n lang: this.$fischer.language_639_1(),\n },\n });\n });\n },\n redirectTo(url) {\n window.location.href = url;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import './my-account-login';\n</style>\n"],"file":"assets/MyAccountLogin-B7But4H1.js"}