@dragonmastery/dragoncore-vue 0.0.21 → 0.0.23
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/{AppLink-CHMMrSFI.js → AppLink-FcNGKgvG.js} +1 -1
- package/dist/{AppLink-CHMMrSFI.js.map → AppLink-FcNGKgvG.js.map} +1 -1
- package/dist/Appearance-Ch4zfWZ3.js +3 -0
- package/dist/{Appearance-DxWTyx1M.js → Appearance-shr0Aql0.js} +1 -1
- package/dist/{Appearance-DxWTyx1M.js.map → Appearance-shr0Aql0.js.map} +1 -1
- package/dist/{ChangePasswordPage--3XwluwE.js → ChangePasswordPage-C633yQiU.js} +2 -2
- package/dist/{ChangePasswordPage--3XwluwE.js.map → ChangePasswordPage-C633yQiU.js.map} +1 -1
- package/dist/ChangePasswordPage-CYuCCosx.js +7 -0
- package/dist/ConfirmDialog-DjthOYU6.js +85 -0
- package/dist/ConfirmDialog-DjthOYU6.js.map +1 -0
- package/dist/ConsentRequired-BPjsZoPY.js +211 -0
- package/dist/ConsentRequired-BPjsZoPY.js.map +1 -0
- package/dist/CreateTeamForm-CeaC41VY.js +142 -0
- package/dist/CreateTeamForm-CeaC41VY.js.map +1 -0
- package/dist/CreateTeamForm-DfgCaUwX.js +12 -0
- package/dist/CreateTeamMemberForm-Bv9gNG4z.js +140 -0
- package/dist/CreateTeamMemberForm-Bv9gNG4z.js.map +1 -0
- package/dist/CreateTeamMemberForm-CnHfpob_.js +12 -0
- package/dist/CreateUserPage-C9uOeYDJ.js +7 -0
- package/dist/{CreateUserPage-DLwXeLAq.js → CreateUserPage-CqKcY7_X.js} +2 -2
- package/dist/{CreateUserPage-DLwXeLAq.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
- package/dist/CreditBalanceDashboard-0HiJE_OS.js +13 -0
- package/dist/CreditBalanceDashboard-k_orNn4h.js +28 -0
- package/dist/CreditBalanceDashboard-k_orNn4h.js.map +1 -0
- package/dist/CreditManagement-BVBZQDI4.js +356 -0
- package/dist/CreditManagement-BVBZQDI4.js.map +1 -0
- package/dist/CreditManagement-DXdIN-0d.js +13 -0
- package/dist/CreditTransactionHistory-DSu-6aDi.js +229 -0
- package/dist/CreditTransactionHistory-DSu-6aDi.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-BsjX8Pja.js +14 -0
- package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js +158 -0
- package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js.map +1 -0
- package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js → CustomerSupportTicketDetailPage-C_-YoAaP.js} +12 -9
- package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js.map → CustomerSupportTicketDetailPage-C_-YoAaP.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DdACn3ug.js +63 -0
- package/dist/{CustomerSupportTicketParent-HIxwSVdu.js → CustomerSupportTicketParent-BpBuYCrP.js} +4 -4
- package/dist/{CustomerSupportTicketParent-HIxwSVdu.js.map → CustomerSupportTicketParent-BpBuYCrP.js.map} +1 -1
- package/dist/CustomerSupportTicketParent-Djy7pNqO.js +8 -0
- package/dist/CustomerSupportTicketSuccess-DsFzpJFU.js +12 -0
- package/dist/CustomerSupportTicketSuccess-cumNSGdx.js +54 -0
- package/dist/CustomerSupportTicketSuccess-cumNSGdx.js.map +1 -0
- package/dist/EditTeamForm-BE3iX2x3.js +12 -0
- package/dist/EditTeamForm-BxRN338L.js +163 -0
- package/dist/EditTeamForm-BxRN338L.js.map +1 -0
- package/dist/EditTeamMemberForm-D7D1Zddh.js +9 -0
- package/dist/{EditTeamMemberForm-CaS2GLjV.js → EditTeamMemberForm-DfgJr5Cy.js} +7 -72
- package/dist/EditTeamMemberForm-DfgJr5Cy.js.map +1 -0
- package/dist/EditUserPage-C0K7EGjM.js +8 -0
- package/dist/{EditUserPage-DURc5rmi.js → EditUserPage-CI_jtU8P.js} +4 -4
- package/dist/{EditUserPage-DURc5rmi.js.map → EditUserPage-CI_jtU8P.js.map} +1 -1
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js +189 -0
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js.map +1 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js +27 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js.map +1 -0
- package/dist/{ForgotPassword-OjIPi9s9.js → ForgotPassword-Ckb9Z-wb.js} +4 -4
- package/dist/{ForgotPassword-OjIPi9s9.js.map → ForgotPassword-Ckb9Z-wb.js.map} +1 -1
- package/dist/ForgotPassword-tJVSg7PB.js +8 -0
- package/dist/{TimelineSystemEvent-BHzFr46C.js → InlineAttachments-DAn_QknY.js} +60 -661
- package/dist/InlineAttachments-DAn_QknY.js.map +1 -0
- package/dist/{LoginForm-9UFnA-fO.js → LoginForm-CMN2T1fA.js} +5 -5
- package/dist/{LoginForm-9UFnA-fO.js.map → LoginForm-CMN2T1fA.js.map} +1 -1
- package/dist/LoginForm-QFJ8NHww.js +8 -0
- package/dist/{Logout-YgTgOFUH.js → Logout-CFLYHlLr.js} +5 -5
- package/dist/{Logout-YgTgOFUH.js.map → Logout-CFLYHlLr.js.map} +1 -1
- package/dist/Logout-CjDBff3W.js +8 -0
- package/dist/MfaSetup-BZcoxJx-.js +9 -0
- package/dist/{MfaSetup-RtFMY_dj.js → MfaSetup-XqoAwBXx.js} +5 -5
- package/dist/{MfaSetup-RtFMY_dj.js.map → MfaSetup-XqoAwBXx.js.map} +1 -1
- package/dist/{MfaVerify-Cvhe8bEM.js → MfaVerify-C-A75TFZ.js} +6 -6
- package/dist/{MfaVerify-Cvhe8bEM.js.map → MfaVerify-C-A75TFZ.js.map} +1 -1
- package/dist/MfaVerify-Dy2aV5Gk.js +9 -0
- package/dist/{RecordVersionViewer-BWZ78vvE.js → RecordVersionViewer-D2j10HdK.js} +1 -1
- package/dist/{RecordVersionViewer-BWZ78vvE.js.map → RecordVersionViewer-D2j10HdK.js.map} +1 -1
- package/dist/{ResetPassword-BE4mXK9q.js → ResetPassword-Cd-Yxp8E.js} +4 -4
- package/dist/{ResetPassword-BE4mXK9q.js.map → ResetPassword-Cd-Yxp8E.js.map} +1 -1
- package/dist/ResetPassword-D6to3G6a.js +8 -0
- package/dist/{SavedFiltersPage-DQt6uc8m.js → SavedFiltersPage-DM5DvAFa.js} +62 -34
- package/dist/{SavedFiltersPage-DQt6uc8m.js.map → SavedFiltersPage-DM5DvAFa.js.map} +1 -1
- package/dist/{Signup-9TjMMnU4.js → Signup-2pqvJiVt.js} +57 -57
- package/dist/Signup-2pqvJiVt.js.map +1 -0
- package/dist/Signup-XdImA1os.js +9 -0
- package/dist/{SignupConsentFlow-QUZGKjdB.js → SignupConsentFlow-X3kXuviv.js} +106 -70
- package/dist/SignupConsentFlow-X3kXuviv.js.map +1 -0
- package/dist/{SignupRequirementsPage-DfbYmpQD.js → SignupRequirementsPage-Cf-ElkEq.js} +9 -8
- package/dist/{SignupRequirementsPage-DfbYmpQD.js.map → SignupRequirementsPage-Cf-ElkEq.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-BlUP2XXy.js +14 -0
- package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js +255 -0
- package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js.map +1 -0
- package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js → StaffSupportTicketDetailPage-MFtm06BE.js} +14 -11
- package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js.map → StaffSupportTicketDetailPage-MFtm06BE.js.map} +1 -1
- package/dist/StaffSupportTicketList-LfLx0pYP.js +63 -0
- package/dist/StaffSupportTicketParent-B7mEN1oD.js +8 -0
- package/dist/{StaffSupportTicketParent-CilR4RGM.js → StaffSupportTicketParent-BvPwgOqH.js} +4 -4
- package/dist/{StaffSupportTicketParent-CilR4RGM.js.map → StaffSupportTicketParent-BvPwgOqH.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-BMCOP3ko.js +12 -0
- package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js +54 -0
- package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js.map +1 -0
- package/dist/{SupportStaffPage-KKugAnFm.js → SupportStaffPage-B69-kuvg.js} +8 -7
- package/dist/{SupportStaffPage-KKugAnFm.js.map → SupportStaffPage-B69-kuvg.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js → SupportTicketDevLifecycleBadge-BoAjMb08.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js.map → SupportTicketDevLifecycleBadge-BoAjMb08.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-smItdkrD.js → SupportTicketMaintenancePage-Bptja-xb.js} +5 -4
- package/dist/{SupportTicketMaintenancePage-smItdkrD.js.map → SupportTicketMaintenancePage-Bptja-xb.js.map} +1 -1
- package/dist/TeamAttachmentsTab-Dk3LxX3n.js +63 -0
- package/dist/TeamHistoryTab-CRONdHcL.js +6 -0
- package/dist/{TeamHistoryTab-D5biUPmq.js → TeamHistoryTab-DM8KBEG1.js} +7 -19
- package/dist/TeamHistoryTab-DM8KBEG1.js.map +1 -0
- package/dist/TeamList-DYm_vQ2z.js +8 -0
- package/dist/TeamList-qdwlMuJv.js +141 -0
- package/dist/TeamList-qdwlMuJv.js.map +1 -0
- package/dist/TeamMemberList-4LRLT_7Z.js +7 -0
- package/dist/TeamMemberList-DyI1U1t_.js +166 -0
- package/dist/TeamMemberList-DyI1U1t_.js.map +1 -0
- package/dist/TeamMemberParent-B63pRfI6.js +10 -0
- package/dist/TeamMemberParent-D9Fxu7GD.js +83 -0
- package/dist/TeamMemberParent-D9Fxu7GD.js.map +1 -0
- package/dist/TeamMembersTab-BGcdyEE8.js +3 -0
- package/dist/{TeamMembersTab-4gmnP9sD.js → TeamMembersTab-BigqpBDH.js} +1 -1
- package/dist/{TeamMembersTab-4gmnP9sD.js.map → TeamMembersTab-BigqpBDH.js.map} +1 -1
- package/dist/{TeamNotesTab-BzGZZ1h8.js → TeamNotesTab-BgxleidZ.js} +6 -5
- package/dist/{TeamNotesTab-BzGZZ1h8.js.map → TeamNotesTab-BgxleidZ.js.map} +1 -1
- package/dist/TeamNotesTab-o7glfjoY.js +8 -0
- package/dist/TeamParent-BwXqA3rj.js +83 -0
- package/dist/TeamParent-BwXqA3rj.js.map +1 -0
- package/dist/TeamParent-CFOmyKPz.js +11 -0
- package/dist/{TimelineNoteInput-0p-M4Qie.js → TimelineNoteInput-DXaodm43.js} +3 -2
- package/dist/{TimelineNoteInput-0p-M4Qie.js.map → TimelineNoteInput-DXaodm43.js.map} +1 -1
- package/dist/TimelineSystemEvent-zCMUx5Zz.js +525 -0
- package/dist/TimelineSystemEvent-zCMUx5Zz.js.map +1 -0
- package/dist/UserListPage-Bmwg0an5.js +5 -0
- package/dist/{UserListPage-DUE5gJTo.js → UserListPage-DtA8tLff.js} +4 -3
- package/dist/{UserListPage-DUE5gJTo.js.map → UserListPage-DtA8tLff.js.map} +1 -1
- package/dist/UserProfilePage-DRbCAr9H.js +8 -0
- package/dist/{UserProfilePage-C3b93Keh.js → UserProfilePage-g4-VEDXo.js} +4 -4
- package/dist/{UserProfilePage-C3b93Keh.js.map → UserProfilePage-g4-VEDXo.js.map} +1 -1
- package/dist/{VerifyEmail-DlOmWGG-.js → VerifyEmail-CM5ehFB8.js} +7 -7
- package/dist/{VerifyEmail-DlOmWGG-.js.map → VerifyEmail-CM5ehFB8.js.map} +1 -1
- package/dist/VerifyEmail-DMHczC9f.js +10 -0
- package/dist/ViewTeam-CXyABxE6.js +8 -0
- package/dist/ViewTeam-DSbKV60o.js +220 -0
- package/dist/ViewTeam-DSbKV60o.js.map +1 -0
- package/dist/ViewTeamMember-BB0nvPOe.js +167 -0
- package/dist/ViewTeamMember-BB0nvPOe.js.map +1 -0
- package/dist/ViewTeamMember-jrOnBaDh.js +7 -0
- package/dist/ZiniaContainer-CjVhCnGB.js +18 -0
- package/dist/ZiniaContainer-CjVhCnGB.js.map +1 -0
- package/dist/{convertToLocalDateTime-CFhtN6PI.js → convertToLocalDateTime-BF25N4xd.js} +1 -2
- package/dist/convertToLocalDateTime-BF25N4xd.js.map +1 -0
- package/dist/customerSupportTicketRoutes-C7OxGAGl.js +142 -0
- package/dist/customerSupportTicketRoutes-C7OxGAGl.js.map +1 -0
- package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-B-_WQHOr.js} +1 -1
- package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-B-_WQHOr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js → extractRpcErrorMessage-diUBl6Ij.js} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js.map → extractRpcErrorMessage-diUBl6Ij.js.map} +1 -1
- package/dist/index.d.ts +793 -834
- package/dist/index.js +66 -38
- package/dist/{mfaSchema-BnRWf0ma.js → mfaSchema-Ukqzdyck.js} +1 -1
- package/dist/{mfaSchema-BnRWf0ma.js.map → mfaSchema-Ukqzdyck.js.map} +1 -1
- package/dist/saved_filter-CfzH0BzK.js +1210 -0
- package/dist/saved_filter-CfzH0BzK.js.map +1 -0
- package/dist/signupConsentStorage-DS9vCUuC.js +27 -0
- package/dist/signupConsentStorage-DS9vCUuC.js.map +1 -0
- package/dist/{src-CEBiyg_f.css → src-C6ZmNSSU.css} +1 -1
- package/dist/{src-CEBiyg_f.css.map → src-C6ZmNSSU.css.map} +1 -1
- package/dist/src-DVe_0RO9.js +4654 -0
- package/dist/src-DVe_0RO9.js.map +1 -0
- package/dist/staffSupportTicketRoutes-CWutoQWp.js +135 -0
- package/dist/staffSupportTicketRoutes-CWutoQWp.js.map +1 -0
- package/dist/teamMemberMetadata-CQnbVepq.js +49 -0
- package/dist/teamMemberMetadata-CQnbVepq.js.map +1 -0
- package/dist/teamMetadata-DlvwO5V0.js +53 -0
- package/dist/teamMetadata-DlvwO5V0.js.map +1 -0
- package/dist/teamRoutes-KFgnsdDP.js +192 -0
- package/dist/teamRoutes-KFgnsdDP.js.map +1 -0
- package/dist/team_memberRoutes-Cjpw_ql6.js +84 -0
- package/dist/team_memberRoutes-Cjpw_ql6.js.map +1 -0
- package/dist/{useBreadcrumbs-qB6ghsAf.js → useBreadcrumbs-DIqU5AAp.js} +1 -1
- package/dist/{useBreadcrumbs-qB6ghsAf.js.map → useBreadcrumbs-DIqU5AAp.js.map} +1 -1
- package/dist/{useEmailVerificationChannel-BNi926Ho.js → useEmailVerificationChannel-B51z65PN.js} +3 -3
- package/dist/{useEmailVerificationChannel-BNi926Ho.js.map → useEmailVerificationChannel-B51z65PN.js.map} +1 -1
- package/dist/{useMutation-BTsyHKyn.js → useMutation-BLNuJoYl.js} +6 -3
- package/dist/useMutation-BLNuJoYl.js.map +1 -0
- package/dist/{useQuery-BggIE52P.js → useQuery-BzUGEOj0.js} +4 -3
- package/dist/{useQuery-BggIE52P.js.map → useQuery-BzUGEOj0.js.map} +1 -1
- package/dist/{useQueryCache-Bjm-S8v5.js → useQueryCache-alzaRWEb.js} +2 -2
- package/dist/{useQueryCache-Bjm-S8v5.js.map → useQueryCache-alzaRWEb.js.map} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js → useReturnUrl-B5V3SJf5.js} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js.map → useReturnUrl-B5V3SJf5.js.map} +1 -1
- package/dist/{useRpcAuth-rmHf7bYx.js → useRpcAuth-CJtq1dqM.js} +25 -194
- package/dist/useRpcAuth-CJtq1dqM.js.map +1 -0
- package/dist/userAuthorized-C09FHWGL.js +185 -0
- package/dist/userAuthorized-C09FHWGL.js.map +1 -0
- package/package.json +3 -3
- package/dist/Appearance-D5pwxuf4.js +0 -3
- package/dist/ChangePasswordPage-CpDPmEml.js +0 -6
- package/dist/ConsentRequired-C4IRMA0c.js +0 -213
- package/dist/ConsentRequired-C4IRMA0c.js.map +0 -1
- package/dist/CreateTeamForm-B4cIuYAf.js +0 -35
- package/dist/CreateTeamMemberForm-Chrw1y00.js +0 -35
- package/dist/CreateUserPage-WruMs7WP.js +0 -6
- package/dist/CreditBalanceDashboard-CkcsrZ_e.js +0 -35
- package/dist/CreditManagement-Ddvu9dMw.js +0 -35
- package/dist/CustomerCreateSupportTicketForm-BKperKGS.js +0 -35
- package/dist/CustomerSupportTicketList-DcbrjDa9.js +0 -35
- package/dist/CustomerSupportTicketParent-BeNzUwuP.js +0 -7
- package/dist/CustomerSupportTicketSuccess-CC967u3y.js +0 -35
- package/dist/EditTeamForm-B5Tee5wL.js +0 -35
- package/dist/EditTeamMemberForm-CaS2GLjV.js.map +0 -1
- package/dist/EditTeamMemberForm-OtcS8QWt.js +0 -6
- package/dist/EditUserPage-T4DQlKhf.js +0 -7
- package/dist/ForgotPassword-CUifhmqP.js +0 -7
- package/dist/LoginForm-Bg7GoZEA.js +0 -7
- package/dist/Logout-Bs92csWH.js +0 -7
- package/dist/MfaSetup-BACX5XP-.js +0 -8
- package/dist/MfaVerify-ak4iSdQ2.js +0 -8
- package/dist/ResetPassword-pY1uhTdl.js +0 -7
- package/dist/Signup-9TjMMnU4.js.map +0 -1
- package/dist/Signup-Bq-G3D-s.js +0 -9
- package/dist/SignupConsentFlow-QUZGKjdB.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-D0ZuisDk.js +0 -35
- package/dist/StaffSupportTicketList-CiqC05XB.js +0 -35
- package/dist/StaffSupportTicketParent-DkV329NI.js +0 -7
- package/dist/StaffSupportTicketSuccess-CUYnimaI.js +0 -35
- package/dist/TeamAttachmentsTab-DUtCD1Yi.js +0 -35
- package/dist/TeamHistoryTab-BsUoH4VK.js +0 -4
- package/dist/TeamHistoryTab-D5biUPmq.js.map +0 -1
- package/dist/TeamList-BkPIqZ8V.js +0 -35
- package/dist/TeamMemberList-1mxUGCNa.js +0 -35
- package/dist/TeamMemberParent-DzeBIElY.js +0 -35
- package/dist/TeamMembersTab-CBB2Yl_I.js +0 -3
- package/dist/TeamNotesTab-ClHl2nXd.js +0 -7
- package/dist/TeamParent-DJa9UZTP.js +0 -35
- package/dist/TimelineSystemEvent-BHzFr46C.js.map +0 -1
- package/dist/UserListPage-BTLE4J0s.js +0 -4
- package/dist/UserProfilePage-CVTORtSx.js +0 -7
- package/dist/VerifyEmail-DCP4DWIw.js +0 -9
- package/dist/ViewTeam-DVfnLMhV.js +0 -35
- package/dist/ViewTeamMember-L4v3gCIn.js +0 -35
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +0 -1
- package/dist/src-QZJyMfGX.js +0 -8951
- package/dist/src-QZJyMfGX.js.map +0 -1
- package/dist/useMutation-BTsyHKyn.js.map +0 -1
- package/dist/useRpcAuth-rmHf7bYx.js.map +0 -1
- package/dist/useSignupPendingData-BWHwUHhL.js +0 -47
- package/dist/useSignupPendingData-BWHwUHhL.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
3
|
-
import { t as AppLink_default } from "./AppLink-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as useEmailVerificationChannel } from "./useEmailVerificationChannel-
|
|
1
|
+
import { d as useEnv, o as useUserSessionStore } from "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
3
|
+
import { t as AppLink_default } from "./AppLink-FcNGKgvG.js";
|
|
4
|
+
import { o as withReturnUrl, r as getValidReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
|
|
5
|
+
import { r as setSignupConsentFlowData } from "./signupConsentStorage-DS9vCUuC.js";
|
|
6
|
+
import { t as useEmailVerificationChannel } from "./useEmailVerificationChannel-B51z65PN.js";
|
|
7
7
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
8
8
|
import { jwtDecode } from "jwt-decode";
|
|
9
9
|
import { useRoute, useRouter } from "vue-router";
|
|
10
10
|
import { toast } from "vue3-toastify";
|
|
11
|
-
import {
|
|
11
|
+
import { signupInitiateSchema } from "@dragonmastery/dragoncore-shared";
|
|
12
12
|
import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
13
13
|
|
|
14
14
|
//#region src/slices/auth/utils/isEmailVerificationRequiredError.ts
|
|
@@ -25,7 +25,7 @@ function isEmailVerificationRequiredError(error) {
|
|
|
25
25
|
|
|
26
26
|
//#endregion
|
|
27
27
|
//#region src/slices/auth/features/signup/signupSchema.ts
|
|
28
|
-
const signupSchemaWithMetadata = withMetadata(
|
|
28
|
+
const signupSchemaWithMetadata = withMetadata(signupInitiateSchema, "signupInitiateSchema", {
|
|
29
29
|
email: {
|
|
30
30
|
inputType: "email",
|
|
31
31
|
placeholder: "you@example.com",
|
|
@@ -66,9 +66,12 @@ const _hoisted_5 = {
|
|
|
66
66
|
key: 0,
|
|
67
67
|
class: "mb-6 p-4 rounded-lg bg-base-100 border border-base-300"
|
|
68
68
|
};
|
|
69
|
-
const _hoisted_6 = { class: "
|
|
70
|
-
const _hoisted_7 =
|
|
71
|
-
const _hoisted_8 = {
|
|
69
|
+
const _hoisted_6 = { class: "font-medium mb-2" };
|
|
70
|
+
const _hoisted_7 = { class: "list-disc list-inside space-y-1 text-sm text-base-content/80" };
|
|
71
|
+
const _hoisted_8 = {
|
|
72
|
+
key: 0,
|
|
73
|
+
class: "mt-2 text-sm text-base-content/70"
|
|
74
|
+
};
|
|
72
75
|
const _hoisted_9 = { class: "text-center mt-2" };
|
|
73
76
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
74
77
|
__name: "Signup",
|
|
@@ -86,47 +89,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
86
89
|
const returnUrl = computed(() => route.query.returnUrl);
|
|
87
90
|
const loginLink = computed(() => withReturnUrl("/auth/login", returnUrl.value));
|
|
88
91
|
const awaitingVerification = ref(false);
|
|
89
|
-
const
|
|
90
|
-
const
|
|
92
|
+
const signupConsentBeforeText = inject("signupConsentBeforeText", "By signing up you agree to these terms:");
|
|
93
|
+
const signupConsentAfterText = inject("signupConsentAfterText", "After you click Sign Up, we'll show you each document to review and accept.");
|
|
94
|
+
const legalLinks = computed(() => {
|
|
95
|
+
return router.getRoutes().filter((r) => r.meta?.legal === true).map((r) => {
|
|
96
|
+
return {
|
|
97
|
+
path: router.resolve({ name: r.name }).path,
|
|
98
|
+
label: r.meta?.title ?? r.name ?? r.path
|
|
99
|
+
};
|
|
100
|
+
}).sort((a, b) => a.path.localeCompare(b.path));
|
|
101
|
+
});
|
|
102
|
+
const showConsentSection = computed(() => legalLinks.value.length > 0);
|
|
91
103
|
const declinedMessage = computed(() => {
|
|
92
104
|
const declined = route.query.declined;
|
|
93
105
|
if (declined === "1" || declined === "true") return "You declined the consent. Your account was not created.";
|
|
94
106
|
return null;
|
|
95
107
|
});
|
|
96
|
-
const { mutate:
|
|
97
|
-
|
|
108
|
+
const { mutate: signupInitiateMutate } = useMutation((api, input) => api.users.signupInitiate(input), {
|
|
109
|
+
skipAuthCheck: true,
|
|
110
|
+
credentials: "include"
|
|
111
|
+
});
|
|
98
112
|
const handleSubmit = async (data) => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return REDIRECTED_TO_CONSENTS;
|
|
104
|
-
}
|
|
105
|
-
if (!await signupMutate(data)) throw new Error("Signup failed");
|
|
106
|
-
try {
|
|
107
|
-
const loginResult = await loginMutate({
|
|
108
|
-
email: data.email,
|
|
109
|
-
password: data.passwords.password
|
|
110
|
-
});
|
|
111
|
-
if (!loginResult?.access_token || !loginResult?.user_details_token) throw new Error("Failed to login after signup");
|
|
113
|
+
const result = await signupInitiateMutate(data);
|
|
114
|
+
if (!result) throw new Error("Signup failed");
|
|
115
|
+
if (result.created) {
|
|
116
|
+
if (!result.session?.access_token || !result.session?.user_details_token) throw new Error("Failed to get session after signup");
|
|
112
117
|
return {
|
|
113
|
-
access_token:
|
|
114
|
-
user_details_token:
|
|
118
|
+
access_token: result.session.access_token,
|
|
119
|
+
user_details_token: result.session.user_details_token
|
|
115
120
|
};
|
|
116
|
-
} catch (loginError) {
|
|
117
|
-
if (isEmailVerificationRequiredError(loginError)) {
|
|
118
|
-
form.reset();
|
|
119
|
-
if (emailVerificationMode === "strict") {
|
|
120
|
-
awaitingVerification.value = true;
|
|
121
|
-
setEmailVerificationReturnUrl(getValidReturnUrl(route, "/"));
|
|
122
|
-
throw loginError;
|
|
123
|
-
}
|
|
124
|
-
const verifyPath = withReturnUrl("/auth/verify-email", returnUrl.value);
|
|
125
|
-
await router.push(verifyPath);
|
|
126
|
-
throw loginError;
|
|
127
|
-
}
|
|
128
|
-
throw loginError;
|
|
129
121
|
}
|
|
122
|
+
setSignupConsentFlowData({
|
|
123
|
+
token: result.signup_consent_token,
|
|
124
|
+
consents: result.consents
|
|
125
|
+
});
|
|
126
|
+
const basePath = withReturnUrl("/auth/signup-consents", returnUrl.value);
|
|
127
|
+
const sep = basePath.includes("?") ? "&" : "?";
|
|
128
|
+
await router.push(`${basePath}${sep}token=${encodeURIComponent(result.signup_consent_token)}`);
|
|
129
|
+
return REDIRECTED_TO_CONSENTS;
|
|
130
130
|
};
|
|
131
131
|
const handleSuccess = async (data) => {
|
|
132
132
|
if (data === REDIRECTED_TO_CONSENTS) return;
|
|
@@ -154,7 +154,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
154
154
|
useEmailVerificationChannel(awaitingVerification, (targetUrl) => router.push(targetUrl), () => getValidReturnUrl(route, "/"));
|
|
155
155
|
return (_ctx, _cache) => {
|
|
156
156
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
157
|
-
_cache[
|
|
157
|
+
_cache[3] || (_cache[3] = createElementVNode("h1", { class: "text-2xl font-bold mb-6 text-center" }, "Sign Up", -1)),
|
|
158
158
|
awaitingVerification.value ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [createElementVNode("p", { class: "text-base-content/80" }, " We sent a verification link to your email address. Click the link to verify your account, then you can continue. ", -1), createElementVNode("p", { class: "text-sm text-base-content/60" }, " If you opened the link in another tab, we'll redirect you automatically when verification completes. ", -1)])])) : declinedMessage.value ? (openBlock(), createElementBlock("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [createElementVNode("span", null, toDisplayString(declinedMessage.value), 1)])])) : createCommentVNode("v-if", true),
|
|
159
159
|
!awaitingVerification.value ? (openBlock(), createBlock(unref(ZiniaForm), {
|
|
160
160
|
key: 2,
|
|
@@ -166,28 +166,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
166
166
|
createVNode(unref(zinia).EmailField),
|
|
167
167
|
createVNode(unref(zinia).PasswordsPasswordField),
|
|
168
168
|
createVNode(unref(zinia).PasswordsPasswordConfirmField),
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
createElementVNode("ul",
|
|
172
|
-
return openBlock(), createElementBlock("li", { key:
|
|
173
|
-
|
|
174
|
-
href: config.url,
|
|
175
|
-
target: "_blank",
|
|
176
|
-
rel: "noopener noreferrer",
|
|
169
|
+
showConsentSection.value ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
170
|
+
createElementVNode("p", _hoisted_6, toDisplayString(unref(signupConsentBeforeText)), 1),
|
|
171
|
+
createElementVNode("ul", _hoisted_7, [(openBlock(true), createElementBlock(Fragment, null, renderList(legalLinks.value, (link) => {
|
|
172
|
+
return openBlock(), createElementBlock("li", { key: link.path }, [createVNode(AppLink_default, {
|
|
173
|
+
to: link.path,
|
|
177
174
|
class: "link link-accent"
|
|
178
|
-
},
|
|
175
|
+
}, {
|
|
176
|
+
default: withCtx(() => [createTextVNode(toDisplayString(link.label), 1)]),
|
|
177
|
+
_: 2
|
|
178
|
+
}, 1032, ["to"])]);
|
|
179
179
|
}), 128))]),
|
|
180
|
-
|
|
180
|
+
unref(signupConsentAfterText) ? (openBlock(), createElementBlock("p", _hoisted_8, toDisplayString(unref(signupConsentAfterText)), 1)) : createCommentVNode("v-if", true)
|
|
181
181
|
])) : createCommentVNode("v-if", true),
|
|
182
182
|
createVNode(unref(ZiniaSubmitButton), {
|
|
183
183
|
submitText: "Sign Up",
|
|
184
184
|
submittingText: "Signing up..."
|
|
185
185
|
}),
|
|
186
|
-
createElementVNode("div", _hoisted_9, [createElementVNode("p", null, [_cache[
|
|
186
|
+
createElementVNode("div", _hoisted_9, [createElementVNode("p", null, [_cache[2] || (_cache[2] = createTextVNode(" Already have an account? ", -1)), createVNode(AppLink_default, {
|
|
187
187
|
class: "link-accent link",
|
|
188
188
|
to: loginLink.value
|
|
189
189
|
}, {
|
|
190
|
-
default: withCtx(() => [..._cache[
|
|
190
|
+
default: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode("Login", -1)])]),
|
|
191
191
|
_: 1
|
|
192
192
|
}, 8, ["to"])])])
|
|
193
193
|
]),
|
|
@@ -201,4 +201,4 @@ var Signup_default = _sfc_main;
|
|
|
201
201
|
|
|
202
202
|
//#endregion
|
|
203
203
|
export { signupSchemaWithMetadata as n, Signup_default as t };
|
|
204
|
-
//# sourceMappingURL=Signup-
|
|
204
|
+
//# sourceMappingURL=Signup-2pqvJiVt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signup-2pqvJiVt.js","names":[],"sources":["../src/slices/auth/utils/isEmailVerificationRequiredError.ts","../src/slices/auth/features/signup/signupSchema.ts","../src/slices/auth/features/signup/Signup.vue"],"sourcesContent":["/**\n * Detects if an error indicates that email verification is required before login.\n * Used in signup flow when auto-login after signup fails due to unverified email.\n */\nexport function isEmailVerificationRequiredError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n const e = error as {\n error_type?: string;\n error_name?: string;\n name?: string;\n message?: string;\n };\n if (\n e.error_type === 'EmailVerificationRequiredError' ||\n e.error_name === 'EmailVerificationRequiredError' ||\n e.name === 'EmailVerificationRequiredError'\n ) {\n return true;\n }\n const msg = typeof e.message === 'string' ? e.message : '';\n return msg.includes('Please verify your email before logging in');\n}\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { signupInitiateSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the signup form type (signupInitiate: email + passwords only)\nexport type SignupForm = z.infer<typeof signupInitiateSchema>;\n\n// Enhance the schema with metadata\nexport const signupSchemaWithMetadata = withMetadata(signupInitiateSchema, 'signupInitiateSchema', {\n email: {\n inputType: 'email',\n placeholder: 'you@example.com',\n helpText: 'Enter the email address you used to register',\n autocomplete: 'email',\n className: 'login-field',\n autofocus: true,\n },\n 'passwords.password': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n 'passwords.password_confirm': {\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\">Sign Up</h1>\n\n <div\n v-if=\"awaitingVerification\"\n class=\"space-y-4 text-center\"\n >\n <p class=\"text-base-content/80\">\n We sent a verification link to your email address. Click the link to verify your account,\n then you can continue.\n </p>\n <p class=\"text-sm text-base-content/60\">\n If you opened the link in another tab, we'll redirect you automatically when verification\n completes.\n </p>\n </div>\n\n <div v-else-if=\"declinedMessage\" class=\"mb-4\">\n <div class=\"alert alert-warning\">\n <span>{{ declinedMessage }}</span>\n </div>\n </div>\n\n <ZiniaForm\n v-if=\"!awaitingVerification\"\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n >\n <zinia.EmailField />\n <zinia.PasswordsPasswordField />\n <zinia.PasswordsPasswordConfirmField />\n\n <div\n v-if=\"showConsentSection\"\n class=\"mb-6 p-4 rounded-lg bg-base-100 border border-base-300\"\n >\n <p class=\"font-medium mb-2\">{{ signupConsentBeforeText }}</p>\n <ul class=\"list-disc list-inside space-y-1 text-sm text-base-content/80\">\n <li\n v-for=\"link in legalLinks\"\n :key=\"link.path\"\n >\n <AppLink\n :to=\"link.path\"\n class=\"link link-accent\"\n >\n {{ link.label }}\n </AppLink>\n </li>\n </ul>\n <p\n v-if=\"signupConsentAfterText\"\n class=\"mt-2 text-sm text-base-content/70\"\n >\n {{ signupConsentAfterText }}\n </p>\n </div>\n\n <ZiniaSubmitButton submitText=\"Sign Up\" submittingText=\"Signing up...\" />\n\n <div class=\"text-center mt-2\">\n <p>\n Already have an account?\n <AppLink class=\"link-accent link\" :to=\"loginLink\">Login</AppLink>\n </p>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type {\n SignupInitiateInputDto,\n SignupInitiateResponseDto,\n} from '@dragonmastery/dragoncore-shared';\nimport type { UserDetailsTokenPayload } from '../../../../lib/models/userSession';\nimport AppLink from '../../../../components/AppLink.vue';\nimport { setSignupConsentFlowData } from '../../signupConsentStorage';\nimport { useEnv } from '../../../../composables/useEnv';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl, withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { useEmailVerificationChannel } from '../../useEmailVerificationChannel';\nimport { isEmailVerificationRequiredError } from '../../utils/isEmailVerificationRequiredError';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { jwtDecode } from 'jwt-decode';\nimport { computed, inject, ref } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { signupSchemaWithMetadata } from './signupSchema';\n\nconst REDIRECTED_TO_CONSENTS = Symbol('redirected-to-consents');\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(signupSchemaWithMetadata, {\n storeName: 'signup-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n});\n\nconst sessionStore = useUserSessionStore();\nconst route = useRoute();\nconst router = useRouter();\nconst { emailVerificationMode } = useEnv();\n\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst loginLink = computed(() => withReturnUrl('/auth/login', returnUrl.value));\nconst awaitingVerification = ref(false);\n\nconst signupConsentBeforeText = inject<string>(\n 'signupConsentBeforeText',\n 'By signing up you agree to these terms:',\n);\nconst signupConsentAfterText = inject<string>(\n 'signupConsentAfterText',\n \"After you click Sign Up, we'll show you each document to review and accept.\",\n);\n\n// Legal routes - auto-collected from router (meta.legal: true) for the consent preview\nconst legalLinks = computed(() => {\n const routes = router.getRoutes();\n return routes\n .filter((r) => r.meta?.legal === true)\n .map((r) => {\n const resolved = router.resolve({ name: r.name as string });\n return {\n path: resolved.path,\n label: (r.meta?.title as string) ?? (r.name as string) ?? r.path,\n };\n })\n .sort((a, b) => a.path.localeCompare(b.path));\n});\n\nconst showConsentSection = computed(() => legalLinks.value.length > 0);\n\n// Show declined message when returning from consent flow\nconst declinedMessage = computed(() => {\n const declined = route.query.declined;\n if (declined === '1' || declined === 'true') {\n return 'You declined the consent. Your account was not created.';\n }\n return null;\n});\n\nconst { mutate: signupInitiateMutate } = useMutation<\n import('@dragonmastery/dragoncore-shared').DragoncoreApi,\n SignupInitiateInputDto,\n SignupInitiateResponseDto\n>(\n (api, input: SignupInitiateInputDto) => api.users.signupInitiate(input),\n { skipAuthCheck: true, credentials: 'include' },\n);\n\n// Handle form submission\nconst handleSubmit = async (data: SignupInitiateInputDto) => {\n const result = await signupInitiateMutate(data);\n if (!result) throw new Error('Signup failed');\n\n if (result.created) {\n if (!result.session?.access_token || !result.session?.user_details_token) {\n throw new Error('Failed to get session after signup');\n }\n return {\n access_token: result.session.access_token,\n user_details_token: result.session.user_details_token,\n };\n }\n\n setSignupConsentFlowData({\n token: result.signup_consent_token,\n consents: result.consents,\n });\n const basePath = withReturnUrl('/auth/signup-consents', returnUrl.value);\n const sep = basePath.includes('?') ? '&' : '?';\n await router.push(`${basePath}${sep}token=${encodeURIComponent(result.signup_consent_token)}`);\n return REDIRECTED_TO_CONSENTS;\n};\n\n// Handle success (not called when we redirect to consent flow)\nconst handleSuccess = async (data: { access_token: string; user_details_token: string } | symbol) => {\n if (data === REDIRECTED_TO_CONSENTS) return;\n\n const payload = data as { access_token: string; user_details_token: string };\n sessionStore.setSession(payload.user_details_token);\n sessionStore.setAccessToken(payload.access_token);\n\n form.reset();\n\n const defaultRedirect = getValidReturnUrl(route, '/');\n const redirectTo =\n emailVerificationMode !== 'disabled'\n ? (() => {\n try {\n const tokenPayload = jwtDecode<UserDetailsTokenPayload>(payload.user_details_token);\n const emailVerified = tokenPayload.details?.user?.email_verified ?? true;\n return emailVerified ? defaultRedirect : withReturnUrl('/auth/verify-email', returnUrl.value);\n } catch {\n return defaultRedirect;\n }\n })()\n : defaultRedirect;\n\n await router.push(redirectTo);\n const wentToVerify = typeof redirectTo === 'string' && redirectTo.startsWith('/auth/verify-email');\n toast.success(\n !wentToVerify\n ? 'Registration successful! You are now logged in.'\n : 'Registration successful! Please check your email to verify your account.',\n );\n};\n\n// Handle error\nconst handleError = (error: unknown) => {\n if (isEmailVerificationRequiredError(error)) {\n return;\n }\n const message = error instanceof Error ? error.message : 'Registration failed';\n toast.error(message);\n};\n\nuseEmailVerificationChannel(\n awaitingVerification,\n (targetUrl) => router.push(targetUrl),\n () => getValidReturnUrl(route, '/'),\n);\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import "./AppLink-FcNGKgvG.js";
|
|
6
|
+
import "./useEmailVerificationChannel-B51z65PN.js";
|
|
7
|
+
import { t as Signup_default } from "./Signup-2pqvJiVt.js";
|
|
8
|
+
|
|
9
|
+
export { Signup_default as default };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { d as useEnv, o as useUserSessionStore } from "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import { t as AppLink_default } from "./AppLink-FcNGKgvG.js";
|
|
6
|
+
import { i as setEmailVerificationReturnUrl, o as withReturnUrl, r as getValidReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
|
|
7
|
+
import { n as getSignupConsentFlowData, t as clearSignupConsentFlowData } from "./signupConsentStorage-DS9vCUuC.js";
|
|
8
|
+
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, openBlock, ref, toDisplayString, watch, withCtx } from "vue";
|
|
7
9
|
import { useRoute, useRouter } from "vue-router";
|
|
8
10
|
import { toast } from "vue3-toastify";
|
|
9
11
|
import DOMPurify from "dompurify";
|
|
@@ -17,45 +19,84 @@ const _hoisted_2 = {
|
|
|
17
19
|
};
|
|
18
20
|
const _hoisted_3 = {
|
|
19
21
|
key: 1,
|
|
22
|
+
class: "text-center"
|
|
23
|
+
};
|
|
24
|
+
const _hoisted_4 = {
|
|
25
|
+
key: 2,
|
|
20
26
|
class: "space-y-6"
|
|
21
27
|
};
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
28
|
+
const _hoisted_5 = { class: "text-center space-y-1" };
|
|
29
|
+
const _hoisted_6 = { class: "text-2xl font-bold" };
|
|
30
|
+
const _hoisted_7 = { class: "text-base-content/80" };
|
|
31
|
+
const _hoisted_8 = {
|
|
26
32
|
key: 0,
|
|
27
33
|
class: "alert alert-error flex flex-col gap-3"
|
|
28
34
|
};
|
|
29
|
-
const
|
|
30
|
-
const _hoisted_9 = ["disabled"];
|
|
35
|
+
const _hoisted_9 = { class: "flex flex-wrap gap-2 mt-1" };
|
|
31
36
|
const _hoisted_10 = ["disabled"];
|
|
32
|
-
const _hoisted_11 =
|
|
37
|
+
const _hoisted_11 = ["disabled"];
|
|
38
|
+
const _hoisted_12 = {
|
|
33
39
|
key: 1,
|
|
34
40
|
class: "text-sm text-base-content/70 mb-2"
|
|
35
41
|
};
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
42
|
+
const _hoisted_13 = ["data-consent-type"];
|
|
43
|
+
const _hoisted_14 = ["innerHTML"];
|
|
44
|
+
const _hoisted_15 = ["href"];
|
|
45
|
+
const _hoisted_16 = {
|
|
40
46
|
key: 4,
|
|
41
47
|
class: "flex flex-col gap-5"
|
|
42
48
|
};
|
|
43
|
-
const _hoisted_16 = ["disabled"];
|
|
44
49
|
const _hoisted_17 = ["disabled"];
|
|
50
|
+
const _hoisted_18 = ["disabled"];
|
|
45
51
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
46
52
|
__name: "SignupConsentFlow",
|
|
47
53
|
setup(__props) {
|
|
48
|
-
const signupRequirements = inject(SIGNUP_REQUIREMENTS_KEY, () => [], true);
|
|
49
|
-
const { get: getSignupPendingData, clear: clearSignupPendingData } = useSignupPendingData();
|
|
50
54
|
const sessionStore = useUserSessionStore();
|
|
51
55
|
const router = useRouter();
|
|
52
56
|
const route = useRoute();
|
|
53
57
|
const { emailVerificationMode } = useEnv();
|
|
54
58
|
const returnUrl = computed(() => route.query.returnUrl);
|
|
55
|
-
const
|
|
59
|
+
const signupLink = computed(() => withReturnUrl("/auth/signup", returnUrl.value));
|
|
60
|
+
const token = computed(() => route.query.token ?? "");
|
|
61
|
+
const storedData = ref(null);
|
|
62
|
+
const loading = ref(true);
|
|
63
|
+
const consents = computed(() => {
|
|
64
|
+
const t = token.value;
|
|
65
|
+
const data = storedData.value;
|
|
66
|
+
if (!t || !data || data.token !== t) return [];
|
|
67
|
+
return data.consents;
|
|
68
|
+
});
|
|
69
|
+
const { mutate: fetchConsentsForToken } = useMutation((api, _t) => api.users.getSignupConsentsForToken(), {
|
|
70
|
+
skipAuthCheck: true,
|
|
71
|
+
credentials: "include",
|
|
72
|
+
customAuthToken: (t) => t
|
|
73
|
+
});
|
|
74
|
+
async function loadConsents() {
|
|
75
|
+
loading.value = true;
|
|
76
|
+
const t = token.value;
|
|
77
|
+
if (!t) {
|
|
78
|
+
loading.value = false;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const data = getSignupConsentFlowData();
|
|
82
|
+
if (data && data.token === t) {
|
|
83
|
+
storedData.value = data;
|
|
84
|
+
loading.value = false;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const reqs = await fetchConsentsForToken(t);
|
|
89
|
+
if (reqs && Array.isArray(reqs) && reqs.length > 0) storedData.value = {
|
|
90
|
+
token: t,
|
|
91
|
+
consents: reqs
|
|
92
|
+
};
|
|
93
|
+
} catch {}
|
|
94
|
+
loading.value = false;
|
|
95
|
+
}
|
|
96
|
+
loadConsents();
|
|
56
97
|
const currentStep = ref(1);
|
|
57
|
-
const totalSteps = computed(() =>
|
|
58
|
-
const currentConfig = computed(() =>
|
|
98
|
+
const totalSteps = computed(() => consents.value.length);
|
|
99
|
+
const currentConfig = computed(() => consents.value[currentStep.value - 1] ?? null);
|
|
59
100
|
const hasScrolledToBottom = ref(false);
|
|
60
101
|
const scrollEl = ref(null);
|
|
61
102
|
function setScrollRef(el) {
|
|
@@ -115,14 +156,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
115
156
|
if (error && typeof error === "object" && "message" in error && typeof error.message === "string") return error.message;
|
|
116
157
|
return "Registration failed. Please try again.";
|
|
117
158
|
}
|
|
118
|
-
const { mutate:
|
|
119
|
-
|
|
159
|
+
const { mutate: signupCompleteMutate } = useMutation((api, input) => api.users.signupComplete({ acceptances: input.acceptances }), {
|
|
160
|
+
skipAuthCheck: true,
|
|
161
|
+
credentials: "include",
|
|
162
|
+
customAuthToken: (input) => input.token
|
|
163
|
+
});
|
|
120
164
|
async function handleAccept() {
|
|
121
|
-
if (!currentConfig.value || !
|
|
165
|
+
if (!currentConfig.value || !token.value || !consents.value.length) return;
|
|
122
166
|
submitError.value = null;
|
|
123
167
|
const acceptancesSoFar = {};
|
|
124
168
|
for (let i = 0; i < currentStep.value; i++) {
|
|
125
|
-
const c =
|
|
169
|
+
const c = consents.value[i];
|
|
126
170
|
if (c) acceptancesSoFar[c.type] = true;
|
|
127
171
|
}
|
|
128
172
|
if (currentStep.value >= totalSteps.value) {
|
|
@@ -141,37 +185,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
141
185
|
nextTick(checkScrolledToBottom);
|
|
142
186
|
}
|
|
143
187
|
async function completeSignup(acceptances) {
|
|
144
|
-
const
|
|
145
|
-
if (!
|
|
146
|
-
|
|
147
|
-
|
|
188
|
+
const t = token.value;
|
|
189
|
+
if (!t) return;
|
|
190
|
+
const session = await signupCompleteMutate({
|
|
191
|
+
token: t,
|
|
148
192
|
acceptances
|
|
149
|
-
})
|
|
150
|
-
|
|
193
|
+
});
|
|
194
|
+
if (!session?.access_token || !session?.user_details_token) throw new Error("Signup failed");
|
|
195
|
+
clearSignupConsentFlowData();
|
|
196
|
+
sessionStore.setSession(session.user_details_token);
|
|
197
|
+
sessionStore.setAccessToken(session.access_token);
|
|
151
198
|
if (emailVerificationMode !== "disabled") {
|
|
152
|
-
try {
|
|
153
|
-
const loginResult$1 = await loginMutate({
|
|
154
|
-
email: data.email,
|
|
155
|
-
password: data.passwords.password
|
|
156
|
-
});
|
|
157
|
-
if (loginResult$1?.access_token && loginResult$1?.user_details_token) {
|
|
158
|
-
sessionStore.setSession(loginResult$1.user_details_token);
|
|
159
|
-
sessionStore.setAccessToken(loginResult$1.access_token);
|
|
160
|
-
}
|
|
161
|
-
} catch {}
|
|
162
199
|
if (emailVerificationMode === "strict") setEmailVerificationReturnUrl(getValidReturnUrl(route, "/"));
|
|
163
200
|
window.scrollTo(0, 0);
|
|
164
201
|
const verifyPath = withReturnUrl("/auth/verify-email", returnUrl.value);
|
|
165
202
|
await router.push(verifyPath);
|
|
166
203
|
return;
|
|
167
204
|
}
|
|
168
|
-
const loginResult = await loginMutate({
|
|
169
|
-
email: data.email,
|
|
170
|
-
password: data.passwords.password
|
|
171
|
-
});
|
|
172
|
-
if (!loginResult?.access_token || !loginResult?.user_details_token) throw new Error("Failed to login after signup");
|
|
173
|
-
sessionStore.setSession(loginResult.user_details_token);
|
|
174
|
-
sessionStore.setAccessToken(loginResult.access_token);
|
|
175
205
|
window.scrollTo(0, 0);
|
|
176
206
|
const defaultRedirect = getValidReturnUrl(route, "/");
|
|
177
207
|
await router.push(defaultRedirect);
|
|
@@ -180,7 +210,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
180
210
|
async function handleDecline() {
|
|
181
211
|
declining.value = true;
|
|
182
212
|
try {
|
|
183
|
-
|
|
213
|
+
clearSignupConsentFlowData();
|
|
184
214
|
const signupPath = withReturnUrl("/auth/signup", returnUrl.value);
|
|
185
215
|
await router.push({
|
|
186
216
|
path: signupPath,
|
|
@@ -196,9 +226,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
196
226
|
async function goBackToSignup() {
|
|
197
227
|
goingBack.value = true;
|
|
198
228
|
try {
|
|
199
|
-
|
|
229
|
+
clearSignupConsentFlowData();
|
|
200
230
|
const signupPath = withReturnUrl("/auth/signup", returnUrl.value);
|
|
201
|
-
const { declined: _d, ...rest } = route.query;
|
|
231
|
+
const { declined: _d, token: _t, ...rest } = route.query;
|
|
202
232
|
await router.push({
|
|
203
233
|
path: signupPath,
|
|
204
234
|
query: rest
|
|
@@ -208,28 +238,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
208
238
|
}
|
|
209
239
|
}
|
|
210
240
|
return (_ctx, _cache) => {
|
|
211
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
241
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [loading.value ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [createElementVNode("p", { class: "text-base-content/80" }, "Loading...", -1)])])) : !token.value || !consents.value.length ? (openBlock(), createElementBlock("div", _hoisted_3, [_cache[2] || (_cache[2] = createElementVNode("p", { class: "text-base-content/80" }, "Invalid or expired signup link. Please start over.", -1)), createVNode(AppLink_default, {
|
|
242
|
+
to: signupLink.value,
|
|
243
|
+
class: "btn btn-primary btn-sm mt-4"
|
|
244
|
+
}, {
|
|
245
|
+
default: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode("Back to sign up", -1)])]),
|
|
246
|
+
_: 1
|
|
247
|
+
}, 8, ["to"])])) : currentConfig.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
248
|
+
createElementVNode("div", _hoisted_5, [
|
|
249
|
+
createElementVNode("h1", _hoisted_6, toDisplayString(currentConfig.value.label), 1),
|
|
250
|
+
createElementVNode("p", _hoisted_7, "Step " + toDisplayString(currentStep.value) + " of " + toDisplayString(totalSteps.value), 1),
|
|
251
|
+
_cache[3] || (_cache[3] = createElementVNode("p", { class: "text-base-content/70 text-sm" }, "Review and accept", -1))
|
|
216
252
|
]),
|
|
217
|
-
submitError.value ? (openBlock(), createElementBlock("div",
|
|
253
|
+
submitError.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
|
|
218
254
|
createElementVNode("span", null, toDisplayString(submitError.value), 1),
|
|
219
|
-
_cache[
|
|
220
|
-
createElementVNode("div",
|
|
255
|
+
_cache[4] || (_cache[4] = createElementVNode("p", { class: "text-sm opacity-90" }, " You can try again or go back to sign up and try again later. ", -1)),
|
|
256
|
+
createElementVNode("div", _hoisted_9, [createElementVNode("button", {
|
|
221
257
|
type: "button",
|
|
222
258
|
class: "btn btn-primary btn-sm",
|
|
223
259
|
disabled: goingBack.value || submitting.value,
|
|
224
260
|
onClick: goBackToSignup
|
|
225
|
-
}, toDisplayString(goingBack.value ? "Returning..." : "Back to sign up"), 9,
|
|
261
|
+
}, toDisplayString(goingBack.value ? "Returning..." : "Back to sign up"), 9, _hoisted_10), createElementVNode("button", {
|
|
226
262
|
type: "button",
|
|
227
263
|
class: "btn btn-ghost btn-sm",
|
|
228
264
|
disabled: submitting.value || goingBack.value,
|
|
229
265
|
onClick: handleAccept
|
|
230
|
-
}, toDisplayString(submitting.value ? "Submitting..." : "Try again"), 9,
|
|
266
|
+
}, toDisplayString(submitting.value ? "Submitting..." : "Try again"), 9, _hoisted_11)])
|
|
231
267
|
])) : createCommentVNode("v-if", true),
|
|
232
|
-
currentConfig.value.content ? (openBlock(), createElementBlock("p",
|
|
268
|
+
currentConfig.value.content ? (openBlock(), createElementBlock("p", _hoisted_12, " Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, your account will not be created and you will return to sign up. ")) : createCommentVNode("v-if", true),
|
|
233
269
|
createCommentVNode(" Scrollable terms box when content is provided "),
|
|
234
270
|
currentConfig.value.content ? (openBlock(), createElementBlock("div", {
|
|
235
271
|
key: currentConfig.value.type,
|
|
@@ -240,24 +276,24 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
240
276
|
}, [createElementVNode("div", {
|
|
241
277
|
class: "prose prose-sm prose-max-w-none max-w-full min-w-0 text-sm prose-headings:font-semibold prose-p:my-2",
|
|
242
278
|
innerHTML: renderMarkdown(currentConfig.value.content)
|
|
243
|
-
}, null, 8,
|
|
279
|
+
}, null, 8, _hoisted_14)], 40, _hoisted_13)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createCommentVNode(" Link-only when no content "), createElementVNode("div", null, [currentConfig.value.url ? (openBlock(), createElementBlock("a", {
|
|
244
280
|
key: 0,
|
|
245
281
|
href: currentConfig.value.url,
|
|
246
282
|
target: "_blank",
|
|
247
283
|
rel: "noopener noreferrer",
|
|
248
284
|
class: "link link-accent"
|
|
249
|
-
}, " View " + toDisplayString(currentConfig.value.label), 9,
|
|
250
|
-
!submitError.value ? (openBlock(), createElementBlock("div",
|
|
285
|
+
}, " View " + toDisplayString(currentConfig.value.label), 9, _hoisted_15)) : createCommentVNode("v-if", true)])], 2112)),
|
|
286
|
+
!submitError.value ? (openBlock(), createElementBlock("div", _hoisted_16, [createElementVNode("button", {
|
|
251
287
|
type: "button",
|
|
252
288
|
class: "btn btn-primary",
|
|
253
289
|
disabled: (currentConfig.value.content ? !hasScrolledToBottom.value : false) || submitting.value,
|
|
254
290
|
onClick: handleAccept
|
|
255
|
-
}, toDisplayString(submitting.value ? "Submitting..." : "Accept and continue"), 9,
|
|
291
|
+
}, toDisplayString(submitting.value ? "Submitting..." : "Accept and continue"), 9, _hoisted_17), createElementVNode("button", {
|
|
256
292
|
type: "button",
|
|
257
293
|
class: "btn btn-outline btn-sm btn-error",
|
|
258
294
|
disabled: declining.value || submitting.value,
|
|
259
295
|
onClick: handleDecline
|
|
260
|
-
}, toDisplayString(declining.value ? "Returning..." : "Decline"), 9,
|
|
296
|
+
}, toDisplayString(declining.value ? "Returning..." : "Decline"), 9, _hoisted_18)])) : createCommentVNode("v-if", true)
|
|
261
297
|
])) : createCommentVNode("v-if", true)]);
|
|
262
298
|
};
|
|
263
299
|
}
|
|
@@ -266,4 +302,4 @@ var SignupConsentFlow_default = _sfc_main;
|
|
|
266
302
|
|
|
267
303
|
//#endregion
|
|
268
304
|
export { SignupConsentFlow_default as default };
|
|
269
|
-
//# sourceMappingURL=SignupConsentFlow-
|
|
305
|
+
//# sourceMappingURL=SignupConsentFlow-X3kXuviv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignupConsentFlow-X3kXuviv.js","names":["acceptancesSoFar: Record<string, boolean>"],"sources":["../src/slices/auth/features/signup_consents/SignupConsentFlow.vue"],"sourcesContent":["<template>\n <div class=\"w-full max-w-md mx-auto mb-8 sm:mb-10 bg-base-200 px-3 py-4 sm:px-6 sm:py-6 rounded-xl shadow-md container min-w-0\">\n <div v-if=\"loading\" class=\"text-center\">\n <p class=\"text-base-content/80\">Loading...</p>\n </div>\n\n <div v-else-if=\"!token || !consents.length\" class=\"text-center\">\n <p class=\"text-base-content/80\">Invalid or expired signup link. Please start over.</p>\n <AppLink :to=\"signupLink\" class=\"btn btn-primary btn-sm mt-4\">Back to sign up</AppLink>\n </div>\n\n <div v-else-if=\"currentConfig\" class=\"space-y-6\">\n <div class=\"text-center space-y-1\">\n <h1 class=\"text-2xl font-bold\">{{ currentConfig.label }}</h1>\n <p class=\"text-base-content/80\">Step {{ currentStep }} of {{ totalSteps }}</p>\n <p class=\"text-base-content/70 text-sm\">Review and accept</p>\n </div>\n\n <div v-if=\"submitError\" class=\"alert alert-error flex flex-col gap-3\">\n <span>{{ submitError }}</span>\n <p class=\"text-sm opacity-90\">\n You can try again or go back to sign up and try again later.\n </p>\n <div class=\"flex flex-wrap gap-2 mt-1\">\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm\"\n :disabled=\"goingBack || submitting\"\n @click=\"goBackToSignup\"\n >\n {{ goingBack ? 'Returning...' : 'Back to sign up' }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n :disabled=\"submitting || goingBack\"\n @click=\"handleAccept\"\n >\n {{ submitting ? 'Submitting...' : 'Try again' }}\n </button>\n </div>\n </div>\n\n <p v-if=\"currentConfig.content\" class=\"text-sm text-base-content/70 mb-2\">\n Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, your account will not be created and you will return to sign up.\n </p>\n\n <!-- Scrollable terms box when content is provided -->\n <div\n v-if=\"currentConfig.content\"\n :key=\"currentConfig.type\"\n :ref=\"(el) => setScrollRef(el)\"\n class=\"border border-base-300 rounded-lg px-3 py-4 sm:p-4 bg-base-100 overflow-y-auto overflow-x-hidden min-h-80 max-h-[min(32rem,70vh)] w-full min-w-0\"\n :data-consent-type=\"currentConfig.type\"\n @scroll=\"onScroll\"\n >\n <div\n class=\"prose prose-sm prose-max-w-none max-w-full min-w-0 text-sm prose-headings:font-semibold prose-p:my-2\"\n v-html=\"renderMarkdown(currentConfig.content)\"\n />\n </div>\n\n <!-- Link-only when no content -->\n <div v-else>\n <a\n v-if=\"currentConfig.url\"\n :href=\"currentConfig.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"link link-accent\"\n >\n View {{ currentConfig.label }}\n </a>\n </div>\n\n <div v-if=\"!submitError\" class=\"flex flex-col gap-5\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n :disabled=\"(currentConfig.content ? !hasScrolledToBottom : false) || submitting\"\n @click=\"handleAccept\"\n >\n {{ submitting ? 'Submitting...' : 'Accept and continue' }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-outline btn-sm btn-error\"\n :disabled=\"declining || submitting\"\n @click=\"handleDecline\"\n >\n {{ declining ? 'Returning...' : 'Decline' }}\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { SignupRequirementsDto } from '@dragonmastery/dragoncore-shared';\nimport AppLink from '../../../../components/AppLink.vue';\nimport {\n clearSignupConsentFlowData,\n getSignupConsentFlowData,\n} from '../../signupConsentStorage';\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { useEnv } from '../../../../composables/useEnv';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport {\n getValidReturnUrl,\n setEmailVerificationReturnUrl,\n withReturnUrl,\n} from '../../../../utils/useReturnUrl';\n\nconst sessionStore = useUserSessionStore();\nconst router = useRouter();\nconst route = useRoute();\nconst { emailVerificationMode } = useEnv();\n\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst signupLink = computed(() => withReturnUrl('/auth/signup', returnUrl.value));\n\nconst token = computed(() => (route.query.token as string) ?? '');\nconst storedData = ref<{ token: string; consents: SignupRequirementsDto } | null>(null);\nconst loading = ref(true);\n\n// Load consents from sessionStorage (must match token from URL)\nconst consents = computed(() => {\n const t = token.value;\n const data = storedData.value;\n if (!t || !data || data.token !== t) return [];\n return data.consents;\n});\n\n// Fallback: if no stored data, fetch consents with token (e.g. user opened link in new tab)\nconst { mutate: fetchConsentsForToken } = useMutation(\n (api, _t: string) => api.users.getSignupConsentsForToken(),\n {\n skipAuthCheck: true,\n credentials: 'include',\n customAuthToken: (t) => t,\n },\n);\n\nasync function loadConsents() {\n loading.value = true;\n const t = token.value;\n if (!t) {\n loading.value = false;\n return;\n }\n const data = getSignupConsentFlowData();\n if (data && data.token === t) {\n storedData.value = data;\n loading.value = false;\n return;\n }\n try {\n const reqs = await fetchConsentsForToken(t);\n if (reqs && Array.isArray(reqs) && reqs.length > 0) {\n storedData.value = { token: t, consents: reqs };\n }\n } catch {\n // Token invalid/expired - consents stay empty, user sees \"Invalid or expired\" message\n }\n loading.value = false;\n}\n\nloadConsents();\n\nconst currentStep = ref(1);\nconst totalSteps = computed(() => consents.value.length);\nconst currentConfig = computed(\n () => consents.value[currentStep.value - 1] ?? null,\n);\n\nconst hasScrolledToBottom = ref(false);\nconst scrollEl = ref<HTMLElement | null>(null);\n\nfunction setScrollRef(el: unknown) {\n scrollEl.value = el instanceof HTMLElement ? el : null;\n}\n\nwatch(\n () => currentConfig.value,\n (config) => {\n hasScrolledToBottom.value = !config?.content;\n nextTick(() => {\n scrollEl.value?.scrollTo(0, 0);\n });\n },\n { immediate: true },\n);\n\nfunction renderMarkdown(content: string): string {\n const html = marked.parse(content) as string;\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'u', 'a', 'ul', 'ol', 'li', 'h1', 'h2', 'h3', 'h4', 'blockquote', 'code', 'pre', 'hr'],\n ALLOWED_ATTR: ['href', 'target', 'rel'],\n });\n}\n\nfunction checkScrolledToBottom() {\n const el = scrollEl.value;\n if (!el) return;\n const { scrollTop, scrollHeight, clientHeight } = el;\n const atBottom = scrollHeight - scrollTop - clientHeight < 10;\n if (atBottom) {\n hasScrolledToBottom.value = true;\n }\n}\n\nfunction onScroll() {\n checkScrolledToBottom();\n}\n\nnextTick(checkScrolledToBottom);\n\nconst declining = ref(false);\nconst goingBack = ref(false);\nconst submitting = ref(false);\nconst submitError = ref<string | null>(null);\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error && error.message) return error.message;\n if (error && typeof error === 'object' && 'message' in error && typeof (error as { message: unknown }).message === 'string') {\n return (error as { message: string }).message;\n }\n return 'Registration failed. Please try again.';\n}\n\nconst { mutate: signupCompleteMutate } = useMutation(\n (api, input: { token: string; acceptances: Record<string, boolean> }) =>\n api.users.signupComplete({ acceptances: input.acceptances }),\n {\n skipAuthCheck: true,\n credentials: 'include',\n customAuthToken: (input) => input.token,\n },\n);\n\nasync function handleAccept() {\n const config = currentConfig.value;\n if (!config || !token.value || !consents.value.length) return;\n\n submitError.value = null;\n\n const acceptancesSoFar: Record<string, boolean> = {};\n for (let i = 0; i < currentStep.value; i++) {\n const c = consents.value[i];\n if (c) acceptancesSoFar[c.type] = true;\n }\n\n if (currentStep.value >= totalSteps.value) {\n submitting.value = true;\n try {\n await completeSignup(acceptancesSoFar);\n } catch (err) {\n submitError.value = getErrorMessage(err);\n } finally {\n submitting.value = false;\n }\n return;\n }\n\n currentStep.value++;\n hasScrolledToBottom.value = !currentConfig.value?.content;\n nextTick(checkScrolledToBottom);\n}\n\nasync function completeSignup(acceptances: Record<string, boolean>) {\n const t = token.value;\n if (!t) return;\n\n const session = await signupCompleteMutate({ token: t, acceptances });\n if (!session?.access_token || !session?.user_details_token) {\n throw new Error('Signup failed');\n }\n\n clearSignupConsentFlowData();\n\n sessionStore.setSession(session.user_details_token);\n sessionStore.setAccessToken(session.access_token);\n\n if (emailVerificationMode !== 'disabled') {\n if (emailVerificationMode === 'strict') {\n const targetUrl = getValidReturnUrl(route, '/');\n setEmailVerificationReturnUrl(targetUrl);\n }\n window.scrollTo(0, 0);\n const verifyPath = withReturnUrl('/auth/verify-email', returnUrl.value);\n await router.push(verifyPath);\n return;\n }\n\n window.scrollTo(0, 0);\n const defaultRedirect = getValidReturnUrl(route, '/');\n await router.push(defaultRedirect);\n toast.success('Registration successful! You are now logged in.');\n}\n\nasync function handleDecline() {\n declining.value = true;\n try {\n clearSignupConsentFlowData();\n const signupPath = withReturnUrl('/auth/signup', returnUrl.value);\n await router.push({ path: signupPath, query: { ...route.query, declined: '1' } });\n } finally {\n declining.value = false;\n }\n}\n\nasync function goBackToSignup() {\n goingBack.value = true;\n try {\n clearSignupConsentFlowData();\n const signupPath = withReturnUrl('/auth/signup', returnUrl.value);\n const { declined: _d, token: _t, ...rest } = route.query;\n await router.push({ path: signupPath, query: rest });\n } finally {\n goingBack.value = false;\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import "./useRpcAuth-
|
|
2
|
-
import "./
|
|
3
|
-
import
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import { t as useQuery } from "./useQuery-BzUGEOj0.js";
|
|
6
|
+
import { n as RecordVersionList_default, t as RecordVersionViewer_default } from "./RecordVersionViewer-D2j10HdK.js";
|
|
7
|
+
import { r as formatToISODatetime } from "./convertToLocalDateTime-BF25N4xd.js";
|
|
8
|
+
import { t as extractRpcErrorMessage } from "./extractRpcErrorMessage-diUBl6Ij.js";
|
|
8
9
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
9
10
|
import { toast } from "vue3-toastify";
|
|
10
11
|
import { RecordConst, SignupConsentItemFormSchema } from "@dragonmastery/dragoncore-shared";
|
|
@@ -357,4 +358,4 @@ var SignupRequirementsPage_default = _sfc_main;
|
|
|
357
358
|
|
|
358
359
|
//#endregion
|
|
359
360
|
export { SignupRequirementsPage_default as default };
|
|
360
|
-
//# sourceMappingURL=SignupRequirementsPage-
|
|
361
|
+
//# sourceMappingURL=SignupRequirementsPage-Cf-ElkEq.js.map
|