payload-auth 1.0.2 → 1.1.1
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/better-auth/adapter/index.d.ts +2 -2
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +115 -69
- package/dist/better-auth/adapter/transform/index.d.ts +22 -10
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +387 -96
- package/dist/better-auth/adapter/types.d.ts +2 -1
- package/dist/better-auth/adapter/types.d.ts.map +1 -1
- package/dist/better-auth/adapter/types.js +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts +3 -0
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +5 -0
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts +3 -0
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/check-username-plugin.js +5 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +8 -8
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +8 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts +14 -0
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/get-admin-routes.js +6 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +6 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
- package/dist/better-auth/plugin/helpers/get-ip.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-ip.js +14 -14
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts +3 -0
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/get-requst-collection.js +14 -0
- package/dist/better-auth/plugin/helpers/index.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/index.js +2 -2
- package/dist/better-auth/plugin/{lib → helpers}/prepare-session-data.d.ts +3 -3
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +42 -0
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +4 -4
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/serialize-cookie.js +34 -34
- package/dist/better-auth/plugin/index.d.ts +7 -7
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +145 -37
- package/dist/better-auth/plugin/{collections → lib/build-collections}/accounts/hooks/sync-password-to-user.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +47 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +159 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +107 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +196 -0
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +12 -0
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/index.js +96 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +91 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +43 -0
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/members.js +71 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +98 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +113 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +59 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +108 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +8 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +123 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +83 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.js +45 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +56 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +8 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +52 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.js +96 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +13 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.js +115 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +110 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.js +62 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +42 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +79 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.js +153 -0
- package/dist/better-auth/plugin/{collections → lib/build-collections}/users/hooks/after-login.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +75 -0
- package/dist/better-auth/plugin/{collections → lib/build-collections}/users/hooks/after-logout.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +74 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +45 -0
- package/dist/better-auth/plugin/{collections → lib/build-collections}/users/hooks/before-login.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +18 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +14 -0
- package/dist/better-auth/plugin/{collections → lib/build-collections}/users/hooks/sync-account.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +82 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +8 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +345 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +8 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +31 -0
- package/dist/better-auth/plugin/lib/{payload-access.d.ts → build-collections/utils/payload-access.d.ts} +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +64 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +63 -0
- package/dist/better-auth/plugin/lib/{config.d.ts → constants.d.ts} +13 -1
- package/dist/better-auth/plugin/lib/constants.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/constants.js +56 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +2 -2
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-payload-auth.js +2 -2
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts +4 -4
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.js +26 -43
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +4 -3
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +7 -7
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +3 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +17 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +118 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +58 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +86 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +17 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +17 -0
- package/dist/better-auth/plugin/lib/{ensure-password-set-before-create.d.ts → sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts} +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
- package/dist/better-auth/plugin/lib/{respect-save-to-jwt-fields-middleware.d.ts → sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts} +6 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +30 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +115 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.scss +31 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +11 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +196 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +131 -0
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts +14 -0
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.js +111 -0
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.scss +51 -0
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/form-header/index.js +23 -0
- package/dist/better-auth/plugin/payload/components/form-header/index.scss +8 -0
- package/dist/better-auth/plugin/payload/components/icons.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/icons.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/icons.js +437 -0
- package/dist/better-auth/plugin/payload/components/logo.d.ts +3 -2
- package/dist/better-auth/plugin/payload/components/logo.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/logo.js +22 -34
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +6 -0
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/logout-button.js +27 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +7 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js +8 -0
- package/dist/better-auth/plugin/payload/components/styles.css +2 -2
- package/dist/better-auth/plugin/payload/components/token-field.d.ts +5 -0
- package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/token-field.js +30 -0
- package/dist/better-auth/plugin/payload/exports/client.d.ts +6 -3
- package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/client.js +7 -4
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +9 -5
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +10 -6
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +3 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +8 -0
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts +15 -0
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/utils/generate-metadata.js +74 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +2 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +23 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts +12 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/client.js +92 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts +11 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/index.js +84 -0
- package/dist/better-auth/plugin/payload/views/admin-invite/index.scss +25 -0
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts +14 -0
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.js +95 -0
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts +10 -4
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.js +124 -92
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.scss +29 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +119 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +69 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts +5 -0
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/inactivity/index.js +12 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.js +54 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts +1 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.js +121 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.scss +31 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts +56 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.js +3 -0
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts +17 -0
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/login/form/index.js +137 -0
- package/dist/better-auth/plugin/payload/views/login/form/index.scss +23 -0
- package/dist/better-auth/plugin/payload/views/login/index.d.ts +10 -5
- package/dist/better-auth/plugin/payload/views/login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/login/index.js +81 -61
- package/dist/better-auth/plugin/payload/views/login/index.scss +10 -0
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/logout/client.js +76 -0
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/logout/index.js +14 -0
- package/dist/better-auth/plugin/payload/views/logout/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +7 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +72 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +5 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +81 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.scss +9 -0
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts +3 -0
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.js +11 -0
- package/dist/better-auth/plugin/types.d.ts +170 -33
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts +1 -1
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts.map +1 -1
- package/dist/clerk/utils/clerk-user.d.ts +0 -3
- package/dist/clerk/utils/clerk-user.d.ts.map +1 -1
- package/dist/clerk/utils/clerk-user.js +1 -3
- package/dist/clerk/utils/load-clerk-instance.d.ts +1 -1
- package/dist/clerk/utils/load-clerk-instance.d.ts.map +1 -1
- package/package.json +14 -14
- package/LICENSE.md +0 -17
- package/dist/better-auth/adapter/dev/bin/run.d.ts +0 -2
- package/dist/better-auth/adapter/dev/bin/run.d.ts.map +0 -1
- package/dist/better-auth/adapter/dev/bin/run.js +0 -64
- package/dist/better-auth/adapter/dev/bin/schema.d.ts +0 -23
- package/dist/better-auth/adapter/dev/bin/schema.d.ts.map +0 -1
- package/dist/better-auth/adapter/dev/bin/schema.js +0 -160
- package/dist/better-auth/adapter/dev/collections.d.ts +0 -4
- package/dist/better-auth/adapter/dev/collections.d.ts.map +0 -1
- package/dist/better-auth/adapter/dev/collections.js +0 -212
- package/dist/better-auth/adapter/dev/index.d.ts +0 -4
- package/dist/better-auth/adapter/dev/index.d.ts.map +0 -1
- package/dist/better-auth/adapter/dev/index.js +0 -168
- package/dist/better-auth/adapter/test/adapter.test.d.ts +0 -2
- package/dist/better-auth/adapter/test/adapter.test.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/adapter.test.js +0 -181
- package/dist/better-auth/adapter/test/better-auth-adapter-test.d.ts +0 -8
- package/dist/better-auth/adapter/test/better-auth-adapter-test.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/better-auth-adapter-test.js +0 -425
- package/dist/better-auth/adapter/test/schema.test.d.ts +0 -2
- package/dist/better-auth/adapter/test/schema.test.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/schema.test.js +0 -796
- package/dist/better-auth/adapter/test/test_payload1/schema.d.ts +0 -24
- package/dist/better-auth/adapter/test/test_payload1/schema.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/test_payload1/schema.js +0 -177
- package/dist/better-auth/adapter/test/test_payload2/schema.d.ts +0 -24
- package/dist/better-auth/adapter/test/test_payload2/schema.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/test_payload2/schema.js +0 -167
- package/dist/better-auth/adapter/test/test_payload3/schema.d.ts +0 -24
- package/dist/better-auth/adapter/test/test_payload3/schema.d.ts.map +0 -1
- package/dist/better-auth/adapter/test/test_payload3/schema.js +0 -198
- package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.js +0 -47
- package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.d.ts +0 -7
- package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.js +0 -106
- package/dist/better-auth/plugin/collections/users/hooks/after-login.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/after-login.js +0 -71
- package/dist/better-auth/plugin/collections/users/hooks/after-logout.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/after-logout.js +0 -49
- package/dist/better-auth/plugin/collections/users/hooks/before-login.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/before-login.js +0 -18
- package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.d.ts +0 -6
- package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.js +0 -33
- package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.d.ts +0 -3
- package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.js +0 -14
- package/dist/better-auth/plugin/collections/users/hooks/sync-account.d.ts.map +0 -1
- package/dist/better-auth/plugin/collections/users/hooks/sync-account.js +0 -82
- package/dist/better-auth/plugin/lib/auth-strategy.d.ts +0 -9
- package/dist/better-auth/plugin/lib/auth-strategy.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/auth-strategy.js +0 -48
- package/dist/better-auth/plugin/lib/build-collection-configs.d.ts +0 -12
- package/dist/better-auth/plugin/lib/build-collection-configs.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collection-configs.js +0 -1558
- package/dist/better-auth/plugin/lib/config.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/config.js +0 -44
- package/dist/better-auth/plugin/lib/ensure-password-set-before-create.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/ensure-password-set-before-create.js +0 -24
- package/dist/better-auth/plugin/lib/password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/password.js +0 -63
- package/dist/better-auth/plugin/lib/payload-access.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/payload-access.js +0 -64
- package/dist/better-auth/plugin/lib/prepare-session-data.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/prepare-session-data.js +0 -42
- package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.js +0 -30
- package/dist/better-auth/plugin/lib/sanitize-auth-options.d.ts +0 -6
- package/dist/better-auth/plugin/lib/sanitize-auth-options.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/sanitize-auth-options.js +0 -298
- package/dist/better-auth/plugin/payload/components/admin-buttons.d.ts +0 -7
- package/dist/better-auth/plugin/payload/components/admin-buttons.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/admin-buttons.js +0 -219
- package/dist/better-auth/plugin/payload/components/login-redirect.d.ts +0 -2
- package/dist/better-auth/plugin/payload/components/login-redirect.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/login-redirect.js +0 -6
- package/dist/better-auth/plugin/payload/components/logout.d.ts +0 -3
- package/dist/better-auth/plugin/payload/components/logout.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/logout.js +0 -61
- package/dist/better-auth/plugin/payload/components/sign-in.d.ts +0 -4
- package/dist/better-auth/plugin/payload/components/sign-in.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/sign-in.js +0 -384
- package/dist/better-auth/plugin/payload/components/sign-up.d.ts +0 -7
- package/dist/better-auth/plugin/payload/components/sign-up.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/sign-up.js +0 -503
- package/dist/better-auth/plugin/payload/components/ui/button.d.ts +0 -11
- package/dist/better-auth/plugin/payload/components/ui/button.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/button.js +0 -42
- package/dist/better-auth/plugin/payload/components/ui/card.d.ts +0 -10
- package/dist/better-auth/plugin/payload/components/ui/card.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/card.js +0 -55
- package/dist/better-auth/plugin/payload/components/ui/checkbox.d.ts +0 -5
- package/dist/better-auth/plugin/payload/components/ui/checkbox.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/checkbox.js +0 -23
- package/dist/better-auth/plugin/payload/components/ui/cn.d.ts +0 -3
- package/dist/better-auth/plugin/payload/components/ui/cn.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/cn.js +0 -7
- package/dist/better-auth/plugin/payload/components/ui/input.d.ts +0 -4
- package/dist/better-auth/plugin/payload/components/ui/input.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/input.js +0 -14
- package/dist/better-auth/plugin/payload/components/ui/label.d.ts +0 -5
- package/dist/better-auth/plugin/payload/components/ui/label.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/label.js +0 -15
- package/dist/better-auth/plugin/payload/components/ui/password-input.d.ts +0 -3
- package/dist/better-auth/plugin/payload/components/ui/password-input.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/ui/password-input.js +0 -55
- /package/dist/better-auth/plugin/lib/{password.d.ts → sanitize-better-auth-options/utils/password.d.ts} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { betterAuthPluginSlugs, baseCollectionSlugs } from "../constants";
|
|
2
|
+
import { getTimestampFields } from "./utils/get-timestamp-fields";
|
|
3
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
4
|
+
export function buildTwoFactorsCollection({ pluginOptions }) {
|
|
5
|
+
const twoFactorSlug = betterAuthPluginSlugs.twoFactors;
|
|
6
|
+
const userSlug = pluginOptions.users?.slug ?? baseCollectionSlugs.users;
|
|
7
|
+
const twoFactorCollection = {
|
|
8
|
+
slug: twoFactorSlug,
|
|
9
|
+
admin: {
|
|
10
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
11
|
+
useAsTitle: "secret",
|
|
12
|
+
description: "Two factor authentication secrets",
|
|
13
|
+
group: pluginOptions?.collectionAdminGroup ?? "Auth"
|
|
14
|
+
},
|
|
15
|
+
access: {
|
|
16
|
+
...getAdminAccess(pluginOptions)
|
|
17
|
+
},
|
|
18
|
+
fields: [
|
|
19
|
+
{
|
|
20
|
+
name: "user",
|
|
21
|
+
type: "relationship",
|
|
22
|
+
relationTo: userSlug,
|
|
23
|
+
required: true,
|
|
24
|
+
label: "User",
|
|
25
|
+
admin: {
|
|
26
|
+
readOnly: true,
|
|
27
|
+
description: "The user that the two factor authentication secret belongs to"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "secret",
|
|
32
|
+
type: "text",
|
|
33
|
+
label: "Secret",
|
|
34
|
+
index: true,
|
|
35
|
+
admin: {
|
|
36
|
+
readOnly: true,
|
|
37
|
+
description: "The secret used to generate the TOTP code."
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "backupCodes",
|
|
42
|
+
type: "text",
|
|
43
|
+
required: true,
|
|
44
|
+
label: "Backup Codes",
|
|
45
|
+
admin: {
|
|
46
|
+
readOnly: true,
|
|
47
|
+
description: "The backup codes used to recover access to the account if the user loses access to their phone or email"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
...getTimestampFields()
|
|
51
|
+
]
|
|
52
|
+
};
|
|
53
|
+
return twoFactorCollection;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3R3by1mYWN0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25Db25maWcgfSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IGJldHRlckF1dGhQbHVnaW5TbHVncywgYmFzZUNvbGxlY3Rpb25TbHVncyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldFRpbWVzdGFtcEZpZWxkcyB9IGZyb20gXCIuL3V0aWxzL2dldC10aW1lc3RhbXAtZmllbGRzXCI7XG5pbXBvcnQgeyBnZXRBZG1pbkFjY2VzcyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2dldC1hZG1pbi1hY2Nlc3NcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHdvRmFjdG9yc0NvbGxlY3Rpb24oe1xuICBwbHVnaW5PcHRpb25zLFxufToge1xuICBwbHVnaW5PcHRpb25zOiBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucztcbn0pIHtcbiAgY29uc3QgdHdvRmFjdG9yU2x1ZyA9IGJldHRlckF1dGhQbHVnaW5TbHVncy50d29GYWN0b3JzO1xuICBjb25zdCB1c2VyU2x1ZyA9IHBsdWdpbk9wdGlvbnMudXNlcnM/LnNsdWcgPz8gYmFzZUNvbGxlY3Rpb25TbHVncy51c2VycztcblxuICBjb25zdCB0d29GYWN0b3JDb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnID0ge1xuICAgIHNsdWc6IHR3b0ZhY3RvclNsdWcsXG4gICAgYWRtaW46IHtcbiAgICAgIGhpZGRlbjogcGx1Z2luT3B0aW9ucy5oaWRlUGx1Z2luQ29sbGVjdGlvbnMgPz8gZmFsc2UsXG4gICAgICB1c2VBc1RpdGxlOiBcInNlY3JldFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiVHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiBzZWNyZXRzXCIsXG4gICAgICBncm91cDogcGx1Z2luT3B0aW9ucz8uY29sbGVjdGlvbkFkbWluR3JvdXAgPz8gXCJBdXRoXCIsXG4gICAgfSxcbiAgICBhY2Nlc3M6IHtcbiAgICAgIC4uLmdldEFkbWluQWNjZXNzKHBsdWdpbk9wdGlvbnMpLFxuICAgIH0sXG4gICAgZmllbGRzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwidXNlclwiLFxuICAgICAgICB0eXBlOiBcInJlbGF0aW9uc2hpcFwiLFxuICAgICAgICByZWxhdGlvblRvOiB1c2VyU2x1ZyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGxhYmVsOiBcIlVzZXJcIixcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwiVGhlIHVzZXIgdGhhdCB0aGUgdHdvIGZhY3RvciBhdXRoZW50aWNhdGlvbiBzZWNyZXQgYmVsb25ncyB0b1wiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJzZWNyZXRcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIGxhYmVsOiBcIlNlY3JldFwiLFxuICAgICAgICBpbmRleDogdHJ1ZSxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgc2VjcmV0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIFRPVFAgY29kZS5cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiYmFja3VwQ29kZXNcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBsYWJlbDogXCJCYWNrdXAgQ29kZXNcIixcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwiVGhlIGJhY2t1cCBjb2RlcyB1c2VkIHRvIHJlY292ZXIgYWNjZXNzIHRvIHRoZSBhY2NvdW50IGlmIHRoZSB1c2VyIGxvc2VzIGFjY2VzcyB0byB0aGVpciBwaG9uZSBvciBlbWFpbFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC4uLmdldFRpbWVzdGFtcEZpZWxkcygpLFxuICAgIF0sXG4gIH07XG5cbiAgcmV0dXJuIHR3b0ZhY3RvckNvbGxlY3Rpb247XG59XG4iXSwibmFtZXMiOlsiYmV0dGVyQXV0aFBsdWdpblNsdWdzIiwiYmFzZUNvbGxlY3Rpb25TbHVncyIsImdldFRpbWVzdGFtcEZpZWxkcyIsImdldEFkbWluQWNjZXNzIiwiYnVpbGRUd29GYWN0b3JzQ29sbGVjdGlvbiIsInBsdWdpbk9wdGlvbnMiLCJ0d29GYWN0b3JTbHVnIiwidHdvRmFjdG9ycyIsInVzZXJTbHVnIiwidXNlcnMiLCJzbHVnIiwidHdvRmFjdG9yQ29sbGVjdGlvbiIsImFkbWluIiwiaGlkZGVuIiwiaGlkZVBsdWdpbkNvbGxlY3Rpb25zIiwidXNlQXNUaXRsZSIsImRlc2NyaXB0aW9uIiwiZ3JvdXAiLCJjb2xsZWN0aW9uQWRtaW5Hcm91cCIsImFjY2VzcyIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwicmVsYXRpb25UbyIsInJlcXVpcmVkIiwibGFiZWwiLCJyZWFkT25seSIsImluZGV4Il0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxxQkFBcUIsRUFBRUMsbUJBQW1CLFFBQVEsZUFBZTtBQUMxRSxTQUFTQyxrQkFBa0IsUUFBUSwrQkFBK0I7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLGlDQUFpQztBQUVoRSxPQUFPLFNBQVNDLDBCQUEwQixFQUN4Q0MsYUFBYSxFQUdkO0lBQ0MsTUFBTUMsZ0JBQWdCTixzQkFBc0JPLFVBQVU7SUFDdEQsTUFBTUMsV0FBV0gsY0FBY0ksS0FBSyxFQUFFQyxRQUFRVCxvQkFBb0JRLEtBQUs7SUFFdkUsTUFBTUUsc0JBQXdDO1FBQzVDRCxNQUFNSjtRQUNOTSxPQUFPO1lBQ0xDLFFBQVFSLGNBQWNTLHFCQUFxQixJQUFJO1lBQy9DQyxZQUFZO1lBQ1pDLGFBQWE7WUFDYkMsT0FBT1osZUFBZWEsd0JBQXdCO1FBQ2hEO1FBQ0FDLFFBQVE7WUFDTixHQUFHaEIsZUFBZUUsY0FBYztRQUNsQztRQUNBZSxRQUFRO1lBQ047Z0JBQ0VDLE1BQU07Z0JBQ05DLE1BQU07Z0JBQ05DLFlBQVlmO2dCQUNaZ0IsVUFBVTtnQkFDVkMsT0FBTztnQkFDUGIsT0FBTztvQkFDTGMsVUFBVTtvQkFDVlYsYUFDRTtnQkFDSjtZQUNGO1lBQ0E7Z0JBQ0VLLE1BQU07Z0JBQ05DLE1BQU07Z0JBQ05HLE9BQU87Z0JBQ1BFLE9BQU87Z0JBQ1BmLE9BQU87b0JBQ0xjLFVBQVU7b0JBQ1ZWLGFBQWE7Z0JBQ2Y7WUFDRjtZQUNBO2dCQUNFSyxNQUFNO2dCQUNOQyxNQUFNO2dCQUNORSxVQUFVO2dCQUNWQyxPQUFPO2dCQUNQYixPQUFPO29CQUNMYyxVQUFVO29CQUNWVixhQUNFO2dCQUNKO1lBQ0Y7ZUFDR2Q7U0FDSjtJQUNIO0lBRUEsT0FBT1M7QUFDVCJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AuthStrategy } from "payload";
|
|
2
|
+
/**
|
|
3
|
+
* Auth strategy for BetterAuth
|
|
4
|
+
* @param userSlug - User collection slug
|
|
5
|
+
* @returns Auth strategy
|
|
6
|
+
*/
|
|
7
|
+
export declare function betterAuthStrategy(userSlug?: string): AuthStrategy;
|
|
8
|
+
//# sourceMappingURL=better-auth-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-auth-strategy.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/better-auth-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAyClE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { getPayloadAuth } from "../../../lib/get-payload-auth";
|
|
2
|
+
/**
|
|
3
|
+
* Auth strategy for BetterAuth
|
|
4
|
+
* @param userSlug - User collection slug
|
|
5
|
+
* @returns Auth strategy
|
|
6
|
+
*/ export function betterAuthStrategy(userSlug) {
|
|
7
|
+
return {
|
|
8
|
+
name: "better-auth",
|
|
9
|
+
authenticate: async ({ payload, headers })=>{
|
|
10
|
+
try {
|
|
11
|
+
const payloadAuth = await getPayloadAuth(payload.config);
|
|
12
|
+
const res = await payloadAuth.betterAuth.api.getSession({
|
|
13
|
+
headers
|
|
14
|
+
});
|
|
15
|
+
if (!res) {
|
|
16
|
+
return {
|
|
17
|
+
user: null
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const userId = res.user.id ?? res.session.userId ?? ("user" in res.session && typeof res.session.user === "string" ? res.session.user : null);
|
|
21
|
+
if (!userId) {
|
|
22
|
+
return {
|
|
23
|
+
user: null
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const user = await payloadAuth.findByID({
|
|
27
|
+
collection: userSlug ?? "users",
|
|
28
|
+
id: userId
|
|
29
|
+
});
|
|
30
|
+
if (!user) {
|
|
31
|
+
return {
|
|
32
|
+
user: null
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
user: {
|
|
37
|
+
...user,
|
|
38
|
+
collection: userSlug ?? "users",
|
|
39
|
+
_strategy: "better-auth"
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error(error);
|
|
44
|
+
return {
|
|
45
|
+
user: null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2JldHRlci1hdXRoLXN0cmF0ZWd5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXV0aFN0cmF0ZWd5IH0gZnJvbSBcInBheWxvYWRcIjtcbmltcG9ydCB7IGdldFBheWxvYWRBdXRoIH0gZnJvbSBcIi4uLy4uLy4uL2xpYi9nZXQtcGF5bG9hZC1hdXRoXCI7XG5cbi8qKlxuICogQXV0aCBzdHJhdGVneSBmb3IgQmV0dGVyQXV0aFxuICogQHBhcmFtIHVzZXJTbHVnIC0gVXNlciBjb2xsZWN0aW9uIHNsdWdcbiAqIEByZXR1cm5zIEF1dGggc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJldHRlckF1dGhTdHJhdGVneSh1c2VyU2x1Zz86IHN0cmluZyk6IEF1dGhTdHJhdGVneSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJiZXR0ZXItYXV0aFwiLFxuICAgIGF1dGhlbnRpY2F0ZTogYXN5bmMgKHsgcGF5bG9hZCwgaGVhZGVycyB9KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXlsb2FkQXV0aCA9IGF3YWl0IGdldFBheWxvYWRBdXRoKHBheWxvYWQuY29uZmlnKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcGF5bG9hZEF1dGguYmV0dGVyQXV0aC5hcGkuZ2V0U2Vzc2lvbih7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdXNlcjogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVzZXJJZCA9XG4gICAgICAgICAgcmVzLnVzZXIuaWQgPz9cbiAgICAgICAgICByZXMuc2Vzc2lvbi51c2VySWQgPz9cbiAgICAgICAgICAoXCJ1c2VyXCIgaW4gcmVzLnNlc3Npb24gJiYgdHlwZW9mIHJlcy5zZXNzaW9uLnVzZXIgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcmVzLnNlc3Npb24udXNlclxuICAgICAgICAgICAgOiBudWxsKTtcbiAgICAgICAgaWYgKCF1c2VySWQpIHtcbiAgICAgICAgICByZXR1cm4geyB1c2VyOiBudWxsIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHBheWxvYWRBdXRoLmZpbmRCeUlEKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiB1c2VyU2x1ZyA/PyBcInVzZXJzXCIsXG4gICAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdXNlcikge1xuICAgICAgICAgIHJldHVybiB7IHVzZXI6IG51bGwgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBjb2xsZWN0aW9uOiB1c2VyU2x1ZyA/PyBcInVzZXJzXCIsXG4gICAgICAgICAgICBfc3RyYXRlZ3k6IFwiYmV0dGVyLWF1dGhcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB7IHVzZXI6IG51bGwgfTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbImdldFBheWxvYWRBdXRoIiwiYmV0dGVyQXV0aFN0cmF0ZWd5IiwidXNlclNsdWciLCJuYW1lIiwiYXV0aGVudGljYXRlIiwicGF5bG9hZCIsImhlYWRlcnMiLCJwYXlsb2FkQXV0aCIsImNvbmZpZyIsInJlcyIsImJldHRlckF1dGgiLCJhcGkiLCJnZXRTZXNzaW9uIiwidXNlciIsInVzZXJJZCIsImlkIiwic2Vzc2lvbiIsImZpbmRCeUlEIiwiY29sbGVjdGlvbiIsIl9zdHJhdGVneSIsImVycm9yIiwiY29uc29sZSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsY0FBYyxRQUFRLGdDQUFnQztBQUUvRDs7OztDQUlDLEdBQ0QsT0FBTyxTQUFTQyxtQkFBbUJDLFFBQWlCO0lBQ2xELE9BQU87UUFDTEMsTUFBTTtRQUNOQyxjQUFjLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUU7WUFDdkMsSUFBSTtnQkFDRixNQUFNQyxjQUFjLE1BQU1QLGVBQWVLLFFBQVFHLE1BQU07Z0JBQ3ZELE1BQU1DLE1BQU0sTUFBTUYsWUFBWUcsVUFBVSxDQUFDQyxHQUFHLENBQUNDLFVBQVUsQ0FBQztvQkFDdEROO2dCQUNGO2dCQUNBLElBQUksQ0FBQ0csS0FBSztvQkFDUixPQUFPO3dCQUFFSSxNQUFNO29CQUFLO2dCQUN0QjtnQkFDQSxNQUFNQyxTQUNKTCxJQUFJSSxJQUFJLENBQUNFLEVBQUUsSUFDWE4sSUFBSU8sT0FBTyxDQUFDRixNQUFNLElBQ2pCLENBQUEsVUFBVUwsSUFBSU8sT0FBTyxJQUFJLE9BQU9QLElBQUlPLE9BQU8sQ0FBQ0gsSUFBSSxLQUFLLFdBQ2xESixJQUFJTyxPQUFPLENBQUNILElBQUksR0FDaEIsSUFBRztnQkFDVCxJQUFJLENBQUNDLFFBQVE7b0JBQ1gsT0FBTzt3QkFBRUQsTUFBTTtvQkFBSztnQkFDdEI7Z0JBQ0EsTUFBTUEsT0FBTyxNQUFNTixZQUFZVSxRQUFRLENBQUM7b0JBQ3RDQyxZQUFZaEIsWUFBWTtvQkFDeEJhLElBQUlEO2dCQUNOO2dCQUNBLElBQUksQ0FBQ0QsTUFBTTtvQkFDVCxPQUFPO3dCQUFFQSxNQUFNO29CQUFLO2dCQUN0QjtnQkFDQSxPQUFPO29CQUNMQSxNQUFNO3dCQUNKLEdBQUdBLElBQUk7d0JBQ1BLLFlBQVloQixZQUFZO3dCQUN4QmlCLFdBQVc7b0JBQ2I7Z0JBQ0Y7WUFDRixFQUFFLE9BQU9DLE9BQU87Z0JBQ2RDLFFBQVFELEtBQUssQ0FBQ0E7Z0JBQ2QsT0FBTztvQkFBRVAsTUFBTTtnQkFBSztZQUN0QjtRQUNGO0lBQ0Y7QUFDRiJ9
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forgot-password.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,QAAQ,EAKT,MAAM,SAAS,CAAC;AAkBjB,eAAO,MAAM,yBAAyB,QAAO,QA2F5C,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { addDataAndFileToRequest, APIError, commitTransaction, headersWithCors, initTransaction, killTransaction } from "payload";
|
|
2
|
+
import { status as httpStatus } from "http-status";
|
|
3
|
+
import { getPayloadAuth } from "../../../get-payload-auth";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { getRequestCollection } from "../../../../helpers/get-requst-collection";
|
|
6
|
+
import { getLoginOptions } from "payload/shared";
|
|
7
|
+
import { getAdminRoutes } from "../../../../helpers/get-admin-routes";
|
|
8
|
+
const requestSchema = z.object({
|
|
9
|
+
email: z.string().email().optional(),
|
|
10
|
+
username: z.string().optional()
|
|
11
|
+
});
|
|
12
|
+
export const getForgotPasswordEndpoint = ()=>{
|
|
13
|
+
const endpoint = {
|
|
14
|
+
path: "/forgot-password",
|
|
15
|
+
method: "post",
|
|
16
|
+
handler: async (req)=>{
|
|
17
|
+
await addDataAndFileToRequest(req);
|
|
18
|
+
const { t } = req;
|
|
19
|
+
const body = requestSchema.safeParse(req.data);
|
|
20
|
+
if (!body.success) {
|
|
21
|
+
return Response.json({
|
|
22
|
+
message: body.error.message
|
|
23
|
+
}, {
|
|
24
|
+
status: httpStatus.BAD_REQUEST
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const adminRoutes = getAdminRoutes(req.payload.config.admin.custom);
|
|
28
|
+
const redirectUrl = `${req.payload.config.routes?.admin || "/admin"}${adminRoutes.resetPassword}`;
|
|
29
|
+
const { email, username } = body.data;
|
|
30
|
+
const collection = getRequestCollection(req);
|
|
31
|
+
const loginWithUsername = collection.config.auth?.loginWithUsername;
|
|
32
|
+
const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername);
|
|
33
|
+
const sanitizedEmail = canLoginWithEmail && (email || "").toLowerCase().trim() || null;
|
|
34
|
+
const sanitizedUsername = username?.toLowerCase().trim() || null;
|
|
35
|
+
if (!sanitizedEmail && !sanitizedUsername) {
|
|
36
|
+
throw new APIError(`Missing ${loginWithUsername ? "username" : "email"}.`, httpStatus.BAD_REQUEST);
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
await initTransaction(req);
|
|
40
|
+
let whereConstraint = {};
|
|
41
|
+
if (canLoginWithEmail && sanitizedEmail) {
|
|
42
|
+
whereConstraint = {
|
|
43
|
+
email: {
|
|
44
|
+
equals: sanitizedEmail
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
} else if (canLoginWithUsername && sanitizedUsername) {
|
|
48
|
+
whereConstraint = {
|
|
49
|
+
username: {
|
|
50
|
+
equals: sanitizedUsername
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const res = await req.payload.find({
|
|
55
|
+
collection: collection.config.slug,
|
|
56
|
+
req,
|
|
57
|
+
where: whereConstraint
|
|
58
|
+
});
|
|
59
|
+
// We don't want to indicate specifically that an email was not found,
|
|
60
|
+
// as doing so could lead to the exposure of registered emails.
|
|
61
|
+
// Therefore, we prefer to fail silently.
|
|
62
|
+
if (res.docs.length === 0) {
|
|
63
|
+
await commitTransaction(req);
|
|
64
|
+
return Response.json({
|
|
65
|
+
message: t("general:success")
|
|
66
|
+
}, {
|
|
67
|
+
status: httpStatus.OK
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const user = res.docs[0];
|
|
71
|
+
const payloadAuth = await getPayloadAuth(req.payload.config);
|
|
72
|
+
await payloadAuth.betterAuth.api.forgetPassword({
|
|
73
|
+
body: {
|
|
74
|
+
email: user.email,
|
|
75
|
+
redirectTo: redirectUrl
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return Response.json({
|
|
79
|
+
message: t("general:success")
|
|
80
|
+
}, {
|
|
81
|
+
headers: headersWithCors({
|
|
82
|
+
headers: new Headers(),
|
|
83
|
+
req
|
|
84
|
+
}),
|
|
85
|
+
status: httpStatus.OK
|
|
86
|
+
});
|
|
87
|
+
} catch (error) {
|
|
88
|
+
await killTransaction(req);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return endpoint;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9mb3Jnb3QtcGFzc3dvcmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWRkRGF0YUFuZEZpbGVUb1JlcXVlc3QsXG4gIEFQSUVycm9yLFxuICBjb21taXRUcmFuc2FjdGlvbixcbiAgRW5kcG9pbnQsXG4gIGhlYWRlcnNXaXRoQ29ycyxcbiAgaW5pdFRyYW5zYWN0aW9uLFxuICBraWxsVHJhbnNhY3Rpb24sXG4gIFdoZXJlLFxufSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHtcbiAgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMsXG4gIENvbmZpZ0FkbWluQ3VzdG9tLFxuICBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyxcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBzdGF0dXMgYXMgaHR0cFN0YXR1cyB9IGZyb20gXCJodHRwLXN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0UGF5bG9hZEF1dGggfSBmcm9tIFwiLi4vLi4vLi4vZ2V0LXBheWxvYWQtYXV0aFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFJlcXVlc3RDb2xsZWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hlbHBlcnMvZ2V0LXJlcXVzdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBnZXRMb2dpbk9wdGlvbnMgfSBmcm9tIFwicGF5bG9hZC9zaGFyZWRcIjtcbmltcG9ydCB7IGdldEFkbWluUm91dGVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hlbHBlcnMvZ2V0LWFkbWluLXJvdXRlc1wiO1xuXG5jb25zdCByZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICBlbWFpbDogei5zdHJpbmcoKS5lbWFpbCgpLm9wdGlvbmFsKCksXG4gIHVzZXJuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcmdvdFBhc3N3b3JkRW5kcG9pbnQgPSAoKTogRW5kcG9pbnQgPT4ge1xuICBjb25zdCBlbmRwb2ludDogRW5kcG9pbnQgPSB7XG4gICAgcGF0aDogXCIvZm9yZ290LXBhc3N3b3JkXCIsXG4gICAgbWV0aG9kOiBcInBvc3RcIixcbiAgICBoYW5kbGVyOiBhc3luYyAocmVxKSA9PiB7XG4gICAgICBhd2FpdCBhZGREYXRhQW5kRmlsZVRvUmVxdWVzdChyZXEpO1xuICAgICAgY29uc3QgeyB0IH0gPSByZXE7XG4gICAgICBjb25zdCBib2R5ID0gcmVxdWVzdFNjaGVtYS5zYWZlUGFyc2UocmVxLmRhdGEpO1xuICAgICAgaWYgKCFib2R5LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAgeyBtZXNzYWdlOiBib2R5LmVycm9yLm1lc3NhZ2UgfSxcbiAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5CQURfUkVRVUVTVCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBhZG1pblJvdXRlcyA9IGdldEFkbWluUm91dGVzKHJlcS5wYXlsb2FkLmNvbmZpZy5hZG1pbi5jdXN0b20pO1xuICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSBgJHtyZXEucGF5bG9hZC5jb25maWcucm91dGVzPy5hZG1pbiB8fCBcIi9hZG1pblwifSR7YWRtaW5Sb3V0ZXMucmVzZXRQYXNzd29yZH1gO1xuICAgICAgY29uc3QgeyBlbWFpbCwgdXNlcm5hbWUgfSA9IGJvZHkuZGF0YTtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBnZXRSZXF1ZXN0Q29sbGVjdGlvbihyZXEpO1xuICAgICAgY29uc3QgbG9naW5XaXRoVXNlcm5hbWUgPSBjb2xsZWN0aW9uLmNvbmZpZy5hdXRoPy5sb2dpbldpdGhVc2VybmFtZTtcbiAgICAgIGNvbnN0IHsgY2FuTG9naW5XaXRoRW1haWwsIGNhbkxvZ2luV2l0aFVzZXJuYW1lIH0gPVxuICAgICAgICBnZXRMb2dpbk9wdGlvbnMobG9naW5XaXRoVXNlcm5hbWUpO1xuICAgICAgY29uc3Qgc2FuaXRpemVkRW1haWwgPVxuICAgICAgICAoY2FuTG9naW5XaXRoRW1haWwgJiYgKGVtYWlsIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkudHJpbSgpKSB8fCBudWxsO1xuICAgICAgY29uc3Qgc2FuaXRpemVkVXNlcm5hbWUgPSB1c2VybmFtZT8udG9Mb3dlckNhc2UoKS50cmltKCkgfHwgbnVsbDtcbiAgICAgIGlmICghc2FuaXRpemVkRW1haWwgJiYgIXNhbml0aXplZFVzZXJuYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBBUElFcnJvcihcbiAgICAgICAgICBgTWlzc2luZyAke2xvZ2luV2l0aFVzZXJuYW1lID8gXCJ1c2VybmFtZVwiIDogXCJlbWFpbFwifS5gLFxuICAgICAgICAgIGh0dHBTdGF0dXMuQkFEX1JFUVVFU1RcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSk7XG4gICAgICAgIGxldCB3aGVyZUNvbnN0cmFpbnQ6IFdoZXJlID0ge307XG4gICAgICAgIGlmIChjYW5Mb2dpbldpdGhFbWFpbCAmJiBzYW5pdGl6ZWRFbWFpbCkge1xuICAgICAgICAgIHdoZXJlQ29uc3RyYWludCA9IHtcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgIGVxdWFsczogc2FuaXRpemVkRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoY2FuTG9naW5XaXRoVXNlcm5hbWUgJiYgc2FuaXRpemVkVXNlcm5hbWUpIHtcbiAgICAgICAgICB3aGVyZUNvbnN0cmFpbnQgPSB7XG4gICAgICAgICAgICB1c2VybmFtZToge1xuICAgICAgICAgICAgICBlcXVhbHM6IHNhbml0aXplZFVzZXJuYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24uY29uZmlnLnNsdWcsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHdoZXJlOiB3aGVyZUNvbnN0cmFpbnQsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGluZGljYXRlIHNwZWNpZmljYWxseSB0aGF0IGFuIGVtYWlsIHdhcyBub3QgZm91bmQsXG4gICAgICAgIC8vIGFzIGRvaW5nIHNvIGNvdWxkIGxlYWQgdG8gdGhlIGV4cG9zdXJlIG9mIHJlZ2lzdGVyZWQgZW1haWxzLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIHByZWZlciB0byBmYWlsIHNpbGVudGx5LlxuICAgICAgICBpZiAocmVzLmRvY3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKTtcbiAgICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogdChcImdlbmVyYWw6c3VjY2Vzc1wiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5PSyB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VyID0gcmVzLmRvY3NbMF07XG4gICAgICAgIGNvbnN0IHBheWxvYWRBdXRoID0gYXdhaXQgZ2V0UGF5bG9hZEF1dGgocmVxLnBheWxvYWQuY29uZmlnKTtcbiAgICAgICAgYXdhaXQgcGF5bG9hZEF1dGguYmV0dGVyQXV0aC5hcGkuZm9yZ2V0UGFzc3dvcmQoe1xuICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICAgICAgcmVkaXJlY3RUbzogcmVkaXJlY3RVcmwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHQoXCJnZW5lcmFsOnN1Y2Nlc3NcIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzV2l0aENvcnMoe1xuICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycygpLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0YXR1czogaHR0cFN0YXR1cy5PSyxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBhd2FpdCBraWxsVHJhbnNhY3Rpb24ocmVxKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIGVuZHBvaW50O1xufTtcbiJdLCJuYW1lcyI6WyJhZGREYXRhQW5kRmlsZVRvUmVxdWVzdCIsIkFQSUVycm9yIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJoZWFkZXJzV2l0aENvcnMiLCJpbml0VHJhbnNhY3Rpb24iLCJraWxsVHJhbnNhY3Rpb24iLCJzdGF0dXMiLCJodHRwU3RhdHVzIiwiZ2V0UGF5bG9hZEF1dGgiLCJ6IiwiZ2V0UmVxdWVzdENvbGxlY3Rpb24iLCJnZXRMb2dpbk9wdGlvbnMiLCJnZXRBZG1pblJvdXRlcyIsInJlcXVlc3RTY2hlbWEiLCJvYmplY3QiLCJlbWFpbCIsInN0cmluZyIsIm9wdGlvbmFsIiwidXNlcm5hbWUiLCJnZXRGb3Jnb3RQYXNzd29yZEVuZHBvaW50IiwiZW5kcG9pbnQiLCJwYXRoIiwibWV0aG9kIiwiaGFuZGxlciIsInJlcSIsInQiLCJib2R5Iiwic2FmZVBhcnNlIiwiZGF0YSIsInN1Y2Nlc3MiLCJSZXNwb25zZSIsImpzb24iLCJtZXNzYWdlIiwiZXJyb3IiLCJCQURfUkVRVUVTVCIsImFkbWluUm91dGVzIiwicGF5bG9hZCIsImNvbmZpZyIsImFkbWluIiwiY3VzdG9tIiwicmVkaXJlY3RVcmwiLCJyb3V0ZXMiLCJyZXNldFBhc3N3b3JkIiwiY29sbGVjdGlvbiIsImxvZ2luV2l0aFVzZXJuYW1lIiwiYXV0aCIsImNhbkxvZ2luV2l0aEVtYWlsIiwiY2FuTG9naW5XaXRoVXNlcm5hbWUiLCJzYW5pdGl6ZWRFbWFpbCIsInRvTG93ZXJDYXNlIiwidHJpbSIsInNhbml0aXplZFVzZXJuYW1lIiwid2hlcmVDb25zdHJhaW50IiwiZXF1YWxzIiwicmVzIiwiZmluZCIsInNsdWciLCJ3aGVyZSIsImRvY3MiLCJsZW5ndGgiLCJPSyIsInVzZXIiLCJwYXlsb2FkQXV0aCIsImJldHRlckF1dGgiLCJhcGkiLCJmb3JnZXRQYXNzd29yZCIsInJlZGlyZWN0VG8iLCJoZWFkZXJzIiwiSGVhZGVycyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsdUJBQXVCLEVBQ3ZCQyxRQUFRLEVBQ1JDLGlCQUFpQixFQUVqQkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGVBQWUsUUFFVixVQUFVO0FBTWpCLFNBQVNDLFVBQVVDLFVBQVUsUUFBUSxjQUFjO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSw0QkFBNEI7QUFDM0QsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0Msb0JBQW9CLFFBQVEsNENBQTRDO0FBQ2pGLFNBQVNDLGVBQWUsUUFBUSxpQkFBaUI7QUFDakQsU0FBU0MsY0FBYyxRQUFRLHVDQUF1QztBQUV0RSxNQUFNQyxnQkFBZ0JKLEVBQUVLLE1BQU0sQ0FBQztJQUM3QkMsT0FBT04sRUFBRU8sTUFBTSxHQUFHRCxLQUFLLEdBQUdFLFFBQVE7SUFDbENDLFVBQVVULEVBQUVPLE1BQU0sR0FBR0MsUUFBUTtBQUMvQjtBQUVBLE9BQU8sTUFBTUUsNEJBQTRCO0lBQ3ZDLE1BQU1DLFdBQXFCO1FBQ3pCQyxNQUFNO1FBQ05DLFFBQVE7UUFDUkMsU0FBUyxPQUFPQztZQUNkLE1BQU14Qix3QkFBd0J3QjtZQUM5QixNQUFN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
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Endpoint } from "payload";
|
|
2
|
+
import { BetterAuthPluginOptions } from "../../../../types";
|
|
3
|
+
type InviteEndpointProps = {
|
|
4
|
+
roles: {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}[];
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
pluginOptions: BetterAuthPluginOptions;
|
|
10
|
+
};
|
|
11
|
+
export declare const getGenerateInviteUrlEndpoint: ({ roles, baseUrl, pluginOptions, }: InviteEndpointProps) => Endpoint;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=generate-invite-url.d.ts.map
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-invite-url.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,uBAAuB,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,oCAI1C,mBAAmB,KAAG,QAoExB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { status as httpStatus } from "http-status";
|
|
2
|
+
import { addDataAndFileToRequest } from "payload";
|
|
3
|
+
import { generateAdminInviteUrl } from "../../../../payload/utils/generate-admin-invite-url";
|
|
4
|
+
export const getGenerateInviteUrlEndpoint = ({ roles, baseUrl, pluginOptions })=>{
|
|
5
|
+
const endpoint = {
|
|
6
|
+
path: "/generate-invite-url",
|
|
7
|
+
method: "post",
|
|
8
|
+
handler: async (req)=>{
|
|
9
|
+
await addDataAndFileToRequest(req);
|
|
10
|
+
const body = req.data;
|
|
11
|
+
const generateAdminInviteUrlFn = pluginOptions?.adminInvitations?.generateInviteUrl ?? generateAdminInviteUrl;
|
|
12
|
+
if (!body) {
|
|
13
|
+
return Response.json({
|
|
14
|
+
message: "No body provided"
|
|
15
|
+
}, {
|
|
16
|
+
status: httpStatus.BAD_REQUEST
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (typeof body !== "object" || !("role" in body)) {
|
|
20
|
+
return Response.json({
|
|
21
|
+
message: "Invalid body"
|
|
22
|
+
}, {
|
|
23
|
+
status: httpStatus.BAD_REQUEST
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (!roles.some((role)=>role.value === body.role.value)) {
|
|
27
|
+
return Response.json({
|
|
28
|
+
message: "Invalid role"
|
|
29
|
+
}, {
|
|
30
|
+
status: httpStatus.BAD_REQUEST
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const token = crypto.randomUUID();
|
|
34
|
+
const inviteLink = generateAdminInviteUrlFn({
|
|
35
|
+
payload: req.payload,
|
|
36
|
+
token
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
await req.payload.create({
|
|
40
|
+
collection: pluginOptions.adminInvitations?.slug ?? "admin-invitations",
|
|
41
|
+
data: {
|
|
42
|
+
token,
|
|
43
|
+
role: body.role.value,
|
|
44
|
+
url: inviteLink
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const response = new Response(JSON.stringify({
|
|
48
|
+
message: "Invite link generated successfully",
|
|
49
|
+
inviteLink
|
|
50
|
+
}), {
|
|
51
|
+
status: 200
|
|
52
|
+
});
|
|
53
|
+
return response;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.error(error);
|
|
56
|
+
return Response.json({
|
|
57
|
+
message: "Error generating invite link"
|
|
58
|
+
}, {
|
|
59
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return endpoint;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9nZW5lcmF0ZS1pbnZpdGUtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRW5kcG9pbnQgfSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHsgc3RhdHVzIGFzIGh0dHBTdGF0dXMgfSBmcm9tIFwiaHR0cC1zdGF0dXNcIjtcbmltcG9ydCB7IEJldHRlckF1dGhQbHVnaW5PcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBhZGREYXRhQW5kRmlsZVRvUmVxdWVzdCB9IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUFkbWluSW52aXRlVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3BheWxvYWQvdXRpbHMvZ2VuZXJhdGUtYWRtaW4taW52aXRlLXVybFwiO1xuXG50eXBlIEludml0ZUVuZHBvaW50UHJvcHMgPSB7XG4gIHJvbGVzOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdO1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdlbmVyYXRlSW52aXRlVXJsRW5kcG9pbnQgPSAoe1xuICByb2xlcyxcbiAgYmFzZVVybCxcbiAgcGx1Z2luT3B0aW9ucyxcbn06IEludml0ZUVuZHBvaW50UHJvcHMpOiBFbmRwb2ludCA9PiB7XG4gIGNvbnN0IGVuZHBvaW50OiBFbmRwb2ludCA9IHtcbiAgICBwYXRoOiBcIi9nZW5lcmF0ZS1pbnZpdGUtdXJsXCIsXG4gICAgbWV0aG9kOiBcInBvc3RcIixcbiAgICBoYW5kbGVyOiBhc3luYyAocmVxKSA9PiB7XG4gICAgICBhd2FpdCBhZGREYXRhQW5kRmlsZVRvUmVxdWVzdChyZXEpO1xuICAgICAgY29uc3QgYm9keSA9IHJlcS5kYXRhIGFzIHsgcm9sZTogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfTtcbiAgICAgIGNvbnN0IGdlbmVyYXRlQWRtaW5JbnZpdGVVcmxGbiA9XG4gICAgICAgIHBsdWdpbk9wdGlvbnM/LmFkbWluSW52aXRhdGlvbnM/LmdlbmVyYXRlSW52aXRlVXJsID8/XG4gICAgICAgIGdlbmVyYXRlQWRtaW5JbnZpdGVVcmw7XG5cbiAgICAgIGlmICghYm9keSkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiTm8gYm9keSBwcm92aWRlZFwiIH0sXG4gICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuQkFEX1JFUVVFU1QgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09IFwib2JqZWN0XCIgfHwgIShcInJvbGVcIiBpbiBib2R5KSkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiSW52YWxpZCBib2R5XCIgfSxcbiAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5CQURfUkVRVUVTVCB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZS52YWx1ZSA9PT0gYm9keS5yb2xlLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiSW52YWxpZCByb2xlXCIgfSxcbiAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5CQURfUkVRVUVTVCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCB0b2tlbiA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICBjb25zdCBpbnZpdGVMaW5rID0gZ2VuZXJhdGVBZG1pbkludml0ZVVybEZuKHtcbiAgICAgICAgcGF5bG9hZDogcmVxLnBheWxvYWQsXG4gICAgICAgIHRva2VuLFxuICAgICAgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlcS5wYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgICAgY29sbGVjdGlvbjpcbiAgICAgICAgICAgIHBsdWdpbk9wdGlvbnMuYWRtaW5JbnZpdGF0aW9ucz8uc2x1ZyA/PyBcImFkbWluLWludml0YXRpb25zXCIsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICByb2xlOiBib2R5LnJvbGUudmFsdWUsXG4gICAgICAgICAgICB1cmw6IGludml0ZUxpbmssXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiSW52aXRlIGxpbmsgZ2VuZXJhdGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgaW52aXRlTGluayxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiRXJyb3IgZ2VuZXJhdGluZyBpbnZpdGUgbGlua1wiIH0sXG4gICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbmRwb2ludDtcbn07XG4iXSwibmFtZXMiOlsic3RhdHVzIiwiaHR0cFN0YXR1cyIsImFkZERhdGFBbmRGaWxlVG9SZXF1ZXN0IiwiZ2VuZXJhdGVBZG1pbkludml0ZVVybCIsImdldEdlbmVyYXRlSW52aXRlVXJsRW5kcG9pbnQiLCJyb2xlcyIsImJhc2VVcmwiLCJwbHVnaW5PcHRpb25zIiwiZW5kcG9pbnQiLCJwYXRoIiwibWV0aG9kIiwiaGFuZGxlciIsInJlcSIsImJvZHkiLCJkYXRhIiwiZ2VuZXJhdGVBZG1pbkludml0ZVVybEZuIiwiYWRtaW5JbnZpdGF0aW9ucyIsImdlbmVyYXRlSW52aXRlVXJsIiwiUmVzcG9uc2UiLCJqc29uIiwibWVzc2FnZSIsIkJBRF9SRVFVRVNUIiwic29tZSIsInJvbGUiLCJ2YWx1ZSIsInRva2VuIiwiY3J5cHRvIiwicmFuZG9tVVVJRCIsImludml0ZUxpbmsiLCJwYXlsb2FkIiwiY3JlYXRlIiwiY29sbGVjdGlvbiIsInNsdWciLCJ1cmwiLCJyZXNwb25zZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciIsImNvbnNvbGUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLFVBQVVDLFVBQVUsUUFBUSxjQUFjO0FBRW5ELFNBQVNDLHVCQUF1QixRQUFRLFVBQVU7QUFDbEQsU0FBU0Msc0JBQXNCLFFBQVEsc0RBQXNEO0FBUTdGLE9BQU8sTUFBTUMsK0JBQStCLENBQUMsRUFDM0NDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxhQUFhLEVBQ087SUFDcEIsTUFBTUMsV0FBcUI7UUFDekJDLE1BQU07UUFDTkMsUUFBUTtRQUNSQyxTQUFTLE9BQU9DO1lBQ2QsTUFBTVYsd0JBQXdCVTtZQUM5QixNQUFNQyxPQUFPRCxJQUFJRSxJQUFJO1lBQ3JCLE1BQU1DLDJCQUNKUixlQUFlUyxrQkFBa0JDLHFCQUNqQ2Q7WUFFRixJQUFJLENBQUNVLE1BQU07Z0JBQ1QsT0FBT0ssU0FBU0MsSUFBSSxDQUNsQjtvQkFBRUMsU0FBUztnQkFBbUIsR0FDOUI7b0JBQUVwQixRQUFRQyxXQUFXb0IsV0FBVztnQkFBQztZQUVyQztZQUVBLElBQUksT0FBT1IsU0FBUyxZQUFZLENBQUUsQ0FBQSxVQUFVQSxJQUFHLEdBQUk7Z0JBQ2pELE9BQU9LLFNBQVNDLElBQUksQ0FDbEI7b0JBQUVDLFNBQVM7Z0JBQWUsR0FDMUI7b0JBQUVwQixRQUFRQyxXQUFXb0IsV0FBVztnQkFBQztZQUVyQztZQUVBLElBQUksQ0FBQ2hCLE1BQU1pQixJQUFJLENBQUMsQ0FBQ0MsT0FBU0EsS0FBS0MsS0FBSyxLQUFLWCxLQUFLVSxJQUFJLENBQUNDLEtBQUssR0FBRztnQkFDekQsT0FBT04sU0FBU0MsSUFBSSxDQUNsQjtvQkFBRUMsU0FBUztnQkFBZSxHQUMxQjtvQkFBRXBCLFFBQVFDLFdBQVdvQixXQUFXO2dCQUFDO1lBRXJDO1lBQ0EsTUFBTUksUUFBUUMsT0FBT0MsVUFBVTtZQUMvQixNQUFNQyxhQUFhYix5QkFBeUI7Z0JBQzFDYyxTQUFTakIsSUFBSWlCLE9BQU87Z0JBQ3BCSjtZQUNGO1lBRUEsSUFBSTtnQkFDRixNQUFNYixJQUFJaUIsT0FBTyxDQUFDQyxNQUFNLENBQUM7b0JBQ3ZCQyxZQUNFeEIsY0FBY1MsZ0JBQWdCLEVBQUVnQixRQUFRO29CQUMxQ2xCLE1BQU07d0JBQ0pXO3dCQUNBRixNQUFNVixLQUFLVSxJQUFJLENBQUNDLEtBQUs7d0JBQ3JCUyxLQUFLTDtvQkFDUDtnQkFDRjtnQkFDQSxNQUFNTSxXQUFXLElBQUloQixTQUNuQmlCLEtBQUtDLFNBQVMsQ0FBQztvQkFDYmhCLFNBQVM7b0JBQ1RRO2dCQUNGLElBQ0E7b0JBQ0U1QixRQUFRO2dCQUNWO2dCQUVGLE9BQU9rQztZQUNULEVBQUUsT0FBT0csT0FBTztnQkFDZEMsUUFBUUQsS0FBSyxDQUFDQTtnQkFDZCxPQUFPbkIsU0FBU0MsSUFBSSxDQUNsQjtvQkFBRUMsU0FBUztnQkFBK0IsR0FDMUM7b0JBQUVwQixRQUFRQyxXQUFXc0MscUJBQXFCO2dCQUFDO1lBRS9DO1FBQ0Y7SUFDRjtJQUVBLE9BQU8vQjtBQUNULEVBQUUifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAW/D,eAAO,MAAM,gBAAgB,GAC3B,mBAAmB,0BAA0B,KAC5C,QAoHF,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { addDataAndFileToRequest } from "payload";
|
|
2
|
+
import { status as httpStatus } from "http-status";
|
|
3
|
+
import z from "zod";
|
|
4
|
+
import { getRequestCollection } from "../../../../helpers/get-requst-collection";
|
|
5
|
+
const loginSchema = z.object({
|
|
6
|
+
password: z.string(),
|
|
7
|
+
email: z.string().email().optional(),
|
|
8
|
+
username: z.string().optional()
|
|
9
|
+
});
|
|
10
|
+
export const getLoginEndpoint = (betterAuthOptions)=>{
|
|
11
|
+
const endpoint = {
|
|
12
|
+
path: "/login",
|
|
13
|
+
method: "post",
|
|
14
|
+
handler: async (req)=>{
|
|
15
|
+
await addDataAndFileToRequest(req);
|
|
16
|
+
const collection = getRequestCollection(req);
|
|
17
|
+
const { t } = req;
|
|
18
|
+
try {
|
|
19
|
+
const schema = loginSchema.safeParse(req.data);
|
|
20
|
+
if (!schema.success) {
|
|
21
|
+
return Response.json({
|
|
22
|
+
message: schema.error.message
|
|
23
|
+
}, {
|
|
24
|
+
status: httpStatus.BAD_REQUEST
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
console.log("schema.data", schema.data);
|
|
28
|
+
let { email, password, username } = schema.data;
|
|
29
|
+
// If the username looks like an email, it might be using
|
|
30
|
+
// the emailOrUsername field type, so we should set email accordingly
|
|
31
|
+
//TODO: CHECK IF THIS IS CORRECT, username could have an @??
|
|
32
|
+
if (username && !email && username.includes("@")) {
|
|
33
|
+
email = username;
|
|
34
|
+
username = undefined;
|
|
35
|
+
}
|
|
36
|
+
let result;
|
|
37
|
+
const baseURL = betterAuthOptions.baseURL;
|
|
38
|
+
const basePath = betterAuthOptions.basePath ?? "/api/auth";
|
|
39
|
+
const authApiURL = `${baseURL}${basePath}`;
|
|
40
|
+
if (username) {
|
|
41
|
+
const url = authApiURL + "/sign-in/username";
|
|
42
|
+
result = await fetch(url, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: {
|
|
45
|
+
"Content-Type": "application/json"
|
|
46
|
+
},
|
|
47
|
+
body: JSON.stringify({
|
|
48
|
+
username,
|
|
49
|
+
password
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
} else {
|
|
53
|
+
const url = authApiURL + "/sign-in/email";
|
|
54
|
+
result = await fetch(url, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
headers: {
|
|
57
|
+
"Content-Type": "application/json"
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
email,
|
|
61
|
+
password
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// console.log("result", result);
|
|
66
|
+
const ok = result.ok;
|
|
67
|
+
const responseData = await result.json();
|
|
68
|
+
if (!ok) {
|
|
69
|
+
// check if its
|
|
70
|
+
if (responseData.code === "EMAIL_NOT_VERIFIED") {
|
|
71
|
+
return new Response(JSON.stringify({
|
|
72
|
+
message: t("authentication:verifyYourEmail"),
|
|
73
|
+
sentEmailVerification: true,
|
|
74
|
+
requireEmailVerification: true
|
|
75
|
+
}), {
|
|
76
|
+
status: httpStatus.FORBIDDEN
|
|
77
|
+
});
|
|
78
|
+
} else {
|
|
79
|
+
return new Response(JSON.stringify({
|
|
80
|
+
message: "Failed to login"
|
|
81
|
+
}), {
|
|
82
|
+
status: httpStatus.UNAUTHORIZED
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Create the response with the appropriate data
|
|
87
|
+
const response = new Response(JSON.stringify({
|
|
88
|
+
message: t("authentication:passed"),
|
|
89
|
+
...responseData
|
|
90
|
+
}), {
|
|
91
|
+
status: 200
|
|
92
|
+
});
|
|
93
|
+
// Forward all Set-Cookie headers from the original response to our response
|
|
94
|
+
const setCookieHeader = result.headers.get("set-cookie");
|
|
95
|
+
if (setCookieHeader) {
|
|
96
|
+
// Set-Cookie headers are typically returned as a single string with multiple cookies separated by commas
|
|
97
|
+
const cookies = setCookieHeader.split(",");
|
|
98
|
+
cookies.forEach((cookie)=>{
|
|
99
|
+
response.headers.append("Set-Cookie", cookie.trim());
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return response;
|
|
103
|
+
} catch (error) {
|
|
104
|
+
return Response.json({
|
|
105
|
+
message: "Failed to login"
|
|
106
|
+
}, {
|
|
107
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return endpoint;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9sb2dpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGREYXRhQW5kRmlsZVRvUmVxdWVzdCwgdHlwZSBFbmRwb2ludCB9IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgeyBzdGF0dXMgYXMgaHR0cFN0YXR1cyB9IGZyb20gXCJodHRwLXN0YXR1c1wiO1xuaW1wb3J0IHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFJlcXVlc3RDb2xsZWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hlbHBlcnMvZ2V0LXJlcXVzdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBJbmZlckVycm9yQ29kZXMgfSBmcm9tIFwiYmV0dGVyLWF1dGhcIjtcblxuY29uc3QgbG9naW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHBhc3N3b3JkOiB6LnN0cmluZygpLFxuICBlbWFpbDogei5zdHJpbmcoKS5lbWFpbCgpLm9wdGlvbmFsKCksXG4gIHVzZXJuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldExvZ2luRW5kcG9pbnQgPSAoXG4gIGJldHRlckF1dGhPcHRpb25zOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9uc1xuKTogRW5kcG9pbnQgPT4ge1xuICBjb25zdCBlbmRwb2ludDogRW5kcG9pbnQgPSB7XG4gICAgcGF0aDogXCIvbG9naW5cIixcbiAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgIGhhbmRsZXI6IGFzeW5jIChyZXEpID0+IHtcbiAgICAgIGF3YWl0IGFkZERhdGFBbmRGaWxlVG9SZXF1ZXN0KHJlcSk7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gZ2V0UmVxdWVzdENvbGxlY3Rpb24ocmVxKTtcblxuICAgICAgY29uc3QgeyB0IH0gPSByZXE7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IGxvZ2luU2NoZW1hLnNhZmVQYXJzZShyZXEuZGF0YSk7XG5cbiAgICAgICAgaWYgKCFzY2hlbWEuc3VjY2Vzcykge1xuICAgICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgICAgeyBtZXNzYWdlOiBzY2hlbWEuZXJyb3IubWVzc2FnZSB9LFxuICAgICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuQkFEX1JFUVVFU1QgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhcInNjaGVtYS5kYXRhXCIsIHNjaGVtYS5kYXRhKTtcblxuICAgICAgICBsZXQgeyBlbWFpbCwgcGFzc3dvcmQsIHVzZXJuYW1lIH0gPSBzY2hlbWEuZGF0YTtcblxuICAgICAgICAvLyBJZiB0aGUgdXNlcm5hbWUgbG9va3MgbGlrZSBhbiBlbWFpbCwgaXQgbWlnaHQgYmUgdXNpbmdcbiAgICAgICAgLy8gdGhlIGVtYWlsT3JVc2VybmFtZSBmaWVsZCB0eXBlLCBzbyB3ZSBzaG91bGQgc2V0IGVtYWlsIGFjY29yZGluZ2x5XG4gICAgICAgIC8vVE9ETzogQ0hFQ0sgSUYgVEhJUyBJUyBDT1JSRUNULCB1c2VybmFtZSBjb3VsZCBoYXZlIGFuIEA/P1xuICAgICAgICBpZiAodXNlcm5hbWUgJiYgIWVtYWlsICYmIHVzZXJuYW1lLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgICAgIGVtYWlsID0gdXNlcm5hbWU7XG4gICAgICAgICAgdXNlcm5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBjb25zdCBiYXNlVVJMID0gYmV0dGVyQXV0aE9wdGlvbnMuYmFzZVVSTDtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBiZXR0ZXJBdXRoT3B0aW9ucy5iYXNlUGF0aCA/PyBcIi9hcGkvYXV0aFwiO1xuICAgICAgICBjb25zdCBhdXRoQXBpVVJMID0gYCR7YmFzZVVSTH0ke2Jhc2VQYXRofWA7XG5cbiAgICAgICAgaWYgKHVzZXJuYW1lKSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gYXV0aEFwaVVSTCArIFwiL3NpZ24taW4vdXNlcm5hbWVcIjtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gYXV0aEFwaVVSTCArIFwiL3NpZ24taW4vZW1haWxcIjtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJyZXN1bHRcIiwgcmVzdWx0KTtcbiAgICAgICAgY29uc3Qgb2sgPSByZXN1bHQub2s7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHJlc3VsdC5qc29uKCk7XG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAvLyBjaGVjayBpZiBpdHNcbiAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLmNvZGUgPT09IFwiRU1BSUxfTk9UX1ZFUklGSUVEXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0KFwiYXV0aGVudGljYXRpb246dmVyaWZ5WW91ckVtYWlsXCIpLFxuICAgICAgICAgICAgICAgIHNlbnRFbWFpbFZlcmlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXF1aXJlRW1haWxWZXJpZmljYXRpb246IHRydWUsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5GT1JCSURERU4gfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGxvZ2luXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5VTkFVVEhPUklaRUQgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgdGhlIHJlc3BvbnNlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRhdGFcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgbWVzc2FnZTogdChcImF1dGhlbnRpY2F0aW9uOnBhc3NlZFwiKSxcbiAgICAgICAgICAgIC4uLnJlc3BvbnNlRGF0YSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIEZvcndhcmQgYWxsIFNldC1Db29raWUgaGVhZGVycyBmcm9tIHRoZSBvcmlnaW5hbCByZXNwb25zZSB0byBvdXIgcmVzcG9uc2VcbiAgICAgICAgY29uc3Qgc2V0Q29va2llSGVhZGVyID0gcmVzdWx0LmhlYWRlcnMuZ2V0KFwic2V0LWNvb2tpZVwiKTtcbiAgICAgICAgaWYgKHNldENvb2tpZUhlYWRlcikge1xuICAgICAgICAgIC8vIFNldC1Db29raWUgaGVhZGVycyBhcmUgdHlwaWNhbGx5IHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZyB3aXRoIG11bHRpcGxlIGNvb2tpZXMgc2VwYXJhdGVkIGJ5IGNvbW1hc1xuICAgICAgICAgIGNvbnN0IGNvb2tpZXMgPSBzZXRDb29raWVIZWFkZXIuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgIGNvb2tpZXMuZm9yRWFjaCgoY29va2llKSA9PiB7XG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLmFwcGVuZChcIlNldC1Db29raWVcIiwgY29va2llLnRyaW0oKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFJlc3BvbnNlLmpzb24oXG4gICAgICAgICAgeyBtZXNzYWdlOiBcIkZhaWxlZCB0byBsb2dpblwiIH0sXG4gICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuSU5URVJOQUxfU0VSVkVSX0VSUk9SIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbmRwb2ludDtcbn07XG4iXSwibmFtZXMiOlsiYWRkRGF0YUFuZEZpbGVUb1JlcXVlc3QiLCJzdGF0dXMiLCJodHRwU3RhdHVzIiwieiIsImdldFJlcXVlc3RDb2xsZWN0aW9uIiwibG9naW5TY2hlbWEiLCJvYmplY3QiLCJwYXNzd29yZCIsInN0cmluZyIsImVtYWlsIiwib3B0aW9uYWwiLCJ1c2VybmFtZSIsImdldExvZ2luRW5kcG9pbnQiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsImVuZHBvaW50IiwicGF0aCIsIm1ldGhvZCIsImhhbmRsZXIiLCJyZXEiLCJjb2xsZWN0aW9uIiwidCIsInNjaGVtYSIsInNhZmVQYXJzZSIsImRhdGEiLCJzdWNjZXNzIiwiUmVzcG9uc2UiLCJqc29uIiwibWVzc2FnZSIsImVycm9yIiwiQkFEX1JFUVVFU1QiLCJjb25zb2xlIiwibG9nIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJyZXN1bHQiLCJiYXNlVVJMIiwiYmFzZVBhdGgiLCJhdXRoQXBpVVJMIiwidXJsIiwiZmV0Y2giLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJvayIsInJlc3BvbnNlRGF0YSIsImNvZGUiLCJzZW50RW1haWxWZXJpZmljYXRpb24iLCJyZXF1aXJlRW1haWxWZXJpZmljYXRpb24iLCJGT1JCSURERU4iLCJVTkFVVEhPUklaRUQiLCJyZXNwb25zZSIsInNldENvb2tpZUhlYWRlciIsImdldCIsImNvb2tpZXMiLCJzcGxpdCIsImZvckVhY2giLCJjb29raWUiLCJhcHBlbmQiLCJ0cmltIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSx1QkFBdUIsUUFBdUIsVUFBVTtBQUNqRSxTQUFTQyxVQUFVQyxVQUFVLFFBQVEsY0FBYztBQUVuRCxPQUFPQyxPQUFPLE1BQU07QUFDcEIsU0FBU0Msb0JBQW9CLFFBQVEsNENBQTRDO0FBR2pGLE1BQU1DLGNBQWNGLEVBQUVHLE1BQU0sQ0FBQztJQUMzQkMsVUFBVUosRUFBRUssTUFBTTtJQUNsQkMsT0FBT04sRUFBRUssTUFBTSxHQUFHQyxLQUFLLEdBQUdDLFFBQVE7SUFDbENDLFVBQVVSLEVBQUVLLE1BQU0sR0FB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-token.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,QAAQ,EAId,MAAM,SAAS,CAAC;AAIjB,eAAO,MAAM,uBAAuB,GAAI,UAAU,MAAM,KAAG,QAmH1D,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { setCookieCache } from "better-auth/cookies";
|
|
2
|
+
import { getFieldsToSign, refreshOperation } from "payload";
|
|
3
|
+
import { getPayloadAuth } from "../../../../lib/get-payload-auth";
|
|
4
|
+
export const getRefreshTokenEndpoint = (userSlug)=>{
|
|
5
|
+
const endpoint = {
|
|
6
|
+
path: "/refresh-token",
|
|
7
|
+
method: "post",
|
|
8
|
+
handler: async (req)=>{
|
|
9
|
+
const payload = await getPayloadAuth(req.payload.config);
|
|
10
|
+
const authContext = await payload.betterAuth?.$context;
|
|
11
|
+
const userCollection = payload.collections[userSlug];
|
|
12
|
+
if (!userCollection) {
|
|
13
|
+
return new Response(JSON.stringify({
|
|
14
|
+
message: "User collection not found"
|
|
15
|
+
}), {
|
|
16
|
+
status: 500
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (!payload.betterAuth || !authContext) {
|
|
20
|
+
return new Response(JSON.stringify({
|
|
21
|
+
message: "BetterAuth not initialized"
|
|
22
|
+
}), {
|
|
23
|
+
status: 500
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const sessionTokenName = authContext.authCookies.sessionToken.name;
|
|
27
|
+
const cookieHeader = req.headers.get("cookie") || "";
|
|
28
|
+
const hasSessionToken = cookieHeader.includes(`${sessionTokenName}=`);
|
|
29
|
+
if (!hasSessionToken) {
|
|
30
|
+
try {
|
|
31
|
+
const result = await refreshOperation({
|
|
32
|
+
collection: userCollection,
|
|
33
|
+
req
|
|
34
|
+
});
|
|
35
|
+
return new Response(JSON.stringify(result), {
|
|
36
|
+
status: 200
|
|
37
|
+
});
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error("Token refresh failed:", error);
|
|
40
|
+
return new Response(JSON.stringify({
|
|
41
|
+
message: "Token refresh failed"
|
|
42
|
+
}), {
|
|
43
|
+
status: 401
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const res = await payload.betterAuth.api.getSession({
|
|
48
|
+
headers: req.headers,
|
|
49
|
+
query: {
|
|
50
|
+
disableCookieCache: true
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (!res) {
|
|
54
|
+
return new Response(JSON.stringify({
|
|
55
|
+
message: "No current session"
|
|
56
|
+
}), {
|
|
57
|
+
status: 401
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const user = await payload.findByID({
|
|
61
|
+
collection: userSlug,
|
|
62
|
+
id: res.session.userId
|
|
63
|
+
});
|
|
64
|
+
if (!user) {
|
|
65
|
+
return new Response(JSON.stringify({
|
|
66
|
+
message: "No user found"
|
|
67
|
+
}), {
|
|
68
|
+
status: 401
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const cookieCacheFields = getFieldsToSign({
|
|
72
|
+
collectionConfig: userCollection?.config,
|
|
73
|
+
email: user.email,
|
|
74
|
+
user: user
|
|
75
|
+
});
|
|
76
|
+
const responseData = {
|
|
77
|
+
refreshedToken: null,
|
|
78
|
+
setCookie: !!authContext.options.session?.cookieCache?.enabled,
|
|
79
|
+
strategy: "better-auth",
|
|
80
|
+
user: {
|
|
81
|
+
...user,
|
|
82
|
+
collection: userSlug
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const response = new Response(JSON.stringify(responseData), {
|
|
86
|
+
status: 200
|
|
87
|
+
});
|
|
88
|
+
const ctx = {
|
|
89
|
+
context: authContext,
|
|
90
|
+
setCookie (name, value, options) {
|
|
91
|
+
const path = options?.path || "/";
|
|
92
|
+
const maxAge = options?.maxAge ? `; Max-Age=${options.maxAge}` : "";
|
|
93
|
+
const httpOnly = options?.httpOnly ? "; HttpOnly" : "";
|
|
94
|
+
const secure = options?.secure ? "; Secure" : "";
|
|
95
|
+
const sameSite = options?.sameSite ? `; SameSite=${options.sameSite}` : "; SameSite=Lax";
|
|
96
|
+
response.headers.set("Set-Cookie", `${name}=${value}; Path=${path}${maxAge}${httpOnly}${secure}${sameSite}`);
|
|
97
|
+
return name;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
await setCookieCache(ctx, {
|
|
101
|
+
session: res.session,
|
|
102
|
+
user: cookieCacheFields
|
|
103
|
+
});
|
|
104
|
+
return response;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return endpoint;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9yZWZyZXNoLXRva2VuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNldENvb2tpZUNhY2hlIH0gZnJvbSBcImJldHRlci1hdXRoL2Nvb2tpZXNcIjtcbmltcG9ydCB7XG4gIENvbGxlY3Rpb25TbHVnLFxuICB0eXBlIEVuZHBvaW50LFxuICBnZXRGaWVsZHNUb1NpZ24sXG4gIHJlZnJlc2hPcGVyYXRpb24sXG4gIFVzZXIsXG59IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgeyBHZW5lcmljRW5kcG9pbnRDb250ZXh0IH0gZnJvbSBcImJldHRlci1hdXRoL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRQYXlsb2FkQXV0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi9saWIvZ2V0LXBheWxvYWQtYXV0aFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQgPSAodXNlclNsdWc6IHN0cmluZyk6IEVuZHBvaW50ID0+IHtcbiAgY29uc3QgZW5kcG9pbnQ6IEVuZHBvaW50ID0ge1xuICAgIHBhdGg6IFwiL3JlZnJlc2gtdG9rZW5cIixcbiAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgIGhhbmRsZXI6IGFzeW5jIChyZXEpID0+IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBnZXRQYXlsb2FkQXV0aChyZXEucGF5bG9hZC5jb25maWcpO1xuICAgICAgY29uc3QgYXV0aENvbnRleHQgPSBhd2FpdCBwYXlsb2FkLmJldHRlckF1dGg/LiRjb250ZXh0O1xuICAgICAgY29uc3QgdXNlckNvbGxlY3Rpb24gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3VzZXJTbHVnXTtcblxuICAgICAgaWYgKCF1c2VyQ29sbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHsgbWVzc2FnZTogXCJVc2VyIGNvbGxlY3Rpb24gbm90IGZvdW5kXCIgfSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXBheWxvYWQuYmV0dGVyQXV0aCB8fCAhYXV0aENvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IG1lc3NhZ2U6IFwiQmV0dGVyQXV0aCBub3QgaW5pdGlhbGl6ZWRcIiB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0dXM6IDUwMCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb25Ub2tlbk5hbWUgPSBhdXRoQ29udGV4dC5hdXRoQ29va2llcy5zZXNzaW9uVG9rZW4ubmFtZTtcbiAgICAgIGNvbnN0IGNvb2tpZUhlYWRlciA9IHJlcS5oZWFkZXJzLmdldChcImNvb2tpZVwiKSB8fCBcIlwiO1xuICAgICAgY29uc3QgaGFzU2Vzc2lvblRva2VuID0gY29va2llSGVhZGVyLmluY2x1ZGVzKGAke3Nlc3Npb25Ub2tlbk5hbWV9PWApO1xuXG4gICAgICBpZiAoIWhhc1Nlc3Npb25Ub2tlbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlZnJlc2hPcGVyYXRpb24oe1xuICAgICAgICAgICAgY29sbGVjdGlvbjogdXNlckNvbGxlY3Rpb24sXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShyZXN1bHQpLCB7IHN0YXR1czogMjAwIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUb2tlbiByZWZyZXNoIGZhaWxlZDpcIiwgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7IG1lc3NhZ2U6IFwiVG9rZW4gcmVmcmVzaCBmYWlsZWRcIiB9KSxcbiAgICAgICAgICAgIHsgc3RhdHVzOiA0MDEgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgcGF5bG9hZC5iZXR0ZXJBdXRoLmFwaS5nZXRTZXNzaW9uKHtcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIHF1ZXJ5OiB7IGRpc2FibGVDb29raWVDYWNoZTogdHJ1ZSB9LFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyBtZXNzYWdlOiBcIk5vIGN1cnJlbnQgc2Vzc2lvblwiIH0pLCB7XG4gICAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgIGNvbGxlY3Rpb246IHVzZXJTbHVnIGFzIHN0cmluZyxcbiAgICAgICAgaWQ6IHJlcy5zZXNzaW9uLnVzZXJJZCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IG1lc3NhZ2U6IFwiTm8gdXNlciBmb3VuZFwiIH0pLCB7XG4gICAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb29raWVDYWNoZUZpZWxkcyA9IGdldEZpZWxkc1RvU2lnbih7XG4gICAgICAgIGNvbGxlY3Rpb25Db25maWc6IHVzZXJDb2xsZWN0aW9uPy5jb25maWcsXG4gICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICB1c2VyOiB1c2VyIGFzIFVzZXIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0ge1xuICAgICAgICByZWZyZXNoZWRUb2tlbjogbnVsbCxcbiAgICAgICAgc2V0Q29va2llOiAhIWF1dGhDb250ZXh0Lm9wdGlvbnMuc2Vzc2lvbj8uY29va2llQ2FjaGU/LmVuYWJsZWQsXG4gICAgICAgIHN0cmF0ZWd5OiBcImJldHRlci1hdXRoXCIsXG4gICAgICAgIHVzZXI6IHsgLi4udXNlciwgY29sbGVjdGlvbjogdXNlclNsdWcgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YSksIHtcbiAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3R4ID0ge1xuICAgICAgICBjb250ZXh0OiBhdXRoQ29udGV4dCxcbiAgICAgICAgc2V0Q29va2llKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IG9wdGlvbnM/LnBhdGggfHwgXCIvXCI7XG4gICAgICAgICAgY29uc3QgbWF4QWdlID0gb3B0aW9ucz8ubWF4QWdlID8gYDsgTWF4LUFnZT0ke29wdGlvbnMubWF4QWdlfWAgOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IGh0dHBPbmx5ID0gb3B0aW9ucz8uaHR0cE9ubHkgPyBcIjsgSHR0cE9ubHlcIiA6IFwiXCI7XG4gICAgICAgICAgY29uc3Qgc2VjdXJlID0gb3B0aW9ucz8uc2VjdXJlID8gXCI7IFNlY3VyZVwiIDogXCJcIjtcbiAgICAgICAgICBjb25zdCBzYW1lU2l0ZSA9IG9wdGlvbnM/LnNhbWVTaXRlXG4gICAgICAgICAgICA/IGA7IFNhbWVTaXRlPSR7b3B0aW9ucy5zYW1lU2l0ZX1gXG4gICAgICAgICAgICA6IFwiOyBTYW1lU2l0ZT1MYXhcIjtcblxuICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFxuICAgICAgICAgICAgXCJTZXQtQ29va2llXCIsXG4gICAgICAgICAgICBgJHtuYW1lfT0ke3ZhbHVlfTsgUGF0aD0ke3BhdGh9JHttYXhBZ2V9JHtodHRwT25seX0ke3NlY3VyZX0ke3NhbWVTaXRlfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9LFxuICAgICAgfSBhcyBHZW5lcmljRW5kcG9pbnRDb250ZXh0O1xuXG4gICAgICBhd2FpdCBzZXRDb29raWVDYWNoZShjdHgsIHtcbiAgICAgICAgc2Vzc2lvbjogcmVzLnNlc3Npb24sXG4gICAgICAgIHVzZXI6IGNvb2tpZUNhY2hlRmllbGRzIGFzIGFueSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gZW5kcG9pbnQ7XG59O1xuIl0sIm5hbWVzIjpbInNldENvb2tpZUNhY2hlIiwiZ2V0RmllbGRzVG9TaWduIiwicmVmcmVzaE9wZXJhdGlvbiIsImdldFBheWxvYWRBdXRoIiwiZ2V0UmVmcmVzaFRva2VuRW5kcG9pbnQiLCJ1c2VyU2x1ZyIsImVuZHBvaW50IiwicGF0aCIsIm1ldGhvZCIsImhhbmRsZXIiLCJyZXEiLCJwYXlsb2FkIiwiY29uZmlnIiwiYXV0aENvbnRleHQiLCJiZXR0ZXJBdXRoIiwiJGNvbnRleHQiLCJ1c2VyQ29sbGVjdGlvbiIsImNvbGxlY3Rpb25zIiwiUmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5IiwibWVzc2FnZSIsInN0YXR1cyIsInNlc3Npb25Ub2tlbk5hbWUiLCJhdXRoQ29va2llcyIsInNlc3Npb25Ub2tlbiIsIm5hbWUiLCJjb29raWVIZWFkZXIiLCJoZWFkZXJzIiwiZ2V0IiwiaGFzU2Vzc2lvblRva2VuIiwiaW5jbHVkZXMiLCJyZXN1bHQiLCJjb2xsZWN0aW9uIiwiZXJyb3IiLCJjb25zb2xlIiwicmVzIiwiYXBpIiwiZ2V0U2Vzc2lvbiIsInF1ZXJ5IiwiZGlzYWJsZUNvb2tpZUNhY2hlIiwidXNlciIsImZpbmRCeUlEIiwiaWQiLCJzZXNzaW9uIiwidXNlcklkIiwiY29va2llQ2FjaGVGaWVsZHMiLCJjb2xsZWN0aW9uQ29uZmlnIiwiZW1haWwiLCJyZXNwb25zZURhdGEiLCJyZWZyZXNoZWRUb2tlbiIsInNldENvb2tpZSIsIm9wdGlvbnMiLCJjb29raWVDYWNoZSIsImVuYWJsZWQiLCJzdHJhdGVneSIsInJlc3BvbnNlIiwiY3R4IiwiY29udGV4dCIsInZhbHVlIiwibWF4QWdlIiwiaHR0cE9ubHkiLCJzZWN1cmUiLCJzYW1lU2l0ZSIsInNldCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUdFQyxlQUFlLEVBQ2ZDLGdCQUFnQixRQUVYLFVBQVU7QUFFakIsU0FBU0MsY0FBYyxRQUFRLG1DQUFtQztBQUVsRSxPQUFPLE1BQU1DLDBCQUEwQixDQUFDQztJQUN0QyxNQUFNQyxXQUFxQjtRQUN6QkMsTUFBTTtRQUNOQyxRQUFRO1FBQ1JDLFNBQVMsT0FBT0M7WUFDZCxNQUFNQyxVQUFVLE1BQU1SLGVBQWVPLElBQUlDLE9BQU8sQ0FBQ0MsTUFBTTtZQUN2RCxNQUFNQyxjQUFjLE1BQU1GLFFBQVFHLFVBQVUsRUFBRUM7WUFDOUMsTUFBTUMsaUJBQWlCTCxRQUFRTSxXQUFXLENBQUNaLFNBQVM7WUFFcEQsSUFBSSxDQUFDVyxnQkFBZ0I7Z0JBQ25CLE9BQU8sSUFBSUUsU0FDVEMsS0FBS0MsU0FBUyxDQUFDO29CQUFFQyxTQUFTO2dCQUE0QixJQUN0RDtvQkFDRUMsUUFBUTtnQkFDVjtZQUVKO1lBRUEsSUFBSSxDQUFDWCxRQUFRRyxVQUFVLElBQUksQ0FBQ0QsYUFBYTtnQkFDdkMsT0FBTyxJQUFJSyxTQUNUQyxLQUFLQyxTQUFTLENBQUM7b0JBQUVDLFNBQVM7Z0JBQTZCLElBQ3ZEO29CQUNFQyxRQUFRO2dCQUNWO1lBRUo7WUFFQSxNQUFNQyxtQkFBbUJWLFlBQVlXLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDQyxJQUFJO1lBQ2xFLE1BQU1DLGVBQWVqQixJ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
|