@dragonmastery/dragoncore-vue 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Appearance-D5pwxuf4.js +3 -0
- package/dist/{Appearance-BfPdKMXw.js → Appearance-DxWTyx1M.js} +1 -1
- package/dist/{Appearance-BfPdKMXw.js.map → Appearance-DxWTyx1M.js.map} +1 -1
- package/dist/{ChangePasswordPage-D2Ci00Sh.js → ChangePasswordPage-DBXchGfn.js} +2 -2
- package/dist/{ChangePasswordPage-D2Ci00Sh.js.map → ChangePasswordPage-DBXchGfn.js.map} +1 -1
- package/dist/ChangePasswordPage-Re323roR.js +6 -0
- package/dist/ConsentRequired-qMNT-U2T.js +204 -0
- package/dist/ConsentRequired-qMNT-U2T.js.map +1 -0
- package/dist/CreateTeamForm-DXN1hoJh.js +34 -0
- package/dist/CreateTeamMemberForm-CLHT1HN_.js +34 -0
- package/dist/{CreateUserPage-DbT_l32W.js → CreateUserPage-B0iHLsm5.js} +2 -2
- package/dist/{CreateUserPage-DbT_l32W.js.map → CreateUserPage-B0iHLsm5.js.map} +1 -1
- package/dist/CreateUserPage-C8107z_O.js +6 -0
- package/dist/CreditBalanceDashboard-D7MFKfh6.js +34 -0
- package/dist/CreditManagement-A8hVPoSp.js +34 -0
- package/dist/CustomerCreateSupportTicketForm-B8JQNC1I.js +34 -0
- package/dist/{CustomerSupportTicketDetailPage-CthS9akm.js → CustomerSupportTicketDetailPage-DyJTKtLU.js} +9 -9
- package/dist/{CustomerSupportTicketDetailPage-CthS9akm.js.map → CustomerSupportTicketDetailPage-DyJTKtLU.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DR-UfcGr.js +34 -0
- package/dist/CustomerSupportTicketParent-C-KzT4qQ.js +7 -0
- package/dist/{CustomerSupportTicketParent-iBV1KRKL.js → CustomerSupportTicketParent-CldxkQ75.js} +4 -4
- package/dist/{CustomerSupportTicketParent-iBV1KRKL.js.map → CustomerSupportTicketParent-CldxkQ75.js.map} +1 -1
- package/dist/CustomerSupportTicketSuccess-SBdIcS-_.js +34 -0
- package/dist/EditTeamForm-BDQkhBbx.js +34 -0
- package/dist/EditTeamMemberForm-CBxFLoIy.js +6 -0
- package/dist/{EditTeamMemberForm-Cy8nzoUb.js → EditTeamMemberForm-CiNb4nNG.js} +2 -2
- package/dist/{EditTeamMemberForm-Cy8nzoUb.js.map → EditTeamMemberForm-CiNb4nNG.js.map} +1 -1
- package/dist/EditUserPage-BWKrAKZZ.js +7 -0
- package/dist/{EditUserPage-CIRqNko-.js → EditUserPage-DpV3dm-c.js} +4 -4
- package/dist/{EditUserPage-CIRqNko-.js.map → EditUserPage-DpV3dm-c.js.map} +1 -1
- package/dist/ForgotPassword-D3OQqbrD.js +7 -0
- package/dist/{ForgotPassword-CJg_buPl.js → ForgotPassword-roKwDfce.js} +3 -3
- package/dist/{ForgotPassword-CJg_buPl.js.map → ForgotPassword-roKwDfce.js.map} +1 -1
- package/dist/{LoginForm-DyHmiC1I.js → LoginForm-BGDymDnO.js} +4 -4
- package/dist/{LoginForm-DyHmiC1I.js.map → LoginForm-BGDymDnO.js.map} +1 -1
- package/dist/LoginForm-C97dUsU3.js +7 -0
- package/dist/Logout-Cbw1SacV.js +71 -0
- package/dist/Logout-Cbw1SacV.js.map +1 -0
- package/dist/Logout-DY3iorah.js +7 -0
- package/dist/{MfaSetup-D80HhwEz.js → MfaSetup-CwYXnvgW.js} +4 -4
- package/dist/{MfaSetup-D80HhwEz.js.map → MfaSetup-CwYXnvgW.js.map} +1 -1
- package/dist/MfaSetup-DAQV8MhP.js +8 -0
- package/dist/{MfaVerify-BEd-f6oV.js → MfaVerify-CIlen2i5.js} +5 -5
- package/dist/{MfaVerify-BEd-f6oV.js.map → MfaVerify-CIlen2i5.js.map} +1 -1
- package/dist/MfaVerify-D-_oX6gL.js +8 -0
- package/dist/RecordVersionViewer-BWZ78vvE.js +490 -0
- package/dist/RecordVersionViewer-BWZ78vvE.js.map +1 -0
- package/dist/{ResetPassword-4HLdgM7s.js → ResetPassword-BgKyXQ4q.js} +3 -3
- package/dist/{ResetPassword-4HLdgM7s.js.map → ResetPassword-BgKyXQ4q.js.map} +1 -1
- package/dist/ResetPassword-CkPqUFbq.js +7 -0
- package/dist/{SavedFiltersPage-p0qGRIuN.js → SavedFiltersPage-BlzfWkaj.js} +31 -29
- package/dist/{SavedFiltersPage-p0qGRIuN.js.map → SavedFiltersPage-BlzfWkaj.js.map} +1 -1
- package/dist/Signup-C2FshPnc.js +8 -0
- package/dist/Signup-qBqsSYVz.js +213 -0
- package/dist/Signup-qBqsSYVz.js.map +1 -0
- package/dist/SignupConsentFlow-DG2IGikE.js +243 -0
- package/dist/SignupConsentFlow-DG2IGikE.js.map +1 -0
- package/dist/SignupRequirementsPage-DnLpQfB8.js +360 -0
- package/dist/SignupRequirementsPage-DnLpQfB8.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-BrGB7tqD.js +34 -0
- package/dist/{StaffSupportTicketDetailPage-TaAPQARa.js → StaffSupportTicketDetailPage-D0SjH36N.js} +11 -11
- package/dist/{StaffSupportTicketDetailPage-TaAPQARa.js.map → StaffSupportTicketDetailPage-D0SjH36N.js.map} +1 -1
- package/dist/StaffSupportTicketList-HA4NlkKE.js +34 -0
- package/dist/StaffSupportTicketParent-BTbpNdfc.js +7 -0
- package/dist/{StaffSupportTicketParent-KYzy4eb4.js → StaffSupportTicketParent-Dk6RFRMt.js} +4 -4
- package/dist/{StaffSupportTicketParent-KYzy4eb4.js.map → StaffSupportTicketParent-Dk6RFRMt.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-CTeMG_iK.js +34 -0
- package/dist/{SupportStaffPage-D_YsHZZa.js → SupportStaffPage-DFcgP8iE.js} +7 -7
- package/dist/{SupportStaffPage-D_YsHZZa.js.map → SupportStaffPage-DFcgP8iE.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-B2NysMAj.js → SupportTicketDevLifecycleBadge-EMrQHfyG.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-B2NysMAj.js.map → SupportTicketDevLifecycleBadge-EMrQHfyG.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-CpK1esq2.js → SupportTicketMaintenancePage-BCW0eZxV.js} +4 -4
- package/dist/{SupportTicketMaintenancePage-CpK1esq2.js.map → SupportTicketMaintenancePage-BCW0eZxV.js.map} +1 -1
- package/dist/TeamAttachmentsTab-IaRtuF55.js +34 -0
- package/dist/TeamHistoryTab-DWcVhkwC.js +4 -0
- package/dist/{TeamHistoryTab-BQ-eXtiw.js → TeamHistoryTab-PVS8A-6K.js} +3 -3
- package/dist/{TeamHistoryTab-BQ-eXtiw.js.map → TeamHistoryTab-PVS8A-6K.js.map} +1 -1
- package/dist/TeamList-BNo_ime8.js +34 -0
- package/dist/TeamMemberList-DJKYxfsx.js +34 -0
- package/dist/TeamMemberParent-Bk6dqXsh.js +34 -0
- package/dist/{TeamNotesTab-Dj12Q2gD.js → TeamNotesTab-D7ELC1EW.js} +5 -5
- package/dist/{TeamNotesTab-Dj12Q2gD.js.map → TeamNotesTab-D7ELC1EW.js.map} +1 -1
- package/dist/TeamNotesTab-JRWYpqRJ.js +7 -0
- package/dist/TeamParent-TSWT_0bK.js +34 -0
- package/dist/{TimelineNoteInput-DGDgyGe-.js → TimelineNoteInput-D-NjzUiF.js} +2 -2
- package/dist/{TimelineNoteInput-DGDgyGe-.js.map → TimelineNoteInput-D-NjzUiF.js.map} +1 -1
- package/dist/{TimelineSystemEvent-CBwUl5G8.js → TimelineSystemEvent-Cc6HMeO3.js} +4 -4
- package/dist/{TimelineSystemEvent-CBwUl5G8.js.map → TimelineSystemEvent-Cc6HMeO3.js.map} +1 -1
- package/dist/UserListPage-BjHbDpvC.js +4 -0
- package/dist/{UserListPage-D-IdlsHK.js → UserListPage-DdJFeLP1.js} +3 -3
- package/dist/{UserListPage-D-IdlsHK.js.map → UserListPage-DdJFeLP1.js.map} +1 -1
- package/dist/{UserProfilePage-DMwDVgXa.js → UserProfilePage-BhCxv0N9.js} +4 -4
- package/dist/{UserProfilePage-DMwDVgXa.js.map → UserProfilePage-BhCxv0N9.js.map} +1 -1
- package/dist/UserProfilePage-BxIMig4s.js +7 -0
- package/dist/VerifyEmail-BYSYk5ef.js +7 -0
- package/dist/{VerifyEmail-CHfTzrHg.js → VerifyEmail-DXYcjCX4.js} +57 -21
- package/dist/VerifyEmail-DXYcjCX4.js.map +1 -0
- package/dist/{VerifyEmailRequired-BCKREd_C.js → VerifyEmailRequired-DeMYFS0I.js} +22 -8
- package/dist/VerifyEmailRequired-DeMYFS0I.js.map +1 -0
- package/dist/ViewTeam-DIxy437n.js +34 -0
- package/dist/ViewTeamMember-DIaIqfbX.js +34 -0
- package/dist/{convertToLocalDateTime-mKs5eC9T.js → convertToLocalDateTime-CFhtN6PI.js} +12 -2
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +1 -0
- package/dist/{displayIdFormatter-rSbbsHIX.js → displayIdFormatter-Dz900Awr.js} +1 -1
- package/dist/{displayIdFormatter-rSbbsHIX.js.map → displayIdFormatter-Dz900Awr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-pP3v8kKE.js → extractRpcErrorMessage-Di8E8-Wh.js} +1 -1
- package/dist/{extractRpcErrorMessage-pP3v8kKE.js.map → extractRpcErrorMessage-Di8E8-Wh.js.map} +1 -1
- package/dist/index.d.ts +857 -801
- package/dist/index.js +35 -33
- package/dist/{mfaSchema-_vbG9jiT.js → mfaSchema-s-T8m-7-.js} +1 -1
- package/dist/{mfaSchema-_vbG9jiT.js.map → mfaSchema-s-T8m-7-.js.map} +1 -1
- package/dist/{src-B5eswi_J.js → src--FuqlDhU.js} +405 -804
- package/dist/src--FuqlDhU.js.map +1 -0
- package/dist/{useBreadcrumbs-B-W-miq6.js → useBreadcrumbs-qB6ghsAf.js} +1 -1
- package/dist/{useBreadcrumbs-B-W-miq6.js.map → useBreadcrumbs-qB6ghsAf.js.map} +1 -1
- package/dist/{useMutation-DzRSXPB1.js → useMutation-Dhx2gMgS.js} +3 -3
- package/dist/{useMutation-DzRSXPB1.js.map → useMutation-Dhx2gMgS.js.map} +1 -1
- package/dist/{useQuery-bvJabe9Q.js → useQuery-DxmMxM8z.js} +5 -5
- package/dist/useQuery-DxmMxM8z.js.map +1 -0
- package/dist/{useQueryCache-DIGf3fCM.js → useQueryCache-CJKZquh6.js} +2 -2
- package/dist/{useQueryCache-DIGf3fCM.js.map → useQueryCache-CJKZquh6.js.map} +1 -1
- package/dist/{useReturnUrl-BBoPnDR3.js → useReturnUrl-qFeazn-G.js} +17 -2
- package/dist/useReturnUrl-qFeazn-G.js.map +1 -0
- package/dist/{useRpcAuth-SgNzCAPa.js → useRpcAuth-Bse-lggK.js} +23 -10
- package/dist/useRpcAuth-Bse-lggK.js.map +1 -0
- package/dist/useSignupPendingData-BWHwUHhL.js +47 -0
- package/dist/useSignupPendingData-BWHwUHhL.js.map +1 -0
- package/package.json +5 -2
- package/src/daisyui.css +1 -0
- package/dist/Appearance-CohgRf-_.js +0 -3
- package/dist/ChangePasswordPage-DqnWhaUa.js +0 -6
- package/dist/CreateTeamForm-LadKAxsM.js +0 -32
- package/dist/CreateTeamMemberForm-eWL__TEt.js +0 -32
- package/dist/CreateUserPage-cduuWl9g.js +0 -6
- package/dist/CreditBalanceDashboard-CgRRO6MD.js +0 -32
- package/dist/CreditManagement-BBb_Xumq.js +0 -32
- package/dist/CustomerCreateSupportTicketForm-yfyeXr0V.js +0 -32
- package/dist/CustomerSupportTicketList-Zzsg1FtO.js +0 -32
- package/dist/CustomerSupportTicketParent-CqR8lF7r.js +0 -7
- package/dist/CustomerSupportTicketSuccess-BPyydSLQ.js +0 -32
- package/dist/EditTeamForm-D0wZKYm2.js +0 -32
- package/dist/EditTeamMemberForm-JuRGiWOn.js +0 -6
- package/dist/EditUserPage-Dl6d3Cuh.js +0 -7
- package/dist/ForgotPassword-rSN-8EC4.js +0 -7
- package/dist/LoginForm-YCzdrekw.js +0 -7
- package/dist/Logout-C6pWyTIm.js +0 -41
- package/dist/Logout-C6pWyTIm.js.map +0 -1
- package/dist/Logout-Ctc8b-B0.js +0 -6
- package/dist/MfaSetup-xNmNjSh1.js +0 -8
- package/dist/MfaVerify-C0COXH_W.js +0 -8
- package/dist/ResetPassword-BCzMTXpT.js +0 -7
- package/dist/Signup-Ct0m0x78.js +0 -137
- package/dist/Signup-Ct0m0x78.js.map +0 -1
- package/dist/Signup-DNEklGpK.js +0 -7
- package/dist/StaffCreateSupportTicketForm-CxpKnqCq.js +0 -32
- package/dist/StaffSupportTicketList-BuKBTk2v.js +0 -32
- package/dist/StaffSupportTicketParent-Lkn-5u7C.js +0 -7
- package/dist/StaffSupportTicketSuccess-BD1Xsnx1.js +0 -32
- package/dist/TeamAttachmentsTab-DA_MBYj8.js +0 -32
- package/dist/TeamHistoryTab-lz2ouNyP.js +0 -4
- package/dist/TeamList-T3mZJTzq.js +0 -32
- package/dist/TeamMemberList-BW4qqzC1.js +0 -32
- package/dist/TeamMemberParent-Wcht0pIz.js +0 -32
- package/dist/TeamNotesTab-aGD8O49y.js +0 -7
- package/dist/TeamParent-BkhaJwud.js +0 -32
- package/dist/UserListPage-C9zUjaOK.js +0 -4
- package/dist/UserProfilePage-D52_Q5yf.js +0 -7
- package/dist/VerifyEmail-5thal4d_.js +0 -7
- package/dist/VerifyEmail-CHfTzrHg.js.map +0 -1
- package/dist/VerifyEmailRequired-BCKREd_C.js.map +0 -1
- package/dist/ViewTeam-g7WhYvsR.js +0 -32
- package/dist/ViewTeamMember-ByCSsl5k.js +0 -32
- package/dist/convertToLocalDateTime-mKs5eC9T.js.map +0 -1
- package/dist/src-B5eswi_J.js.map +0 -1
- package/dist/useQuery-bvJabe9Q.js.map +0 -1
- package/dist/useReturnUrl-BBoPnDR3.js.map +0 -1
- package/dist/useRpcAuth-SgNzCAPa.js.map +0 -1
- /package/dist/{TeamMembersTab-CpE9BaCi.js → TeamMembersTab-CBB2Yl_I.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { l as useUserSessionStore, m as useEnv } from "./useRpcAuth-
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
1
|
+
import { l as useUserSessionStore, m as useEnv } from "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
|
|
3
3
|
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
4
|
-
import {
|
|
4
|
+
import { o as withReturnUrl, r as getValidReturnUrl } from "./useReturnUrl-qFeazn-G.js";
|
|
5
5
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
6
6
|
import { useRoute, useRouter } from "vue-router";
|
|
7
7
|
import { toast } from "vue3-toastify";
|
|
@@ -113,4 +113,4 @@ var LoginForm_default = _sfc_main;
|
|
|
113
113
|
|
|
114
114
|
//#endregion
|
|
115
115
|
export { loginSchemaWithMetadata as n, LoginForm_default as t };
|
|
116
|
-
//# sourceMappingURL=LoginForm-
|
|
116
|
+
//# sourceMappingURL=LoginForm-BGDymDnO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginForm-
|
|
1
|
+
{"version":3,"file":"LoginForm-BGDymDnO.js","names":[],"sources":["../src/slices/auth/features/login/loginSchema.ts","../src/slices/auth/features/login/LoginForm.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { loginSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the login form type\nexport type LoginForm = z.infer<typeof loginSchema>;\n\n// Enhance the schema with metadata\nexport const loginSchemaWithMetadata = withMetadata(loginSchema, 'loginSchema', {\n email: {\n inputType: 'email',\n placeholder: 'you@example.com',\n helpText: 'Enter the email address you used to register',\n autocomplete: 'username',\n className: 'login-field',\n autofocus: true,\n },\n\n password: {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n});\n","<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Login</h1>\n\n <ZiniaForm @handle-submit=\"handleSubmit\" @success=\"handleSuccess\" @error=\"handleError\">\n <zinia.EmailField />\n <zinia.PasswordField />\n\n <ZiniaSubmitButton submitText=\"Login\" submittingText=\"Logging in...\" />\n\n <div class=\"mt-2\">\n <AppLink :to=\"forgotPasswordLink\" class=\"link-accent link\">\n Forgot your password?\n </AppLink>\n </div>\n <div v-if=\"allowUserSignup\" class=\"text-center mt-2\">\n <p>\n Don't have an account?\n <AppLink class=\"link-accent link\" :to=\"signupLink\">Sign up</AppLink>\n </p>\n </div>\n </ZiniaForm>\n\n <!-- Divider between login form and social buttons -->\n <!-- <div class=\"divider my-6\">OR</div> -->\n\n <!-- Social Login Buttons Component -->\n <!-- <SocialLoginButtons @login=\"socialLogin\" /> -->\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../../components/AppLink.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useEnv } from '../../../../composables/useEnv';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl, withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { z } from 'zod';\nimport { loginSchemaWithMetadata } from './loginSchema';\n\nconst { allowUserSignup } = useEnv();\nconst route = useRoute();\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst forgotPasswordLink = computed(() => withReturnUrl('/auth/forgot-password', returnUrl.value));\nconst signupLink = computed(() => withReturnUrl('/auth/signup', returnUrl.value));\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(loginSchemaWithMetadata, {\n storeName: 'login-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n});\n\nconst sessionStore = useUserSessionStore();\nconst router = useRouter();\nconst { mutate: loginMutate } = useMutation(\n (api, input: z.infer<typeof loginSchemaWithMetadata>) => api.userSessions.login(input),\n { credentials: 'include' }, // Include credentials to allow cookies\n);\n\n// Handle form submission\nconst handleSubmit = async (data: z.infer<typeof loginSchemaWithMetadata>) => {\n const loginData = await loginMutate(data);\n if (!loginData) throw new Error('Login failed');\n const { access_token, user_details_token } = loginData;\n if (!access_token || !user_details_token) throw new Error('Invalid login response');\n\n return loginData;\n};\n\n// Handle success\nconst handleSuccess = async (data: { access_token: string; user_details_token: string }) => {\n sessionStore.setSession(data.user_details_token);\n sessionStore.setAccessToken(data.access_token);\n\n form.reset();\n\n const targetPath = getValidReturnUrl(router.currentRoute.value, '/');\n await router.push(targetPath);\n toast.success('You are now logged in!');\n};\n\n// Handle error\nconst handleError = (error: unknown) => {\n toast.error(error instanceof Error ? error.message : 'Login failed');\n};\n</script>\n"],"mappings":";;;;;;;;;;;AAQA,MAAa,0BAA0B,aAAa,aAAa,eAAe;CAC9E,OAAO;EACL,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACX,WAAW;EACZ;CAED,UAAU;EACR,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACZ;CACF,CAAC;;;;;;;;;;;;;ECmBF,MAAM,EAAE,oBAAoB,QAAQ;EACpC,MAAM,QAAQ,UAAU;EACxB,MAAM,YAAY,eAAe,MAAM,MAAM,UAAgC;EAC7E,MAAM,qBAAqB,eAAe,cAAc,yBAAyB,UAAU,MAAM,CAAC;EAClG,MAAM,aAAa,eAAe,cAAc,gBAAgB,UAAU,MAAM,CAAC;EAGjF,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QAAQ,yBAAyB;GACrF,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CAAC;EAEF,MAAM,eAAe,qBAAqB;EAC1C,MAAM,SAAS,WAAW;EAC1B,MAAM,EAAE,QAAQ,gBAAgB,aAC7B,KAAK,UAAmD,IAAI,aAAa,MAAM,MAAM,EACtF,EAAE,aAAa,WAAW,CAC3B;EAGD,MAAM,eAAe,OAAO,SAAkD;GAC5E,MAAM,YAAY,MAAM,YAAY,KAAK;AACzC,OAAI,CAAC,UAAW,OAAM,IAAI,MAAM,eAAe;GAC/C,MAAM,EAAE,cAAc,uBAAuB;AAC7C,OAAI,CAAC,gBAAgB,CAAC,mBAAoB,OAAM,IAAI,MAAM,yBAAyB;AAEnF,UAAO;;EAIT,MAAM,gBAAgB,OAAO,SAA+D;AAC1F,gBAAa,WAAW,KAAK,mBAAmB;AAChD,gBAAa,eAAe,KAAK,aAAa;AAE9C,QAAK,OAAO;GAEZ,MAAM,aAAa,kBAAkB,OAAO,aAAa,OAAO,IAAI;AACpE,SAAM,OAAO,KAAK,WAAW;AAC7B,SAAM,QAAQ,yBAAyB;;EAIzC,MAAM,eAAe,UAAmB;AACtC,SAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,eAAe;;;uBAvFpE,mBA2BM,OA3BN,YA2BM;8BA1BJ,mBAA0D,MAAA,EAAtD,OAAM,uCAAqC,EAAC,SAAK,GAAA;IAErD,YAiBY,MAAA,UAAA,EAAA;KAjBA,gBAAe;KAAe,WAAS;KAAgB,SAAO;;4BACpD;MAApB,YAAoB,MAAA,MAAA,CAAA,WAAA;MACpB,YAAuB,MAAA,MAAA,CAAA,cAAA;MAEvB,YAAuE,MAAA,kBAAA,EAAA;OAApD,YAAW;OAAQ,gBAAe;;MAErD,mBAIM,OAJN,YAIM,CAHJ,YAEU,iBAAA;OAFA,IAAI,mBAAA;OAAoB,OAAM;;8BAExC,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAF2D,2BAE3D,GAAA,CAAA,EAAA,CAAA;;;MAES,MAAA,gBAAe,IAAA,WAAA,EAA1B,mBAKM,OALN,YAKM,CAJJ,mBAGI,KAAA,MAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAHD,4BAED,GAAA,GAAA,YAAoE,iBAAA;OAA3D,OAAM;OAAoB,IAAI,WAAA;;8BAAmB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAP,WAAO,GAAA,CAAA,EAAA,CAAA;;;;;;IAKhE,mBAAA,kDAAsD;IACtD,mBAAA,yCAA2C;IAE3C,mBAAA,mCAAuC;IACvC,mBAAA,kDAAoD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { l as useUserSessionStore } from "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
|
|
3
|
+
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
4
|
+
import { r as getValidReturnUrl } from "./useReturnUrl-qFeazn-G.js";
|
|
5
|
+
import { computed, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, onMounted, openBlock, ref, toDisplayString, withCtx } from "vue";
|
|
6
|
+
import { useRoute, useRouter } from "vue-router";
|
|
7
|
+
import { toast } from "vue3-toastify";
|
|
8
|
+
|
|
9
|
+
//#region src/slices/auth/features/Logout.vue
|
|
10
|
+
const _hoisted_1 = { class: "min-h-screen flex items-center justify-center bg-base-100" };
|
|
11
|
+
const _hoisted_2 = { class: "max-w-md mx-auto bg-base-200 p-8 rounded-xl shadow-md text-center" };
|
|
12
|
+
const _hoisted_3 = {
|
|
13
|
+
key: 0,
|
|
14
|
+
class: "space-y-4"
|
|
15
|
+
};
|
|
16
|
+
const _hoisted_4 = {
|
|
17
|
+
key: 1,
|
|
18
|
+
class: "space-y-4"
|
|
19
|
+
};
|
|
20
|
+
const _hoisted_5 = { class: "text-2xl font-bold mb-2" };
|
|
21
|
+
const _hoisted_6 = { class: "text-base-content/70" };
|
|
22
|
+
const _hoisted_7 = { class: "text-sm text-base-content/60" };
|
|
23
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
24
|
+
__name: "Logout",
|
|
25
|
+
setup(__props) {
|
|
26
|
+
const sessionStore = useUserSessionStore();
|
|
27
|
+
const route = useRoute();
|
|
28
|
+
const router = useRouter();
|
|
29
|
+
const status = ref("loading");
|
|
30
|
+
const redirectTo = computed(() => getValidReturnUrl(route, "/auth/login"));
|
|
31
|
+
const { mutate: logoutMutate } = useMutation((api) => api.userSessions.logout(), { credentials: "include" });
|
|
32
|
+
onMounted(async () => {
|
|
33
|
+
try {
|
|
34
|
+
await logoutMutate(void 0);
|
|
35
|
+
sessionStore.clearSession();
|
|
36
|
+
status.value = "success";
|
|
37
|
+
setTimeout(() => router.push(redirectTo.value), 1e3);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
status.value = "error";
|
|
40
|
+
toast.error(error instanceof Error ? error.message : "Failed to logout", { autoClose: 2e3 });
|
|
41
|
+
setTimeout(() => router.push(redirectTo.value), 2e3);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return (_ctx, _cache) => {
|
|
45
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [status.value === "loading" ? (openBlock(), createElementBlock("div", _hoisted_3, [..._cache[0] || (_cache[0] = [
|
|
46
|
+
createElementVNode("div", { class: "flex justify-center" }, [createElementVNode("span", { class: "loading loading-spinner loading-lg text-primary" })], -1),
|
|
47
|
+
createElementVNode("h2", { class: "text-2xl font-bold mb-2" }, "Logging out...", -1),
|
|
48
|
+
createElementVNode("p", { class: "text-base-content/70" }, "Please wait while we securely log you out", -1)
|
|
49
|
+
])])) : (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
50
|
+
createElementVNode("h2", _hoisted_5, toDisplayString(status.value === "success" ? "Logged out" : "Logout failed"), 1),
|
|
51
|
+
createElementVNode("p", _hoisted_6, toDisplayString(status.value === "success" ? "Redirecting you..." : "Redirecting you to login..."), 1),
|
|
52
|
+
createElementVNode("p", _hoisted_7, [
|
|
53
|
+
_cache[2] || (_cache[2] = createTextVNode(" If you aren't redirected automatically, ", -1)),
|
|
54
|
+
createVNode(AppLink_default, {
|
|
55
|
+
to: redirectTo.value,
|
|
56
|
+
class: "link link-primary"
|
|
57
|
+
}, {
|
|
58
|
+
default: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode("click here", -1)])]),
|
|
59
|
+
_: 1
|
|
60
|
+
}, 8, ["to"]),
|
|
61
|
+
_cache[3] || (_cache[3] = createTextVNode(". ", -1))
|
|
62
|
+
])
|
|
63
|
+
]))])]);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
var Logout_default = _sfc_main;
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { Logout_default as t };
|
|
71
|
+
//# sourceMappingURL=Logout-Cbw1SacV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logout-Cbw1SacV.js","names":["error: unknown"],"sources":["../src/slices/auth/features/Logout.vue"],"sourcesContent":["<template>\n <div class=\"min-h-screen flex items-center justify-center bg-base-100\">\n <div class=\"max-w-md mx-auto bg-base-200 p-8 rounded-xl shadow-md text-center\">\n <div v-if=\"status === 'loading'\" class=\"space-y-4\">\n <div class=\"flex justify-center\">\n <span class=\"loading loading-spinner loading-lg text-primary\"></span>\n </div>\n <h2 class=\"text-2xl font-bold mb-2\">Logging out...</h2>\n <p class=\"text-base-content/70\">Please wait while we securely log you out</p>\n </div>\n <div v-else class=\"space-y-4\">\n <h2 class=\"text-2xl font-bold mb-2\">\n {{ status === 'success' ? 'Logged out' : 'Logout failed' }}\n </h2>\n <p class=\"text-base-content/70\">\n {{ status === 'success'\n ? 'Redirecting you...'\n : 'Redirecting you to login...' }}\n </p>\n <p class=\"text-sm text-base-content/60\">\n If you aren't redirected automatically,\n <AppLink :to=\"redirectTo\" class=\"link link-primary\">click here</AppLink>.\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../components/AppLink.vue';\nimport { useMutation } from '../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../composables/useUserSessionStore';\nimport { getValidReturnUrl } from '../../../utils/useReturnUrl';\nimport { onMounted, computed, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\n\nconst sessionStore = useUserSessionStore();\nconst route = useRoute();\nconst router = useRouter();\nconst status = ref<'loading' | 'success' | 'error'>('loading');\n\nconst redirectTo = computed(() =>\n getValidReturnUrl(route, '/auth/login'),\n);\n\nconst { mutate: logoutMutate } = useMutation(\n (api) => api.userSessions.logout(),\n { credentials: 'include' }, // Include credentials to allow cookies\n);\n\nonMounted(async () => {\n try {\n await logoutMutate(undefined);\n sessionStore.clearSession();\n status.value = 'success';\n setTimeout(() => router.push(redirectTo.value), 1000);\n } catch (error: unknown) {\n status.value = 'error';\n toast.error(error instanceof Error ? error.message : 'Failed to logout', {\n autoClose: 2000,\n });\n setTimeout(() => router.push(redirectTo.value), 2000);\n }\n});\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAqCA,MAAM,eAAe,qBAAqB;EAC1C,MAAM,QAAQ,UAAU;EACxB,MAAM,SAAS,WAAW;EAC1B,MAAM,SAAS,IAAqC,UAAU;EAE9D,MAAM,aAAa,eACjB,kBAAkB,OAAO,cAAc,CACxC;EAED,MAAM,EAAE,QAAQ,iBAAiB,aAC9B,QAAQ,IAAI,aAAa,QAAQ,EAClC,EAAE,aAAa,WAAW,CAC3B;AAED,YAAU,YAAY;AACpB,OAAI;AACF,UAAM,aAAa,OAAU;AAC7B,iBAAa,cAAc;AAC3B,WAAO,QAAQ;AACf,qBAAiB,OAAO,KAAK,WAAW,MAAM,EAAE,IAAK;YAC9CA,OAAgB;AACvB,WAAO,QAAQ;AACf,UAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,oBAAoB,EACvE,WAAW,KACZ,CAAC;AACF,qBAAiB,OAAO,KAAK,WAAW,MAAM,EAAE,IAAK;;IAEvD;;uBA/DA,mBAwBM,OAxBN,YAwBM,CAvBJ,mBAsBM,OAtBN,YAsBM,CArBO,OAAA,UAAM,aAAA,WAAA,EAAjB,mBAMM,OANN,YAMM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA;IALJ,mBAEM,OAAA,EAFD,OAAM,uBAAqB,EAAA,CAC9B,mBAAqE,QAAA,EAA/D,OAAM,mDAAiD,CAAA,CAAA;IAE/D,mBAAuD,MAAA,EAAnD,OAAM,2BAAyB,EAAC,kBAAc,GAAA;IAClD,mBAA6E,KAAA,EAA1E,OAAM,wBAAsB,EAAC,6CAAyC,GAAA;yBAE3E,mBAaM,OAbN,YAaM;IAZJ,mBAEK,MAFL,YAEK,gBADA,OAAA,UAAM,YAAA,eAAA,gBAAA,EAAA,EAAA;IAEX,mBAII,KAJJ,YAII,gBAHC,OAAA,UAAM,YAAA,uBAAA,8BAAA;IAIX,mBAGI,KAHJ,YAGI;+CAHoC,6CAEtC,GAAA;KAAA,YAAwE,iBAAA;MAA9D,IAAI,WAAA;MAAY,OAAM;;6BAA8B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAV,cAAU,GAAA,CAAA,EAAA,CAAA;;;+CAAU,MAC1E,GAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as useMutation } from "./useMutation-
|
|
1
|
+
import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
|
|
2
2
|
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as mfaSetupConfirmSchemaWithMetadata } from "./mfaSchema-
|
|
3
|
+
import { o as withReturnUrl, r as getValidReturnUrl } from "./useReturnUrl-qFeazn-G.js";
|
|
4
|
+
import { t as mfaSetupConfirmSchemaWithMetadata } from "./mfaSchema-s-T8m-7-.js";
|
|
5
5
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, toDisplayString, unref, withCtx } from "vue";
|
|
6
6
|
import { useRoute, useRouter } from "vue-router";
|
|
7
7
|
import { toast } from "vue3-toastify";
|
|
@@ -110,4 +110,4 @@ var MfaSetup_default = _sfc_main;
|
|
|
110
110
|
|
|
111
111
|
//#endregion
|
|
112
112
|
export { MfaSetup_default as t };
|
|
113
|
-
//# sourceMappingURL=MfaSetup-
|
|
113
|
+
//# sourceMappingURL=MfaSetup-CwYXnvgW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MfaSetup-
|
|
1
|
+
{"version":3,"file":"MfaSetup-CwYXnvgW.js","names":[],"sources":["../src/slices/auth/features/mfa/MfaSetup.vue"],"sourcesContent":["<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Set Up Two-Factor Authentication</h1>\n\n <div v-if=\"!setupData\" class=\"space-y-4\">\n <p class=\"text-base-content/80\">\n Add an extra layer of security to your account by enabling two-factor authentication (2FA).\n </p>\n <button\n type=\"button\"\n class=\"btn btn-primary w-full\"\n :disabled=\"loading\"\n @click=\"startSetup\"\n >\n {{ loading ? 'Starting...' : 'Begin Setup' }}\n </button>\n </div>\n\n <ZiniaForm\n v-else\n @handle-submit=\"handleConfirm\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n >\n <div class=\"space-y-4 mb-4\">\n <p class=\"text-sm text-base-content/80\">\n Scan this QR code with your authenticator app (Google Authenticator, Authy, etc.):\n </p>\n <div v-if=\"setupData.qrCodeUrl\" class=\"flex justify-center\">\n <img\n :src=\"setupData.qrCodeUrl\"\n alt=\"MFA QR Code\"\n class=\"w-48 h-48 border rounded-lg\"\n />\n </div>\n <p class=\"text-sm text-base-content/80\">\n Or enter this secret manually: <code class=\"bg-base-300 px-2 py-1 rounded text-sm break-all\">{{ setupData.secret }}</code>\n </p>\n </div>\n <zinia.CodeField />\n <ZiniaSubmitButton submitText=\"Verify & Enable\" submittingText=\"Verifying...\" />\n\n <div class=\"text-center mt-2\">\n <AppLink class=\"link-accent link\" :to=\"loginLink\">Back to Login</AppLink>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../../components/AppLink.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { getValidReturnUrl, withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { computed, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { z } from 'zod';\nimport type { DragoncoreApi, MfaApi } from '@dragonmastery/dragoncore-shared';\nimport { mfaSetupConfirmSchemaWithMetadata } from './mfaSchema';\n\nconst router = useRouter();\nconst route = useRoute();\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst loginLink = computed(() => withReturnUrl('/auth/login', returnUrl.value));\nconst setupData = ref<{ secret: string; qrCodeUrl: string } | null>(null);\n\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(\n mfaSetupConfirmSchemaWithMetadata,\n {\n storeName: 'mfa-setup-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n },\n);\n\nconst { mutate: startSetupMutate, loading } = useMutation(\n (api, _input?: unknown) => {\n const mfa = (api as DragoncoreApi).mfa;\n if (!mfa) throw new Error('MFA is not configured for this application');\n return (mfa as MfaApi).startSetup();\n },\n { skipAuthCheck: false },\n);\n\nconst { mutate: confirmSetupMutate } = useMutation(\n (api, code: string) => {\n const mfa = (api as DragoncoreApi).mfa;\n if (!mfa) throw new Error('MFA is not configured for this application');\n return (mfa as MfaApi).confirmSetup(code);\n },\n { skipAuthCheck: false },\n);\n\nconst startSetup = async () => {\n const result = await startSetupMutate(undefined);\n if (result) setupData.value = result;\n};\n\nconst handleConfirm = async (data: z.infer<typeof mfaSetupConfirmSchemaWithMetadata>) => {\n const result = await confirmSetupMutate(data.code);\n if (!result?.ok) throw new Error('MFA setup verification failed');\n return result;\n};\n\nconst handleSuccess = async (data: { ok: boolean; recoveryCodes?: string[] }) => {\n form.reset();\n setupData.value = null;\n if (data.recoveryCodes?.length) {\n toast.success(\n 'MFA enabled! Save your recovery codes in a safe place. You will need them if you lose access to your authenticator.',\n );\n } else {\n toast.success('Two-factor authentication has been enabled.');\n }\n const targetPath = getValidReturnUrl(route, '/');\n await router.push(targetPath);\n};\n\nconst handleError = (error: Error) => {\n toast.error(error.message || 'MFA setup failed');\n};\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DA,MAAM,SAAS,WAAW;EAC1B,MAAM,QAAQ,UAAU;EACxB,MAAM,YAAY,eAAe,MAAM,MAAM,UAAgC;EAC7E,MAAM,YAAY,eAAe,cAAc,eAAe,UAAU,MAAM,CAAC;EAC/E,MAAM,YAAY,IAAkD,KAAK;EAEzE,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QACpD,mCACA;GACE,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CACF;EAED,MAAM,EAAE,QAAQ,kBAAkB,YAAY,aAC3C,KAAK,WAAqB;GACzB,MAAM,MAAO,IAAsB;AACnC,OAAI,CAAC,IAAK,OAAM,IAAI,MAAM,6CAA6C;AACvE,UAAQ,IAAe,YAAY;KAErC,EAAE,eAAe,OAAO,CACzB;EAED,MAAM,EAAE,QAAQ,uBAAuB,aACpC,KAAK,SAAiB;GACrB,MAAM,MAAO,IAAsB;AACnC,OAAI,CAAC,IAAK,OAAM,IAAI,MAAM,6CAA6C;AACvE,UAAQ,IAAe,aAAa,KAAK;KAE3C,EAAE,eAAe,OAAO,CACzB;EAED,MAAM,aAAa,YAAY;GAC7B,MAAM,SAAS,MAAM,iBAAiB,OAAU;AAChD,OAAI,OAAQ,WAAU,QAAQ;;EAGhC,MAAM,gBAAgB,OAAO,SAA4D;GACvF,MAAM,SAAS,MAAM,mBAAmB,KAAK,KAAK;AAClD,OAAI,CAAC,QAAQ,GAAI,OAAM,IAAI,MAAM,gCAAgC;AACjE,UAAO;;EAGT,MAAM,gBAAgB,OAAO,SAAoD;AAC/E,QAAK,OAAO;AACZ,aAAU,QAAQ;AAClB,OAAI,KAAK,eAAe,OACtB,OAAM,QACJ,sHACD;OAED,OAAM,QAAQ,8CAA8C;GAE9D,MAAM,aAAa,kBAAkB,OAAO,IAAI;AAChD,SAAM,OAAO,KAAK,WAAW;;EAG/B,MAAM,eAAe,UAAiB;AACpC,SAAM,MAAM,MAAM,WAAW,mBAAmB;;;uBAvHhD,mBA6CM,OA7CN,YA6CM,CAAA,OAAA,OAAA,OAAA,KA5CJ,mBAAqF,MAAA,EAAjF,OAAM,uCAAqC,EAAC,oCAAgC,GAAA,GAAA,CAEpE,UAAA,SAAA,WAAA,EAAZ,mBAYM,OAZN,YAYM,CAAA,OAAA,OAAA,OAAA,KAXJ,mBAEI,KAAA,EAFD,OAAM,wBAAsB,EAAC,iGAEhC,GAAA,GACA,mBAOS,UAAA;IANP,MAAK;IACL,OAAM;IACL,UAAU,MAAA,QAAO;IACjB,SAAO;sBAEL,MAAA,QAAO,GAAA,gBAAA,cAAA,EAAA,GAAA,WAAA,CAAA,CAAA,KAAA,WAAA,EAId,YA2BY,MAAA,UAAA,EAAA;;IAzBT,gBAAe;IACf,WAAS;IACT,SAAO;;2BAgBF;KAdN,mBAcM,OAdN,YAcM;gCAbJ,mBAEI,KAAA,EAFD,OAAM,gCAA8B,EAAC,wFAExC,GAAA;MACW,UAAA,MAAU,aAAA,WAAA,EAArB,mBAMM,OANN,YAMM,CALJ,mBAIE,OAAA;OAHC,KAAK,UAAA,MAAU;OAChB,KAAI;OACJ,OAAM;;MAGV,mBAEI,KAFJ,YAEI,CAAA,OAAA,OAAA,OAAA,KAAA,gBAFoC,oCACP,GAAA,GAAA,mBAA2F,QAA3F,YAA2F,gBAA1B,UAAA,MAAU,OAAM,EAAA,EAAA,CAAA,CAAA;;KAGpH,YAAmB,MAAA,MAAA,CAAA,UAAA;KACnB,YAAgF,MAAA,kBAAA,EAAA;MAA7D,YAAW;MAAkB,gBAAe;;KAE/D,mBAEM,OAFN,YAEM,CADJ,YAAyE,iBAAA;MAAhE,OAAM;MAAoB,IAAI,UAAA;;6BAAwB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAb,iBAAa,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import "./useQueryCache-CJKZquh6.js";
|
|
3
|
+
import "./useMutation-Dhx2gMgS.js";
|
|
4
|
+
import "./AppLink-CHMMrSFI.js";
|
|
5
|
+
import "./mfaSchema-s-T8m-7-.js";
|
|
6
|
+
import { t as MfaSetup_default } from "./MfaSetup-CwYXnvgW.js";
|
|
7
|
+
|
|
8
|
+
export { MfaSetup_default as default };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { l as useUserSessionStore } from "./useRpcAuth-
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
1
|
+
import { l as useUserSessionStore } from "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-Dhx2gMgS.js";
|
|
3
3
|
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
4
|
-
import {
|
|
5
|
-
import { n as mfaVerifySchemaWithMetadata } from "./mfaSchema-
|
|
4
|
+
import { o as withReturnUrl, r as getValidReturnUrl } from "./useReturnUrl-qFeazn-G.js";
|
|
5
|
+
import { n as mfaVerifySchemaWithMetadata } from "./mfaSchema-s-T8m-7-.js";
|
|
6
6
|
import { computed, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
7
7
|
import { useRoute, useRouter } from "vue-router";
|
|
8
8
|
import { toast } from "vue3-toastify";
|
|
@@ -83,4 +83,4 @@ var MfaVerify_default = _sfc_main;
|
|
|
83
83
|
|
|
84
84
|
//#endregion
|
|
85
85
|
export { MfaVerify_default as t };
|
|
86
|
-
//# sourceMappingURL=MfaVerify-
|
|
86
|
+
//# sourceMappingURL=MfaVerify-CIlen2i5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MfaVerify-
|
|
1
|
+
{"version":3,"file":"MfaVerify-CIlen2i5.js","names":[],"sources":["../src/slices/auth/features/mfa/MfaVerify.vue"],"sourcesContent":["<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Two-Factor Authentication</h1>\n\n <p class=\"text-base-content/80 mb-4\">\n Enter the 6-digit code from your authenticator app to complete sign in.\n </p>\n\n <ZiniaForm @handle-submit=\"handleSubmit\" @success=\"handleSuccess\" @error=\"handleError\">\n <zinia.CodeField />\n <ZiniaSubmitButton submitText=\"Verify\" submittingText=\"Verifying...\" />\n\n <div class=\"text-center mt-2\">\n <AppLink class=\"link-accent link\" :to=\"loginLink\">Back to Login</AppLink>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../../components/AppLink.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl, withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport type { DragoncoreApi } from '@dragonmastery/dragoncore-shared';\nimport type { MfaApi } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\nimport { mfaVerifySchemaWithMetadata } from './mfaSchema';\n\nconst router = useRouter();\nconst route = useRoute();\nconst sessionStore = useUserSessionStore();\n\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst loginLink = computed(() => withReturnUrl('/auth/login', returnUrl.value));\nconst mfaSessionId = route.query.mfaSessionId as string;\n\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(mfaVerifySchemaWithMetadata, {\n storeName: 'mfa-verify-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n});\n\nconst { mutate: verifyMutate } = useMutation(\n (api, input: { mfaSessionId: string; code: string }) => {\n const mfa = (api as DragoncoreApi).mfa;\n if (!mfa) throw new Error('MFA is not configured for this application');\n return (mfa as MfaApi).verify(input.mfaSessionId, input.code);\n },\n { credentials: 'include' },\n);\n\nconst handleSubmit = async (data: z.infer<typeof mfaVerifySchemaWithMetadata>) => {\n if (!mfaSessionId) throw new Error('Invalid MFA session. Please try logging in again.');\n const result = await verifyMutate({ mfaSessionId, code: data.code });\n if (!result?.access_token || !result?.user_details_token) throw new Error('Verification failed');\n return result;\n};\n\nconst handleSuccess = async (data: { access_token: string; user_details_token: string }) => {\n sessionStore.setSession(data.user_details_token);\n sessionStore.setAccessToken(data.access_token);\n form.reset();\n\n const targetPath = getValidReturnUrl(route, '/');\n await router.push(targetPath);\n toast.success('You are now logged in!');\n};\n\nconst handleError = (error: Error) => {\n toast.error(error.message || 'Verification failed');\n};\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;EAiCA,MAAM,SAAS,WAAW;EAC1B,MAAM,QAAQ,UAAU;EACxB,MAAM,eAAe,qBAAqB;EAE1C,MAAM,YAAY,eAAe,MAAM,MAAM,UAAgC;EAC7E,MAAM,YAAY,eAAe,cAAc,eAAe,UAAU,MAAM,CAAC;EAC/E,MAAM,eAAe,MAAM,MAAM;EAEjC,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QAAQ,6BAA6B;GACzF,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CAAC;EAEF,MAAM,EAAE,QAAQ,iBAAiB,aAC9B,KAAK,UAAkD;GACtD,MAAM,MAAO,IAAsB;AACnC,OAAI,CAAC,IAAK,OAAM,IAAI,MAAM,6CAA6C;AACvE,UAAQ,IAAe,OAAO,MAAM,cAAc,MAAM,KAAK;KAE/D,EAAE,aAAa,WAAW,CAC3B;EAED,MAAM,eAAe,OAAO,SAAsD;AAChF,OAAI,CAAC,aAAc,OAAM,IAAI,MAAM,oDAAoD;GACvF,MAAM,SAAS,MAAM,aAAa;IAAE;IAAc,MAAM,KAAK;IAAM,CAAC;AACpE,OAAI,CAAC,QAAQ,gBAAgB,CAAC,QAAQ,mBAAoB,OAAM,IAAI,MAAM,sBAAsB;AAChG,UAAO;;EAGT,MAAM,gBAAgB,OAAO,SAA+D;AAC1F,gBAAa,WAAW,KAAK,mBAAmB;AAChD,gBAAa,eAAe,KAAK,aAAa;AAC9C,QAAK,OAAO;GAEZ,MAAM,aAAa,kBAAkB,OAAO,IAAI;AAChD,SAAM,OAAO,KAAK,WAAW;AAC7B,SAAM,QAAQ,yBAAyB;;EAGzC,MAAM,eAAe,UAAiB;AACpC,SAAM,MAAM,MAAM,WAAW,sBAAsB;;;uBAzEnD,mBAeM,OAfN,YAeM;8BAdJ,mBAA8E,MAAA,EAA1E,OAAM,uCAAqC,EAAC,6BAAyB,GAAA;8BAEzE,mBAEI,KAAA,EAFD,OAAM,6BAA2B,EAAC,6EAErC,GAAA;IAEA,YAOY,MAAA,UAAA,EAAA;KAPA,gBAAe;KAAe,WAAS;KAAgB,SAAO;;4BACrD;MAAnB,YAAmB,MAAA,MAAA,CAAA,UAAA;MACnB,YAAuE,MAAA,kBAAA,EAAA;OAApD,YAAW;OAAS,gBAAe;;MAEtD,mBAEM,OAFN,YAEM,CADJ,YAAyE,iBAAA;OAAhE,OAAM;OAAoB,IAAI,UAAA;;8BAAwB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAb,iBAAa,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./useRpcAuth-Bse-lggK.js";
|
|
2
|
+
import "./useQueryCache-CJKZquh6.js";
|
|
3
|
+
import "./useMutation-Dhx2gMgS.js";
|
|
4
|
+
import "./AppLink-CHMMrSFI.js";
|
|
5
|
+
import "./mfaSchema-s-T8m-7-.js";
|
|
6
|
+
import { t as MfaVerify_default } from "./MfaVerify-CIlen2i5.js";
|
|
7
|
+
|
|
8
|
+
export { MfaVerify_default as default };
|