{"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"}