{"version":3,"file":"BlsdZnTN.js","sources":["../../../../src/components/form/login/useLoginForm.ts"],"sourcesContent":["import { useSecureSessionPost } from '~~/src/composables/dataFetching/genericFetchers';\nimport type { Result } from '~~/src/server/api/[site]/user/login.post';\nimport { ErrorIdent } from '~/@types/errorIdents';\nimport { useSessionStore } from '~/stores/useSessionStore';\nimport { handleLoadingError } from '~/utils/handleLoadingError';\nimport useRecaptcha from '@/components/formTools/recaptcha/useRecaptcha';\n\nexport enum Views {\n LOGIN = 'login',\n FORGOT = 'forgot',\n LEGACY = 'legacy',\n SUCCESS = 'success',\n}\n\nexport function useLoginForm(options?: { noCaptcha?: boolean }) {\n const site = useSiteIdent();\n const errors = ref([]);\n const session = useSessionStore();\n const view = ref(Views.LOGIN);\n const legacyHash = ref('');\n const isLoading = ref(false);\n const { captcha } =\n options?.noCaptcha !== true ? useRecaptcha() : { captcha: null };\n const usesCaptcha = computed(\n () => !!captcha.value && options?.noCaptcha !== true,\n );\n interface loginForm {\n email: string;\n password: string;\n }\n\n async function onSubmit(data: loginForm) {\n //needed because when the form is subitted while the input is focused, formkit throws an error when it tries to blur the already unmounted input\n (document.activeElement as HTMLElement)?.blur();\n isLoading.value = true;\n await login(data);\n isLoading.value = false;\n }\n\n async function login(formData: loginForm) {\n try {\n isLoading.value = true;\n const postData = formData;\n const result = await useSecureSessionPost(\n `/api/${site}/user/login`,\n {\n ...postData,\n captcha: await (captcha.value\n ? captcha.value?.execute('submit')\n : null),\n },\n );\n if (result?.sessionId) {\n session.login(result.sessionId);\n view.value = Views.SUCCESS;\n } else if (result.legacyToken) {\n legacyHash.value = result.legacyToken;\n view.value = Views.LEGACY;\n }\n\n isLoading.value = false;\n } catch (e: any) {\n errors.value = e.data?.data?.errors ?? [ErrorIdent.UNKNOWN_ERROR];\n document.querySelector('.js-error-container')?.scrollIntoView({\n behavior: 'smooth',\n });\n isLoading.value = false;\n handleLoadingError(e);\n }\n }\n\n async function logout() {\n try {\n isLoading.value = true;\n await session.logout();\n isLoading.value = false;\n } catch (e: any) {\n errors.value = e.data.data.errors;\n isLoading.value = false;\n }\n }\n return {\n onSubmit,\n errors,\n isLoading,\n logout,\n view,\n legacyHash,\n usesCaptcha,\n };\n}\n"],"names":["Views","useLoginForm","options","site","useSiteIdent","errors","ref","session","useSessionStore","view","legacyHash","isLoading","captcha","useRecaptcha","usesCaptcha","computed","onSubmit","data","_a","login","formData","postData","result","useSecureSessionPost","e","_c","_b","ErrorIdent","_d","handleLoadingError","logout"],"mappings":"+GAOY,IAAAA,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UAJAA,IAAAA,GAAA,CAAA,CAAA,EAOL,SAASC,EAAaC,EAAmC,CAC9D,MAAMC,EAAOC,IACPC,EAASC,EAAkB,CAAA,CAAE,EAC7BC,EAAUC,IACVC,EAAOH,EAAW,SAClBI,EAAaJ,EAAI,EAAE,EACnBK,EAAYL,EAAI,EAAK,EACrB,CAAE,QAAAM,IACNV,GAAA,YAAAA,EAAS,aAAc,GAAOW,IAAiB,CAAE,QAAS,MACtDC,EAAcC,EAClB,IAAM,CAAC,CAACH,EAAQ,QAASV,GAAA,YAAAA,EAAS,aAAc,EAAA,EAOlD,eAAec,EAASC,EAAiB,QAEtCC,EAAA,SAAS,gBAAT,MAAAA,EAAwC,OACzCP,EAAU,MAAQ,GAClB,MAAMQ,EAAMF,CAAI,EAChBN,EAAU,MAAQ,EACpB,CAEA,eAAeQ,EAAMC,EAAqB,aACpC,GAAA,CACFT,EAAU,MAAQ,GAClB,MAAMU,EAAWD,EACXE,EAAS,MAAMC,EACnB,QAAQpB,CAAI,cACZ,CACE,GAAGkB,EACH,QAAS,MAAOT,EAAQ,OACpBM,EAAAN,EAAQ,QAAR,YAAAM,EAAe,QAAQ,UACvB,KACN,CAAA,EAEEI,GAAA,MAAAA,EAAQ,WACFf,EAAA,MAAMe,EAAO,SAAS,EAC9Bb,EAAK,MAAQ,WACJa,EAAO,cAChBZ,EAAW,MAAQY,EAAO,YAC1Bb,EAAK,MAAQ,UAGfE,EAAU,MAAQ,SACXa,EAAQ,CACfnB,EAAO,QAAQoB,GAAAC,EAAAF,EAAE,OAAF,YAAAE,EAAQ,OAAR,YAAAD,EAAc,SAAU,CAACE,EAAW,aAAa,GACvDC,EAAA,SAAA,cAAc,qBAAqB,IAAnC,MAAAA,EAAsC,eAAe,CAC5D,SAAU,QAAA,GAEZjB,EAAU,MAAQ,GAClBkB,EAAmBL,CAAC,CACtB,CACF,CAEA,eAAeM,GAAS,CAClB,GAAA,CACFnB,EAAU,MAAQ,GAClB,MAAMJ,EAAQ,SACdI,EAAU,MAAQ,SACXa,EAAQ,CACRnB,EAAA,MAAQmB,EAAE,KAAK,KAAK,OAC3Bb,EAAU,MAAQ,EACpB,CACF,CACO,MAAA,CACL,SAAAK,EACA,OAAAX,EACA,UAAAM,EACA,OAAAmB,EACA,KAAArB,EACA,WAAAC,EACA,YAAAI,CAAA,CAEJ"}