payload-auth 1.1.1 → 1.2.0
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/authjs/index.d.ts.map +1 -1
- package/dist/authjs/index.js +2 -2
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +1 -1
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -1
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +3 -3
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -1
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +4 -4
- package/dist/better-auth/adapter/generate-schema/index.js +5 -5
- package/dist/better-auth/adapter/generate-schema/utils.js +1 -1
- 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 +53 -53
- package/dist/better-auth/adapter/transform/index.d.ts +5 -5
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +69 -69
- package/dist/better-auth/adapter/types.d.ts +3 -3
- package/dist/better-auth/adapter/types.d.ts.map +1 -1
- package/dist/better-auth/adapter/types.js +1 -1
- package/dist/better-auth/index.js +4 -4
- package/dist/better-auth/plugin/{lib/constants.d.ts → constants.d.ts} +12 -6
- package/dist/better-auth/plugin/constants.d.ts.map +1 -0
- package/dist/better-auth/plugin/constants.js +62 -0
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +2 -2
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-username-plugin.js +2 -2
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +1 -1
- 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 +7 -7
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-admin-access.js +2 -2
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-all-roles.js +4 -4
- 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 +1 -1
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-requst-collection.js +2 -2
- package/dist/better-auth/plugin/helpers/index.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/index.js +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +3 -3
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +4 -3
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +2 -2
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/serialize-cookie.js +33 -33
- package/dist/better-auth/plugin/index.d.ts +6 -6
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +19 -53
- package/dist/better-auth/plugin/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 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +6 -6
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +47 -47
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +33 -24
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +77 -80
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/index.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +30 -30
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +13 -13
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.js +22 -22
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +33 -33
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +40 -40
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +20 -20
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +21 -21
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +37 -37
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +33 -33
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +29 -29
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.js +13 -13
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +17 -17
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +8 -8
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +3 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +12 -11
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +19 -18
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +28 -6
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +9 -8
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.js +34 -30
- package/dist/better-auth/plugin/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 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +7 -6
- package/dist/better-auth/plugin/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 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +11 -11
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +2 -2
- package/dist/better-auth/plugin/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 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +3 -3
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +1 -1
- package/dist/better-auth/plugin/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 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +9 -9
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +84 -94
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +7 -7
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +9 -9
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +17 -17
- 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 +1 -1
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts +2 -2
- 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 +7 -7
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +4 -4
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +12 -12
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +10 -11
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +15 -16
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/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 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +7 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +7 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +4 -4
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +18 -18
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +58 -40
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +2 -3
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts +3 -3
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.js +7 -9
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.scss +4 -1
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +1 -1
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/logout-button.js +7 -9
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +1 -1
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js +1 -1
- package/dist/better-auth/plugin/payload/components/token-field.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/token-field.js +3 -3
- package/dist/better-auth/plugin/payload/exports/client.d.ts +5 -6
- package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/client.js +2 -3
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +6 -9
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +5 -8
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +6 -5
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts +3 -3
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-metadata.js +18 -18
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +18 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +192 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +11 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +126 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +16 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +190 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +12 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +114 -0
- package/dist/better-auth/plugin/payload/views/{create-first-admin → admin-signup}/index.scss +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +4 -7
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +72 -100
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +6 -6
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +23 -34
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +4 -2
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +88 -53
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +51 -56
- package/dist/better-auth/plugin/types.d.ts +37 -19
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/better-auth/types.js +2 -2
- package/dist/clerk/admin-ui.js +4 -4
- package/dist/clerk/index.js +5 -5
- package/dist/clerk/plugin/auth-strategy.js +4 -4
- package/dist/clerk/plugin/collections/users/access.js +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.js +9 -9
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.js +4 -4
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.js +5 -4
- package/dist/clerk/plugin/collections/users/fields.js +1 -1
- package/dist/clerk/plugin/collections/users/index.d.ts +1 -1
- package/dist/clerk/plugin/collections/users/index.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/index.js +7 -7
- package/dist/clerk/plugin/components/after-login-form.js +4 -4
- package/dist/clerk/plugin/components/logout-button.d.ts.map +1 -1
- package/dist/clerk/plugin/components/logout-button.js +17 -17
- 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/plugin/components/sync-clerk-users-button.js +8 -8
- package/dist/clerk/plugin.d.ts +4 -4
- package/dist/clerk/plugin.d.ts.map +1 -1
- package/dist/clerk/plugin.js +4 -4
- package/dist/clerk/types.js +1 -1
- package/dist/clerk/utils/clerk-user.d.ts.map +1 -1
- package/dist/clerk/utils/clerk-user.js +1 -1
- package/dist/clerk/utils/index.js +4 -4
- package/dist/clerk/utils/load-clerk-instance.d.ts.map +1 -1
- package/dist/clerk/utils/load-clerk-instance.js +2 -2
- package/dist/clerk/utils/svix.d.ts +1 -1
- package/dist/clerk/utils/svix.d.ts.map +1 -1
- package/dist/clerk/utils/svix.js +2 -2
- package/dist/clerk/utils/user.d.ts.map +1 -1
- package/dist/clerk/utils/user.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/kinde/index.d.ts.map +1 -1
- package/dist/kinde/index.js +2 -2
- package/dist/{better-auth/plugin/payload → shared}/components/icons.d.ts +3 -3
- package/dist/shared/components/icons.d.ts.map +1 -0
- package/dist/shared/components/icons.js +437 -0
- package/dist/shared/components/logo.d.ts +4 -0
- package/dist/shared/components/logo.d.ts.map +1 -0
- package/dist/shared/components/logo.js +24 -0
- package/dist/shared/form/components/submit.d.ts +8 -0
- package/dist/shared/form/components/submit.d.ts.map +1 -0
- package/dist/shared/form/components/submit.js +21 -0
- package/dist/shared/form/fields/text-field.d.ts +8 -0
- package/dist/shared/form/fields/text-field.d.ts.map +1 -0
- package/dist/shared/form/fields/text-field.js +41 -0
- package/dist/shared/form/index.d.ts +34 -0
- package/dist/shared/form/index.d.ts.map +1 -0
- package/dist/shared/form/index.js +17 -0
- package/dist/shared/form/ui/header/index.d.ts +9 -0
- package/dist/shared/form/ui/header/index.d.ts.map +1 -0
- package/dist/shared/form/ui/header/index.js +24 -0
- package/dist/shared/form/ui/index.d.ts +31 -0
- package/dist/shared/form/ui/index.d.ts.map +1 -0
- package/dist/shared/form/ui/index.js +60 -0
- package/dist/shared/form/ui/index.scss +12 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/payload/fields/field-copy-button/index.css +47 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts +4 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.css +14 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +4 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
- package/dist/shared/payload/fields/index.d.ts +3 -0
- package/dist/shared/payload/fields/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/index.js +4 -0
- package/dist/shared/utils/regex.d.ts +3 -0
- package/dist/shared/utils/regex.d.ts.map +1 -0
- package/dist/shared/utils/regex.js +4 -0
- package/dist/shared/utils/try-catch.d.ts +12 -0
- package/dist/shared/utils/try-catch.d.ts.map +1 -0
- package/dist/shared/utils/try-catch.js +17 -0
- package/package.json +7 -5
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts +0 -14
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts.map +0 -1
- package/dist/better-auth/plugin/helpers/get-admin-routes.js +0 -6
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.js +0 -96
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.js +0 -115
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.js +0 -62
- package/dist/better-auth/plugin/lib/constants.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/constants.js +0 -56
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts +0 -9
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/form-header/index.js +0 -23
- package/dist/better-auth/plugin/payload/components/icons.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/icons.js +0 -437
- package/dist/better-auth/plugin/payload/components/logo.d.ts +0 -4
- package/dist/better-auth/plugin/payload/components/logo.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/logo.js +0 -24
- package/dist/better-auth/plugin/payload/components/styles.css +0 -73
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts +0 -12
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/admin-invite/client.js +0 -92
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts +0 -11
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/admin-invite/index.js +0 -84
- package/dist/better-auth/plugin/payload/views/admin-invite/index.scss +0 -25
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts +0 -14
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.js +0 -95
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts +0 -12
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.js +0 -144
- package/dist/better-auth/plugin/payload/views/forgot-password/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts +0 -5
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/inactivity/index.js +0 -12
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts +0 -9
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.js +0 -54
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.js +0 -121
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.scss +0 -31
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts +0 -56
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.js +0 -3
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts +0 -17
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/index.js +0 -137
- package/dist/better-auth/plugin/payload/views/login/form/index.scss +0 -23
- package/dist/better-auth/plugin/payload/views/login/index.d.ts +0 -11
- package/dist/better-auth/plugin/payload/views/login/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/index.js +0 -98
- package/dist/better-auth/plugin/payload/views/login/index.scss +0 -10
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts +0 -8
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/logout/client.js +0 -76
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts +0 -8
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/logout/index.js +0 -14
- package/dist/better-auth/plugin/payload/views/logout/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.scss +0 -9
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts +0 -3
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.js +0 -11
- /package/dist/{better-auth/plugin/payload/components/form-header → shared/form/ui/header}/index.scss +0 -0
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Forgot from "../views/forgot-password";
|
|
5
|
-
import AdminInvite from "../views/admin-invite";
|
|
6
|
-
import Inactivity from "../views/inactivity";
|
|
1
|
+
import AdminSignup from "../views/admin-signup";
|
|
2
|
+
import AdminLogin from "../views/admin-login";
|
|
3
|
+
import ForgotPassword from "../views/forgot-password";
|
|
7
4
|
import ResetPassword from "../views/reset-password";
|
|
8
5
|
import RSCRedirect from "../components/rsc-redirect";
|
|
9
|
-
export {
|
|
6
|
+
export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect };
|
|
10
7
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL3JzYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWRtaW5TaWdudXAgZnJvbSAnLi4vdmlld3MvYWRtaW4tc2lnbnVwJ1xuaW1wb3J0IEFkbWluTG9naW4gZnJvbSAnLi4vdmlld3MvYWRtaW4tbG9naW4nXG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvZm9yZ290LXBhc3N3b3JkJ1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvcmVzZXQtcGFzc3dvcmQnXG5pbXBvcnQgUlNDUmVkaXJlY3QgZnJvbSAnLi4vY29tcG9uZW50cy9yc2MtcmVkaXJlY3QnXG5cbmV4cG9ydCB7IEFkbWluU2lnbnVwLCBBZG1pbkxvZ2luLCBGb3Jnb3RQYXNzd29yZCwgUmVzZXRQYXNzd29yZCwgUlNDUmVkaXJlY3QgfVxuIl0sIm5hbWVzIjpbIkFkbWluU2lnbnVwIiwiQWRtaW5Mb2dpbiIsIkZvcmdvdFBhc3N3b3JkIiwiUmVzZXRQYXNzd29yZCIsIlJTQ1JlZGlyZWN0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxpQkFBaUIsd0JBQXVCO0FBQy9DLE9BQU9DLGdCQUFnQix1QkFBc0I7QUFDN0MsT0FBT0Msb0JBQW9CLDJCQUEwQjtBQUNyRCxPQUFPQyxtQkFBbUIsMEJBQXlCO0FBQ25ELE9BQU9DLGlCQUFpQiw2QkFBNEI7QUFFcEQsU0FBU0osV0FBVyxFQUFFQyxVQUFVLEVBQUVDLGNBQWMsRUFBRUMsYUFBYSxFQUFFQyxXQUFXLEdBQUUifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-admin-invite-url.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/generate-admin-invite-url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-admin-invite-url.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/generate-admin-invite-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAE1E,eAAO,MAAM,sBAAsB,EAAE,wBAKpC,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { adminRoutes } from "../../constants";
|
|
2
2
|
export const generateAdminInviteUrl = ({ payload, token })=>{
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
if (!payload?.config?.serverURL) {
|
|
4
|
+
payload.logger.warn('payload.config.serverURL is not set. Set it to generate a full URL for the admin invite link.');
|
|
5
|
+
}
|
|
6
|
+
return `${payload.getAdminURL()}${adminRoutes.adminSignup}?token=${token}`;
|
|
6
7
|
};
|
|
7
8
|
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZW5lcmF0ZS1hZG1pbi1pbnZpdGUtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkbWluUm91dGVzIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZUFkbWluSW52aXRlVXJsRm4gfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQWRtaW5JbnZpdGVVcmw6IEdlbmVyYXRlQWRtaW5JbnZpdGVVcmxGbiA9ICh7IHBheWxvYWQsIHRva2VuIH0pID0+IHtcbiAgaWYgKCFwYXlsb2FkPy5jb25maWc/LnNlcnZlclVSTCkge1xuICAgIHBheWxvYWQubG9nZ2VyLndhcm4oJ3BheWxvYWQuY29uZmlnLnNlcnZlclVSTCBpcyBub3Qgc2V0LiBTZXQgaXQgdG8gZ2VuZXJhdGUgYSBmdWxsIFVSTCBmb3IgdGhlIGFkbWluIGludml0ZSBsaW5rLicpXG4gIH1cbiAgcmV0dXJuIGAke3BheWxvYWQuZ2V0QWRtaW5VUkwoKX0ke2FkbWluUm91dGVzLmFkbWluU2lnbnVwfT90b2tlbj0ke3Rva2VufWBcbn1cbiJdLCJuYW1lcyI6WyJhZG1pblJvdXRlcyIsImdlbmVyYXRlQWRtaW5JbnZpdGVVcmwiLCJwYXlsb2FkIiwidG9rZW4iLCJjb25maWciLCJzZXJ2ZXJVUkwiLCJsb2dnZXIiLCJ3YXJuIiwiZ2V0QWRtaW5VUkwiLCJhZG1pblNpZ251cCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxRQUFRLGtCQUFnQztBQUc1RCxPQUFPLE1BQU1DLHlCQUFtRCxDQUFDLEVBQUVDLE9BQU8sRUFBRUMsS0FBSyxFQUFFO0lBQ2pGLElBQUksQ0FBQ0QsU0FBU0UsUUFBUUMsV0FBVztRQUMvQkgsUUFBUUksTUFBTSxDQUFDQyxJQUFJLENBQUM7SUFDdEI7SUFDQSxPQUFPLEdBQUdMLFFBQVFNLFdBQVcsS0FBS1IsWUFBWVMsV0FBVyxDQUFDLE9BQU8sRUFBRU4sT0FBTztBQUM1RSxFQUFDIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Metadata } from
|
|
2
|
-
import type { MetaConfig, SanitizedConfig } from
|
|
3
|
-
import type { I18nClient } from
|
|
1
|
+
import type { Metadata } from 'next';
|
|
2
|
+
import type { MetaConfig, SanitizedConfig } from 'payload';
|
|
3
|
+
import type { I18nClient } from '@payloadcms/translations';
|
|
4
4
|
export declare const generateMetadata: (args: {
|
|
5
5
|
serverURL: string;
|
|
6
6
|
} & MetaConfig) => Promise<Metadata>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/generate-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"generate-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/generate-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAW1D,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,KAAG,OAAO,CAAC,QAAQ,CA6EjG,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { payloadFaviconDark, payloadFaviconLight, staticOGImage } from "@payloadcms/ui/assets";
|
|
2
2
|
import * as qs from "qs-esm";
|
|
3
3
|
const defaultOpenGraph = {
|
|
4
|
-
description:
|
|
5
|
-
siteName:
|
|
6
|
-
title:
|
|
4
|
+
description: 'Payload is a headless CMS and application framework built with TypeScript, Node.js, and React.',
|
|
5
|
+
siteName: 'Payload App',
|
|
6
|
+
title: 'Payload App'
|
|
7
7
|
};
|
|
8
8
|
export const generateMetadata = async (args)=>{
|
|
9
9
|
const { defaultOGImageType, serverURL, titleSuffix, ...rest } = args;
|
|
@@ -14,27 +14,27 @@ export const generateMetadata = async (args)=>{
|
|
|
14
14
|
*/ const incomingMetadata = rest;
|
|
15
15
|
const icons = incomingMetadata.icons || [
|
|
16
16
|
{
|
|
17
|
-
type:
|
|
18
|
-
rel:
|
|
19
|
-
sizes:
|
|
20
|
-
url: typeof payloadFaviconDark ===
|
|
17
|
+
type: 'image/png',
|
|
18
|
+
rel: 'icon',
|
|
19
|
+
sizes: '32x32',
|
|
20
|
+
url: typeof payloadFaviconDark === 'object' ? payloadFaviconDark?.src : payloadFaviconDark
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
type:
|
|
24
|
-
media:
|
|
25
|
-
rel:
|
|
26
|
-
sizes:
|
|
27
|
-
url: typeof payloadFaviconLight ===
|
|
23
|
+
type: 'image/png',
|
|
24
|
+
media: '(prefers-color-scheme: dark)',
|
|
25
|
+
rel: 'icon',
|
|
26
|
+
sizes: '32x32',
|
|
27
|
+
url: typeof payloadFaviconLight === 'object' ? payloadFaviconLight?.src : payloadFaviconLight
|
|
28
28
|
}
|
|
29
29
|
];
|
|
30
30
|
const metaTitle = [
|
|
31
31
|
incomingMetadata.title,
|
|
32
32
|
titleSuffix
|
|
33
|
-
].filter(Boolean).join(
|
|
34
|
-
const ogTitle = `${typeof incomingMetadata.openGraph?.title ===
|
|
33
|
+
].filter(Boolean).join(' ');
|
|
34
|
+
const ogTitle = `${typeof incomingMetadata.openGraph?.title === 'string' ? incomingMetadata.openGraph.title : incomingMetadata.title} ${titleSuffix}`;
|
|
35
35
|
const mergedOpenGraph = {
|
|
36
36
|
...defaultOpenGraph || {},
|
|
37
|
-
...defaultOGImageType ===
|
|
37
|
+
...defaultOGImageType === 'dynamic' ? {
|
|
38
38
|
images: [
|
|
39
39
|
{
|
|
40
40
|
alt: ogTitle,
|
|
@@ -49,12 +49,12 @@ export const generateMetadata = async (args)=>{
|
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
} : {},
|
|
52
|
-
...defaultOGImageType ===
|
|
52
|
+
...defaultOGImageType === 'static' ? {
|
|
53
53
|
images: [
|
|
54
54
|
{
|
|
55
55
|
alt: ogTitle,
|
|
56
56
|
height: 480,
|
|
57
|
-
url: typeof staticOGImage ===
|
|
57
|
+
url: typeof staticOGImage === 'object' ? staticOGImage?.src : staticOGImage,
|
|
58
58
|
width: 640
|
|
59
59
|
}
|
|
60
60
|
]
|
|
@@ -71,4 +71,4 @@ export const generateMetadata = async (args)=>{
|
|
|
71
71
|
});
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZW5lcmF0ZS1tZXRhZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1ldGFkYXRhIH0gZnJvbSAnbmV4dCdcbmltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ25leHQvZGlzdC9saWIvbWV0YWRhdGEvdHlwZXMvbWV0YWRhdGEtdHlwZXMuanMnXG5pbXBvcnQgdHlwZSB7IE1ldGFDb25maWcsIFNhbml0aXplZENvbmZpZyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEkxOG5DbGllbnQgfSBmcm9tICdAcGF5bG9hZGNtcy90cmFuc2xhdGlvbnMnXG5cbmltcG9ydCB7IHBheWxvYWRGYXZpY29uRGFyaywgcGF5bG9hZEZhdmljb25MaWdodCwgc3RhdGljT0dJbWFnZSB9IGZyb20gJ0BwYXlsb2FkY21zL3VpL2Fzc2V0cydcbmltcG9ydCAqIGFzIHFzIGZyb20gJ3FzLWVzbSdcblxuY29uc3QgZGVmYXVsdE9wZW5HcmFwaDogTWV0YWRhdGFbJ29wZW5HcmFwaCddID0ge1xuICBkZXNjcmlwdGlvbjogJ1BheWxvYWQgaXMgYSBoZWFkbGVzcyBDTVMgYW5kIGFwcGxpY2F0aW9uIGZyYW1ld29yayBidWlsdCB3aXRoIFR5cGVTY3JpcHQsIE5vZGUuanMsIGFuZCBSZWFjdC4nLFxuICBzaXRlTmFtZTogJ1BheWxvYWQgQXBwJyxcbiAgdGl0bGU6ICdQYXlsb2FkIEFwcCdcbn1cblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTWV0YWRhdGEgPSBhc3luYyAoYXJnczogeyBzZXJ2ZXJVUkw6IHN0cmluZyB9ICYgTWV0YUNvbmZpZyk6IFByb21pc2U8TWV0YWRhdGE+ID0+IHtcbiAgY29uc3QgeyBkZWZhdWx0T0dJbWFnZVR5cGUsIHNlcnZlclVSTCwgdGl0bGVTdWZmaXgsIC4uLnJlc3QgfSA9IGFyZ3NcblxuICAvKipcbiAgICogQHRvZG8gZmluZCBhIHdheSB0byByZW1vdmUgdGhlIHR5cGUgYXNzZXJ0aW9uIGhlcmUuXG4gICAqIEl0IGlzIGEgcmVzdWx0IG9mIG5lZWRpbmcgdG8gYERlZXBDb3B5YCB0aGUgYE1ldGFDb25maWdgIHR5cGUgZnJvbSBQYXlsb2FkLlxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgYERlZXBSZXF1aXJlZGAgZnJvbSBgQ29uZmlnYCB0byBgU2FuaXRpemVkQ29uZmlnYC5cbiAgICovXG4gIGNvbnN0IGluY29taW5nTWV0YWRhdGEgPSByZXN0IGFzIE1ldGFkYXRhXG5cbiAgY29uc3QgaWNvbnM6IE1ldGFkYXRhWydpY29ucyddID1cbiAgICBpbmNvbWluZ01ldGFkYXRhLmljb25zIHx8XG4gICAgKFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycsXG4gICAgICAgIHJlbDogJ2ljb24nLFxuICAgICAgICBzaXplczogJzMyeDMyJyxcbiAgICAgICAgdXJsOiB0eXBlb2YgcGF5bG9hZEZhdmljb25EYXJrID09PSAnb2JqZWN0JyA/IHBheWxvYWRGYXZpY29uRGFyaz8uc3JjIDogcGF5bG9hZEZhdmljb25EYXJrXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgbWVkaWE6ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyxcbiAgICAgICAgcmVsOiAnaWNvbicsXG4gICAgICAgIHNpemVzOiAnMzJ4MzInLFxuICAgICAgICB1cmw6IHR5cGVvZiBwYXlsb2FkRmF2aWNvbkxpZ2h0ID09PSAnb2JqZWN0JyA/IHBheWxvYWRGYXZpY29uTGlnaHQ/LnNyYyA6IHBheWxvYWRGYXZpY29uTGlnaHRcbiAgICAgIH1cbiAgICBdIHNhdGlzZmllcyBBcnJheTxJY29uPilcblxuICBjb25zdCBtZXRhVGl0bGU6IE1ldGFkYXRhWyd0aXRsZSddID0gW2luY29taW5nTWV0YWRhdGEudGl0bGUsIHRpdGxlU3VmZml4XS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpXG5cbiAgY29uc3Qgb2dUaXRsZSA9IGAke3R5cGVvZiBpbmNvbWluZ01ldGFkYXRhLm9wZW5HcmFwaD8udGl0bGUgPT09ICdzdHJpbmcnID8gaW5jb21pbmdNZXRhZGF0YS5vcGVuR3JhcGgudGl0bGUgOiBpbmNvbWluZ01ldGFkYXRhLnRpdGxlfSAke3RpdGxlU3VmZml4fWBcblxuICBjb25zdCBtZXJnZWRPcGVuR3JhcGg6IE1ldGFkYXRhWydvcGVuR3JhcGgnXSA9IHtcbiAgICAuLi4oZGVmYXVsdE9wZW5HcmFwaCB8fCB7fSksXG4gICAgLi4uKGRlZmF1bHRPR0ltYWdlVHlwZSA9PT0gJ2R5bmFtaWMnXG4gICAgICA/IHtcbiAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWx0OiBvZ1RpdGxlLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDYzMCxcbiAgICAgICAgICAgICAgdXJsOiBgL2FwaS9vZyR7cXMuc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbmNvbWluZ01ldGFkYXRhLm9wZW5HcmFwaD8uZGVzY3JpcHRpb24gfHwgZGVmYXVsdE9wZW5HcmFwaC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZ1RpdGxlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhZGRRdWVyeVByZWZpeDogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgICB3aWR0aDogMTIwMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGRlZmF1bHRPR0ltYWdlVHlwZSA9PT0gJ3N0YXRpYydcbiAgICAgID8ge1xuICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhbHQ6IG9nVGl0bGUsXG4gICAgICAgICAgICAgIGhlaWdodDogNDgwLFxuICAgICAgICAgICAgICB1cmw6IHR5cGVvZiBzdGF0aWNPR0ltYWdlID09PSAnb2JqZWN0JyA/IHN0YXRpY09HSW1hZ2U/LnNyYyA6IHN0YXRpY09HSW1hZ2UsXG4gICAgICAgICAgICAgIHdpZHRoOiA2NDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIDoge30pLFxuICAgIHRpdGxlOiBvZ1RpdGxlLFxuICAgIC4uLihpbmNvbWluZ01ldGFkYXRhLm9wZW5HcmFwaCB8fCB7fSlcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgIC4uLmluY29taW5nTWV0YWRhdGEsXG4gICAgaWNvbnMsXG4gICAgbWV0YWRhdGFCYXNlOiBuZXcgVVJMKHNlcnZlclVSTCB8fCBwcm9jZXNzLmVudi5QQVlMT0FEX1BVQkxJQ19TRVJWRVJfVVJMIHx8IGBodHRwOi8vbG9jYWxob3N0OiR7cHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwfWApLFxuICAgIG9wZW5HcmFwaDogbWVyZ2VkT3BlbkdyYXBoLFxuICAgIHRpdGxlOiBtZXRhVGl0bGVcbiAgfSlcbn1cblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVWaWV3TWV0YWRhdGEgPSAoYXJnczoge1xuICBjb25maWc6IFNhbml0aXplZENvbmZpZ1xuICBpMThuOiBJMThuQ2xpZW50XG4gIGlzRWRpdGluZz86IGJvb2xlYW5cbiAgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9XG59KSA9PiBQcm9taXNlPE1ldGFkYXRhPlxuIl0sIm5hbWVzIjpbInBheWxvYWRGYXZpY29uRGFyayIsInBheWxvYWRGYXZpY29uTGlnaHQiLCJzdGF0aWNPR0ltYWdlIiwicXMiLCJkZWZhdWx0T3BlbkdyYXBoIiwiZGVzY3JpcHRpb24iLCJzaXRlTmFtZSIsInRpdGxlIiwiZ2VuZXJhdGVNZXRhZGF0YSIsImFyZ3MiLCJkZWZhdWx0T0dJbWFnZVR5cGUiLCJzZXJ2ZXJVUkwiLCJ0aXRsZVN1ZmZpeCIsInJlc3QiLCJpbmNvbWluZ01ldGFkYXRhIiwiaWNvbnMiLCJ0eXBlIiwicmVsIiwic2l6ZXMiLCJ1cmwiLCJzcmMiLCJtZWRpYSIsIm1ldGFUaXRsZSIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwib2dUaXRsZSIsIm9wZW5HcmFwaCIsIm1lcmdlZE9wZW5HcmFwaCIsImltYWdlcyIsImFsdCIsImhlaWdodCIsInN0cmluZ2lmeSIsImFkZFF1ZXJ5UHJlZml4Iiwid2lkdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1ldGFkYXRhQmFzZSIsIlVSTCIsInByb2Nlc3MiLCJlbnYiLCJQQVlMT0FEX1BVQkxJQ19TRVJWRVJfVVJMIiwiUE9SVCJdLCJtYXBwaW5ncyI6IkFBS0EsU0FBU0Esa0JBQWtCLEVBQUVDLG1CQUFtQixFQUFFQyxhQUFhLFFBQVEsd0JBQXVCO0FBQzlGLFlBQVlDLFFBQVEsU0FBUTtBQUU1QixNQUFNQyxtQkFBMEM7SUFDOUNDLGFBQWE7SUFDYkMsVUFBVTtJQUNWQyxPQUFPO0FBQ1Q7QUFFQSxPQUFPLE1BQU1DLG1CQUFtQixPQUFPQztJQUNyQyxNQUFNLEVBQUVDLGtCQUFrQixFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxNQUFNLEdBQUdKO0lBRWhFOzs7O0dBSUMsR0FDRCxNQUFNSyxtQkFBbUJEO0lBRXpCLE1BQU1FLFFBQ0pELGlCQUFpQkMsS0FBSyxJQUNyQjtRQUNDO1lBQ0VDLE1BQU07WUFDTkMsS0FBSztZQUNMQyxPQUFPO1lBQ1BDLEtBQUssT0FBT25CLHVCQUF1QixXQUFXQSxvQkFBb0JvQixNQUFNcEI7UUFDMUU7UUFDQTtZQUNFZ0IsTUFBTTtZQUNOSyxPQUFPO1lBQ1BKLEtBQUs7WUFDTEMsT0FBTztZQUNQQyxLQUFLLE9BQU9sQix3QkFBd0IsV0FBV0EscUJBQXFCbUIsTUFBTW5CO1FBQzVFO0tBQ0Q7SUFFSCxNQUFNcUIsWUFBK0I7UUFBQ1IsaUJBQWlCUCxLQUFLO1FBQUVLO0tBQVksQ0FBQ1csTUFBTSxDQUFDQyxTQUFTQyxJQUFJLENBQUM7SUFFaEcsTUFBTUMsVUFBVSxHQUFHLE9BQU9aLGlCQUFpQmEsU0FBUyxFQUFFcEIsVUFBVSxXQUFXTyxpQkFBaUJhLFNBQVMsQ0FBQ3BCLEtBQUssR0FBR08saUJBQWlCUCxLQUFLLENBQUMsQ0FBQyxFQUFFSyxhQUFhO0lBRXJKLE1BQU1nQixrQkFBeUM7UUFDN0MsR0FBSXhCLG9CQUFvQixDQUFDLENBQUM7UUFDMUIsR0FBSU0sdUJBQXVCLFlBQ3ZCO1lBQ0VtQixRQUFRO2dCQUNOO29CQUNFQyxLQUFLSjtvQkFDTEssUUFBUTtvQkFDUlosS0FBSyxDQUFDLE9BQU8sRUFBRWhCLEdBQUc2QixTQUFTLENBQ3pCO3dCQUNFM0IsYUFBYVMsaUJBQWlCYSxTQUFTLEVBQUV0QixlQUFlRCxpQkFBaUJDLFdBQVc7d0JBQ3BGRSxPQUFPbUI7b0JBQ1QsR0FDQTt3QkFDRU8sZ0JBQWdCO29CQUNsQixJQUNDO29CQUNIQyxPQUFPO2dCQUNUO2FBQ0Q7UUFDSCxJQUNBLENBQUMsQ0FBQztRQUNOLEdBQUl4Qix1QkFBdUIsV0FDdkI7WUFDRW1CLFFBQVE7Z0JBQ047b0JBQ0VDLEtBQUtKO29CQUNMSyxRQUFRO29CQUNSWixLQUFLLE9BQU9qQixrQkFBa0IsV0FBV0EsZUFBZWtCLE1BQU1sQjtvQkFDOURnQyxPQUFPO2dCQUNUO2FBQ0Q7UUFDSCxJQUNBLENBQUMsQ0FBQztRQUNOM0IsT0FBT21CO1FBQ1AsR0FBSVosaUJBQWlCYSxTQUFTLElBQUksQ0FBQyxDQUFDO0lBQ3RDO0lBRUEsT0FBT1EsUUFBUUMsT0FBTyxDQUFDO1FBQ3JCLEdBQUd0QixnQkFBZ0I7UUFDbkJDO1FBQ0FzQixjQUFjLElBQUlDLElBQUkzQixhQUFhNEIsUUFBUUMsR0FBRyxDQUFDQyx5QkFBeUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFRixRQUFRQyxHQUFHLENBQUNFLElBQUksSUFBSSxNQUFNO1FBQzFIZixXQUFXQztRQUNYckIsT0FBT2U7SUFDVDtBQUNGLEVBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-safe-redirect.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/get-safe-redirect.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"get-safe-redirect.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/get-safe-redirect.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,eAAe,MAAM,GAAG,MAAM,EAAE,EAAE,WAAU,MAAY,KAAG,MA8B1F,CAAA"}
|
|
@@ -20,4 +20,4 @@ export const getSafeRedirect = (redirectParam, fallback = '/')=>{
|
|
|
20
20
|
return isSafeRedirect ? redirectPath : fallback;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZXQtc2FmZS1yZWRpcmVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ2V0U2FmZVJlZGlyZWN0ID0gKHJlZGlyZWN0UGFyYW06IHN0cmluZyB8IHN0cmluZ1tdLCBmYWxsYmFjazogc3RyaW5nID0gJy8nKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiByZWRpcmVjdFBhcmFtICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxsYmFja1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIGFuZCBkZWNvZGUgdGhlIHBhdGhcbiAgbGV0IHJlZGlyZWN0UGF0aDogc3RyaW5nXG4gIHRyeSB7XG4gICAgcmVkaXJlY3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0UGFyYW0udHJpbSgpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsbGJhY2sgLy8gaW52YWxpZCBlbmNvZGluZ1xuICB9XG5cbiAgY29uc3QgaXNTYWZlUmVkaXJlY3QgPVxuICAgIC8vIE11c3Qgc3RhcnQgd2l0aCBhIHNpbmdsZSBmb3J3YXJkIHNsYXNoIChlLmcuLCBcIi9hZG1pblwiKVxuICAgIHJlZGlyZWN0UGF0aC5zdGFydHNXaXRoKCcvJykgJiZcbiAgICAvLyBQcmV2ZW50IHByb3RvY29sLXJlbGF0aXZlIFVSTHMgKGUuZy4sIFwiLy9leGFtcGxlLmNvbVwiKVxuICAgICFyZWRpcmVjdFBhdGguc3RhcnRzV2l0aCgnLy8nKSAmJlxuICAgIC8vIFByZXZlbnQgZW5jb2RlZCBzbGFzaGVzIHRoYXQgY291bGQgcmVzb2x2ZSB0byBwcm90b2NvbC1yZWxhdGl2ZVxuICAgICFyZWRpcmVjdFBhdGguc3RhcnRzV2l0aCgnLyUyRicpICYmXG4gICAgLy8gUHJldmVudCBiYWNrc2xhc2gtYmFzZWQgZXNjYXBlIGF0dGVtcHRzIChlLmcuLCBcIi9cXFxcL2V4YW1wbGUuY29tXCIsIFwiL1xcXFxcXFxcZXhhbXBsZS5jb21cIiwgXCIvXFxcXGV4YW1wbGUuY29tXCIpXG4gICAgIXJlZGlyZWN0UGF0aC5zdGFydHNXaXRoKCcvXFxcXC8nKSAmJlxuICAgICFyZWRpcmVjdFBhdGguc3RhcnRzV2l0aCgnL1xcXFxcXFxcJykgJiZcbiAgICAhcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoJy9cXFxcJykgJiZcbiAgICAvLyBQcmV2ZW50IGphdmFzY3JpcHQtYmFzZWQgc2NoZW1lcyAoZS5nLiwgXCIvamF2YXNjcmlwdDphbGVydCgxKVwiKVxuICAgICFyZWRpcmVjdFBhdGgudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCcvamF2YXNjcmlwdDonKSAmJlxuICAgIC8vIFByZXZlbnQgYXR0ZW1wdHMgdG8gcmVkaXJlY3QgdG8gZnVsbCBVUkxzIHVzaW5nIFwiL2h0dHA6XCIgb3IgXCIvaHR0cHM6XCJcbiAgICAhcmVkaXJlY3RQYXRoLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnL2h0dHAnKVxuXG4gIHJldHVybiBpc1NhZmVSZWRpcmVjdCA/IHJlZGlyZWN0UGF0aCA6IGZhbGxiYWNrXG59XG4iXSwibmFtZXMiOlsiZ2V0U2FmZVJlZGlyZWN0IiwicmVkaXJlY3RQYXJhbSIsImZhbGxiYWNrIiwicmVkaXJlY3RQYXRoIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidHJpbSIsImlzU2FmZVJlZGlyZWN0Iiwic3RhcnRzV2l0aCIsInRvTG93ZXJDYXNlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLGtCQUFrQixDQUFDQyxlQUFrQ0MsV0FBbUIsR0FBRztJQUN0RixJQUFJLE9BQU9ELGtCQUFrQixVQUFVO1FBQ3JDLE9BQU9DO0lBQ1Q7SUFFQSxnQ0FBZ0M7SUFDaEMsSUFBSUM7SUFDSixJQUFJO1FBQ0ZBLGVBQWVDLG1CQUFtQkgsY0FBY0ksSUFBSTtJQUN0RCxFQUFFLE9BQU07UUFDTixPQUFPSCxTQUFTLG1CQUFtQjs7SUFDckM7SUFFQSxNQUFNSSxpQkFDSiwwREFBMEQ7SUFDMURILGFBQWFJLFVBQVUsQ0FBQyxRQUN4Qix5REFBeUQ7SUFDekQsQ0FBQ0osYUFBYUksVUFBVSxDQUFDLFNBQ3pCLGtFQUFrRTtJQUNsRSxDQUFDSixhQUFhSSxVQUFVLENBQUMsV0FDekIsMEdBQTBHO0lBQzFHLENBQUNKLGFBQWFJLFVBQVUsQ0FBQyxXQUN6QixDQUFDSixhQUFhSSxVQUFVLENBQUMsWUFDekIsQ0FBQ0osYUFBYUksVUFBVSxDQUFDLFVBQ3pCLGtFQUFrRTtJQUNsRSxDQUFDSixhQUFhSyxXQUFXLEdBQUdELFVBQVUsQ0FBQyxtQkFDdkMsd0VBQXdFO0lBQ3hFLENBQUNKLGFBQWFLLFdBQVcsR0FBR0QsVUFBVSxDQUFDO0lBRXpDLE9BQU9ELGlCQUFpQkgsZUFBZUQ7QUFDekMsRUFBQyJ9
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SocialProviders } from '@/better-auth/plugin/types';
|
|
3
|
+
import type { LoginWithUsernameOptions } from 'payload';
|
|
4
|
+
type AdminLoginClientProps = {
|
|
5
|
+
socialProviders: SocialProviders;
|
|
6
|
+
hasUsernamePlugin: boolean;
|
|
7
|
+
hasPasskeySupport: boolean;
|
|
8
|
+
prefillEmail?: string;
|
|
9
|
+
prefillPassword?: string;
|
|
10
|
+
prefillUsername?: string;
|
|
11
|
+
searchParams: {
|
|
12
|
+
[key: string]: string | string[] | undefined;
|
|
13
|
+
};
|
|
14
|
+
loginWithUsername: false | LoginWithUsernameOptions;
|
|
15
|
+
};
|
|
16
|
+
export declare const AdminLoginClient: React.FC<AdminLoginClientProps>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAchD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD,KAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,eAAe,CAAA;IAChC,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAC9D,iBAAiB,EAAE,KAAK,GAAG,wBAAwB,CAAA;CACpD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA6J5D,CAAA"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useMemo, useState } from "react";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { useAppForm } from "../../../../../shared/form";
|
|
6
|
+
import { Form, FormInputWrap } from "../../../../../shared/form/ui";
|
|
7
|
+
import { FormHeader } from "../../../../../shared/form/ui/header";
|
|
8
|
+
import { createAuthClient } from "better-auth/client";
|
|
9
|
+
import { usernameClient } from "better-auth/client/plugins";
|
|
10
|
+
import { adminRoutes } from "../../../constants";
|
|
11
|
+
import { formatAdminURL, getLoginOptions } from "payload/shared";
|
|
12
|
+
import { getSafeRedirect } from "../../utils/get-safe-redirect";
|
|
13
|
+
import { Link, toast, useConfig, useTranslation } from "@payloadcms/ui";
|
|
14
|
+
import AdminSocialProviderButtons from "../../components/admin-social-provider-buttons";
|
|
15
|
+
import { emailRegex, usernameRegex } from "../../../../../shared/utils/regex";
|
|
16
|
+
const baseClass = 'login__form';
|
|
17
|
+
export const AdminLoginClient = ({ socialProviders, hasUsernamePlugin, hasPasskeySupport, prefillEmail, prefillPassword, prefillUsername, searchParams, loginWithUsername })=>{
|
|
18
|
+
const { config } = useConfig();
|
|
19
|
+
const { t } = useTranslation();
|
|
20
|
+
const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername);
|
|
21
|
+
const usernameSettings = {
|
|
22
|
+
minLength: 5,
|
|
23
|
+
maxLength: 128
|
|
24
|
+
};
|
|
25
|
+
const redirectUrl = getSafeRedirect(searchParams?.redirect, config.routes.admin);
|
|
26
|
+
const forgotPasswordUrl = formatAdminURL({
|
|
27
|
+
adminRoute: config.routes.admin,
|
|
28
|
+
path: adminRoutes?.forgotPassword
|
|
29
|
+
});
|
|
30
|
+
const authClient = useMemo(()=>createAuthClient({
|
|
31
|
+
plugins: [
|
|
32
|
+
usernameClient()
|
|
33
|
+
]
|
|
34
|
+
}), []);
|
|
35
|
+
const loginType = useMemo(()=>{
|
|
36
|
+
if (canLoginWithEmail && canLoginWithUsername && hasUsernamePlugin) return 'emailOrUsername';
|
|
37
|
+
if (canLoginWithUsername && hasUsernamePlugin) return 'username';
|
|
38
|
+
return 'email';
|
|
39
|
+
}, [
|
|
40
|
+
canLoginWithEmail,
|
|
41
|
+
canLoginWithUsername,
|
|
42
|
+
hasUsernamePlugin
|
|
43
|
+
]);
|
|
44
|
+
const [requireEmailVerification, setRequireEmailVerification] = useState(false);
|
|
45
|
+
if (requireEmailVerification) {
|
|
46
|
+
return /*#__PURE__*/ _jsx(FormHeader, {
|
|
47
|
+
heading: "Please verify your email",
|
|
48
|
+
description: t('authentication:emailSent'),
|
|
49
|
+
style: {
|
|
50
|
+
textAlign: 'center'
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const validationMap = {
|
|
55
|
+
email: {
|
|
56
|
+
isValid: (val)=>emailRegex.test(val),
|
|
57
|
+
getErrorMessage: ()=>t('authentication:emailNotValid') || 'Email is not valid'
|
|
58
|
+
},
|
|
59
|
+
username: {
|
|
60
|
+
isValid: (val)=>usernameRegex.test(val) && val.length >= usernameSettings.minLength && val.length <= usernameSettings.maxLength,
|
|
61
|
+
getErrorMessage: ()=>t('authentication:usernameNotValid') || 'Username is not valid'
|
|
62
|
+
},
|
|
63
|
+
emailOrUsername: {
|
|
64
|
+
isValid: (val)=>val.includes('@') ? emailRegex.test(val) : usernameRegex.test(val) && val.length >= usernameSettings.minLength && val.length <= usernameSettings.maxLength,
|
|
65
|
+
getErrorMessage: (val)=>{
|
|
66
|
+
const isProbablyEmail = val.includes('@') || !canLoginWithUsername;
|
|
67
|
+
return isProbablyEmail ? t('authentication:emailNotValid') || 'Email is not valid' : t('authentication:usernameNotValid') || 'Username is not valid';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const loginSchema = z.object({
|
|
72
|
+
login: z.string().refine((val)=>val ? validationMap[loginType].isValid(val) : false, (val)=>({
|
|
73
|
+
message: !val ? t('validation:required') : validationMap[loginType].getErrorMessage(val)
|
|
74
|
+
})),
|
|
75
|
+
password: z.string().min(1, 'Password is required')
|
|
76
|
+
});
|
|
77
|
+
const form = useAppForm({
|
|
78
|
+
defaultValues: {
|
|
79
|
+
login: prefillEmail ?? prefillUsername ?? '',
|
|
80
|
+
password: prefillPassword ?? ''
|
|
81
|
+
},
|
|
82
|
+
onSubmit: async ({ value })=>{
|
|
83
|
+
const { login, password } = value;
|
|
84
|
+
const isEmail = emailRegex.test(login);
|
|
85
|
+
try {
|
|
86
|
+
const { data, error } = await (loginType === 'email' || loginType === 'emailOrUsername' && isEmail ? authClient.signIn.email({
|
|
87
|
+
email: login,
|
|
88
|
+
password,
|
|
89
|
+
callbackURL: redirectUrl
|
|
90
|
+
}) : authClient.signIn.username({
|
|
91
|
+
username: login,
|
|
92
|
+
password
|
|
93
|
+
}));
|
|
94
|
+
if (error) {
|
|
95
|
+
if (error.code === 'EMAIL_NOT_VERIFIED') {
|
|
96
|
+
setRequireEmailVerification(true);
|
|
97
|
+
}
|
|
98
|
+
if (error.message) {
|
|
99
|
+
toast.error(error.message.charAt(0).toUpperCase() + error.message.slice(1));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (data?.token) {
|
|
103
|
+
toast.success(t('general:success'));
|
|
104
|
+
window.location.href = redirectUrl;
|
|
105
|
+
}
|
|
106
|
+
} catch (err) {
|
|
107
|
+
toast.error(t('error:unknown') || 'An unexpected error occurred');
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
validators: {
|
|
111
|
+
onSubmit: loginSchema
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const getLoginTypeLabel = ()=>{
|
|
115
|
+
const labels = {
|
|
116
|
+
email: t('general:email') || 'Email',
|
|
117
|
+
username: t('authentication:username') || 'Username',
|
|
118
|
+
emailOrUsername: t('authentication:emailOrUsername') || 'Email or Username'
|
|
119
|
+
};
|
|
120
|
+
return labels[loginType];
|
|
121
|
+
};
|
|
122
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
123
|
+
className: `${baseClass}__wrapper`,
|
|
124
|
+
children: [
|
|
125
|
+
/*#__PURE__*/ _jsxs(Form, {
|
|
126
|
+
className: baseClass,
|
|
127
|
+
onSubmit: (e)=>{
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
void form.handleSubmit();
|
|
130
|
+
},
|
|
131
|
+
children: [
|
|
132
|
+
/*#__PURE__*/ _jsxs(FormInputWrap, {
|
|
133
|
+
className: baseClass,
|
|
134
|
+
children: [
|
|
135
|
+
/*#__PURE__*/ _jsx(form.AppField, {
|
|
136
|
+
name: "login",
|
|
137
|
+
children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
|
|
138
|
+
type: "text",
|
|
139
|
+
className: "email",
|
|
140
|
+
autoComplete: "email",
|
|
141
|
+
label: getLoginTypeLabel()
|
|
142
|
+
})
|
|
143
|
+
}),
|
|
144
|
+
/*#__PURE__*/ _jsx(form.AppField, {
|
|
145
|
+
name: "password",
|
|
146
|
+
children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
|
|
147
|
+
type: "password",
|
|
148
|
+
className: "password",
|
|
149
|
+
autoComplete: "password",
|
|
150
|
+
label: t('general:password')
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
}),
|
|
155
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
156
|
+
href: forgotPasswordUrl,
|
|
157
|
+
prefetch: false,
|
|
158
|
+
children: t('authentication:forgotPasswordQuestion')
|
|
159
|
+
}),
|
|
160
|
+
/*#__PURE__*/ _jsx(form.AppForm, {
|
|
161
|
+
children: /*#__PURE__*/ _jsx(form.Submit, {
|
|
162
|
+
label: t('authentication:login'),
|
|
163
|
+
loadingLabel: t('general:loading')
|
|
164
|
+
})
|
|
165
|
+
})
|
|
166
|
+
]
|
|
167
|
+
}),
|
|
168
|
+
(Object.keys(socialProviders || {}).length > 0 || hasPasskeySupport) && /*#__PURE__*/ _jsx("div", {
|
|
169
|
+
style: {
|
|
170
|
+
textAlign: 'center',
|
|
171
|
+
fontSize: '0.875rem',
|
|
172
|
+
textTransform: 'uppercase',
|
|
173
|
+
marginTop: '-.5rem',
|
|
174
|
+
color: 'var(--theme-elevation-450)',
|
|
175
|
+
marginBottom: '1.5rem'
|
|
176
|
+
},
|
|
177
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
178
|
+
children: "Or login with"
|
|
179
|
+
})
|
|
180
|
+
}),
|
|
181
|
+
/*#__PURE__*/ _jsx(AdminSocialProviderButtons, {
|
|
182
|
+
allowSignup: false,
|
|
183
|
+
socialProviders: socialProviders,
|
|
184
|
+
setLoading: ()=>{},
|
|
185
|
+
hasPasskeySupport: hasPasskeySupport,
|
|
186
|
+
redirectUrl: redirectUrl
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9jbGllbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5pbXBvcnQgeyB1c2VBcHBGb3JtIH0gZnJvbSAnQC9zaGFyZWQvZm9ybSdcbmltcG9ydCB7IEZvcm0sIEZvcm1JbnB1dFdyYXAgfSBmcm9tICdAL3NoYXJlZC9mb3JtL3VpJ1xuaW1wb3J0IHsgRm9ybUhlYWRlciB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdWkvaGVhZGVyJ1xuaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gJ2JldHRlci1hdXRoL2NsaWVudCdcbmltcG9ydCB7IHVzZXJuYW1lQ2xpZW50IH0gZnJvbSAnYmV0dGVyLWF1dGgvY2xpZW50L3BsdWdpbnMnXG5pbXBvcnQgeyBhZG1pblJvdXRlcyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcbmltcG9ydCB7IGZvcm1hdEFkbWluVVJMLCBnZXRMb2dpbk9wdGlvbnMgfSBmcm9tICdwYXlsb2FkL3NoYXJlZCdcbmltcG9ydCB7IGdldFNhZmVSZWRpcmVjdCB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvdXRpbHMvZ2V0LXNhZmUtcmVkaXJlY3QnXG5pbXBvcnQgeyBMaW5rLCB0b2FzdCwgdXNlQ29uZmlnLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3VpJ1xuaW1wb3J0IEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvY29tcG9uZW50cy9hZG1pbi1zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuaW1wb3J0IHR5cGUgeyBTb2NpYWxQcm92aWRlcnMgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcbmltcG9ydCB0eXBlIHsgTG9naW5XaXRoVXNlcm5hbWVPcHRpb25zIH0gZnJvbSAncGF5bG9hZCdcblxuY29uc3QgYmFzZUNsYXNzID0gJ2xvZ2luX19mb3JtJ1xuXG50eXBlIEFkbWluTG9naW5DbGllbnRQcm9wcyA9IHtcbiAgc29jaWFsUHJvdmlkZXJzOiBTb2NpYWxQcm92aWRlcnNcbiAgaGFzVXNlcm5hbWVQbHVnaW46IGJvb2xlYW5cbiAgaGFzUGFzc2tleVN1cHBvcnQ6IGJvb2xlYW5cbiAgcHJlZmlsbEVtYWlsPzogc3RyaW5nXG4gIHByZWZpbGxQYXNzd29yZD86IHN0cmluZ1xuICBwcmVmaWxsVXNlcm5hbWU/OiBzdHJpbmdcbiAgc2VhcmNoUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIH1cbiAgbG9naW5XaXRoVXNlcm5hbWU6IGZhbHNlIHwgTG9naW5XaXRoVXNlcm5hbWVPcHRpb25zXG59XG5cbmV4cG9ydCBjb25zdCBBZG1pbkxvZ2luQ2xpZW50OiBSZWFjdC5GQzxBZG1pbkxvZ2luQ2xpZW50UHJvcHM+ID0gKHtcbiAgc29jaWFsUHJvdmlkZXJzLFxuICBoYXNVc2VybmFtZVBsdWdpbixcbiAgaGFzUGFzc2tleVN1cHBvcnQsXG4gIHByZWZpbGxFbWFpbCxcbiAgcHJlZmlsbFBhc3N3b3JkLFxuICBwcmVmaWxsVXNlcm5hbWUsXG4gIHNlYXJjaFBhcmFtcyxcbiAgbG9naW5XaXRoVXNlcm5hbWVcbn0pID0+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNhbkxvZ2luV2l0aEVtYWlsLCBjYW5Mb2dpbldpdGhVc2VybmFtZSB9ID0gZ2V0TG9naW5PcHRpb25zKGxvZ2luV2l0aFVzZXJuYW1lKVxuICBjb25zdCB1c2VybmFtZVNldHRpbmdzID0geyBtaW5MZW5ndGg6IDUsIG1heExlbmd0aDogMTI4IH1cbiAgY29uc3QgcmVkaXJlY3RVcmwgPSBnZXRTYWZlUmVkaXJlY3Qoc2VhcmNoUGFyYW1zPy5yZWRpcmVjdCBhcyBzdHJpbmcsIGNvbmZpZy5yb3V0ZXMuYWRtaW4pXG4gIGNvbnN0IGZvcmdvdFBhc3N3b3JkVXJsID0gZm9ybWF0QWRtaW5VUkwoe1xuICAgIGFkbWluUm91dGU6IGNvbmZpZy5yb3V0ZXMuYWRtaW4sXG4gICAgcGF0aDogYWRtaW5Sb3V0ZXM/LmZvcmdvdFBhc3N3b3JkIGFzIGAvJHtzdHJpbmd9YFxuICB9KVxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3VzZXJuYW1lQ2xpZW50KCldIH0pLCBbXSlcbiAgY29uc3QgbG9naW5UeXBlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGNhbkxvZ2luV2l0aEVtYWlsICYmIGNhbkxvZ2luV2l0aFVzZXJuYW1lICYmIGhhc1VzZXJuYW1lUGx1Z2luKSByZXR1cm4gJ2VtYWlsT3JVc2VybmFtZSdcbiAgICBpZiAoY2FuTG9naW5XaXRoVXNlcm5hbWUgJiYgaGFzVXNlcm5hbWVQbHVnaW4pIHJldHVybiAndXNlcm5hbWUnXG4gICAgcmV0dXJuICdlbWFpbCdcbiAgfSwgW2NhbkxvZ2luV2l0aEVtYWlsLCBjYW5Mb2dpbldpdGhVc2VybmFtZSwgaGFzVXNlcm5hbWVQbHVnaW5dKVxuICBjb25zdCBbcmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uLCBzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb25dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgaWYgKHJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbikge1xuICAgIHJldHVybiA8Rm9ybUhlYWRlciBoZWFkaW5nPVwiUGxlYXNlIHZlcmlmeSB5b3VyIGVtYWlsXCIgZGVzY3JpcHRpb249e3QoJ2F1dGhlbnRpY2F0aW9uOmVtYWlsU2VudCcpfSBzdHlsZT17eyB0ZXh0QWxpZ246ICdjZW50ZXInIH19IC8+XG4gIH1cblxuICBjb25zdCB2YWxpZGF0aW9uTWFwID0ge1xuICAgIGVtYWlsOiB7XG4gICAgICBpc1ZhbGlkOiAodmFsOiBzdHJpbmcpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLFxuICAgICAgZ2V0RXJyb3JNZXNzYWdlOiAoKSA9PiB0KCdhdXRoZW50aWNhdGlvbjplbWFpbE5vdFZhbGlkJykgfHwgJ0VtYWlsIGlzIG5vdCB2YWxpZCdcbiAgICB9LFxuICAgIHVzZXJuYW1lOiB7XG4gICAgICBpc1ZhbGlkOiAodmFsOiBzdHJpbmcpID0+XG4gICAgICAgIHVzZXJuYW1lUmVnZXgudGVzdCh2YWwpICYmIHZhbC5sZW5ndGggPj0gdXNlcm5hbWVTZXR0aW5ncy5taW5MZW5ndGggJiYgdmFsLmxlbmd0aCA8PSB1c2VybmFtZVNldHRpbmdzLm1heExlbmd0aCxcbiAgICAgIGdldEVycm9yTWVzc2FnZTogKCkgPT4gdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWVOb3RWYWxpZCcpIHx8ICdVc2VybmFtZSBpcyBub3QgdmFsaWQnXG4gICAgfSxcbiAgICBlbWFpbE9yVXNlcm5hbWU6IHtcbiAgICAgIGlzVmFsaWQ6ICh2YWw6IHN0cmluZykgPT5cbiAgICAgICAgdmFsLmluY2x1ZGVzKCdAJylcbiAgICAgICAgICA/IGVtYWlsUmVnZXgudGVzdCh2YWwpXG4gICAgICAgICAgOiB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSAmJiB2YWwubGVuZ3RoID49IHVzZXJuYW1lU2V0dGluZ3MubWluTGVuZ3RoICYmIHZhbC5sZW5ndGggPD0gdXNlcm5hbWVTZXR0aW5ncy5tYXhMZW5ndGgsXG4gICAgICBnZXRFcnJvck1lc3NhZ2U6ICh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpc1Byb2JhYmx5RW1haWwgPSB2YWwuaW5jbHVkZXMoJ0AnKSB8fCAhY2FuTG9naW5XaXRoVXNlcm5hbWVcbiAgICAgICAgcmV0dXJuIGlzUHJvYmFibHlFbWFpbFxuICAgICAgICAgID8gdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gICAgICAgICAgOiB0KCdhdXRoZW50aWNhdGlvbjp1c2VybmFtZU5vdFZhbGlkJykgfHwgJ1VzZXJuYW1lIGlzIG5vdCB2YWxpZCdcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBsb2dpblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBsb2dpbjogei5zdHJpbmcoKS5yZWZpbmUoXG4gICAgICAodmFsKSA9PiAodmFsID8gdmFsaWRhdGlvbk1hcFtsb2dpblR5cGVdLmlzVmFsaWQodmFsKSA6IGZhbHNlKSxcbiAgICAgICh2YWwpID0+ICh7XG4gICAgICAgIG1lc3NhZ2U6ICF2YWwgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB2YWxpZGF0aW9uTWFwW2xvZ2luVHlwZV0uZ2V0RXJyb3JNZXNzYWdlKHZhbClcbiAgICAgIH0pXG4gICAgKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5taW4oMSwgJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJylcbiAgfSlcblxuICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgZGVmYXVsdFZhbHVlczoge1xuICAgICAgbG9naW46IHByZWZpbGxFbWFpbCA/PyBwcmVmaWxsVXNlcm5hbWUgPz8gJycsXG4gICAgICBwYXNzd29yZDogcHJlZmlsbFBhc3N3b3JkID8/ICcnXG4gICAgfSxcbiAgICBvblN1Ym1pdDogYXN5bmMgKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBsb2dpbiwgcGFzc3dvcmQgfSA9IHZhbHVlXG4gICAgICBjb25zdCBpc0VtYWlsID0gZW1haWxSZWdleC50ZXN0KGxvZ2luKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgKGxvZ2luVHlwZSA9PT0gJ2VtYWlsJyB8fCAobG9naW5UeXBlID09PSAnZW1haWxPclVzZXJuYW1lJyAmJiBpc0VtYWlsKVxuICAgICAgICAgID8gYXV0aENsaWVudC5zaWduSW4uZW1haWwoeyBlbWFpbDogbG9naW4sIHBhc3N3b3JkLCBjYWxsYmFja1VSTDogcmVkaXJlY3RVcmwgfSlcbiAgICAgICAgICA6IGF1dGhDbGllbnQuc2lnbkluLnVzZXJuYW1lKHsgdXNlcm5hbWU6IGxvZ2luLCBwYXNzd29yZCB9KSlcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTUFJTF9OT1RfVkVSSUZJRUQnKSB7XG4gICAgICAgICAgICBzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb24odHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlcnJvci5tZXNzYWdlLnNsaWNlKDEpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YT8udG9rZW4pIHtcbiAgICAgICAgICB0b2FzdC5zdWNjZXNzKHQoJ2dlbmVyYWw6c3VjY2VzcycpKVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcmVkaXJlY3RVcmxcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKHQoJ2Vycm9yOnVua25vd24nKSB8fCAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0b3JzOiB7XG4gICAgICBvblN1Ym1pdDogbG9naW5TY2hlbWFcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgZ2V0TG9naW5UeXBlTGFiZWwgPSAoKSA9PiB7XG4gICAgY29uc3QgbGFiZWxzID0ge1xuICAgICAgZW1haWw6IHQoJ2dlbmVyYWw6ZW1haWwnKSB8fCAnRW1haWwnLFxuICAgICAgdXNlcm5hbWU6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lJykgfHwgJ1VzZXJuYW1lJyxcbiAgICAgIGVtYWlsT3JVc2VybmFtZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxPclVzZXJuYW1lJykgfHwgJ0VtYWlsIG9yIFVzZXJuYW1lJ1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHNbbG9naW5UeXBlXVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgPEZvcm1cbiAgICAgICAgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9XG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Rm9ybUlucHV0V3JhcCBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICAgICAgPGZvcm0uQXBwRmllbGRcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXG4gICAgICAgICAgICBjaGlsZHJlbj17KGZpZWxkKSA9PiA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPVwiZW1haWxcIiBhdXRvQ29tcGxldGU9XCJlbWFpbFwiIGxhYmVsPXtnZXRMb2dpblR5cGVMYWJlbCgpfSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZCkgPT4gKFxuICAgICAgICAgICAgICA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cInBhc3N3b3JkXCIgYXV0b0NvbXBsZXRlPVwicGFzc3dvcmRcIiBsYWJlbD17dCgnZ2VuZXJhbDpwYXNzd29yZCcpfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxMaW5rIGhyZWY9e2ZvcmdvdFBhc3N3b3JkVXJsfSBwcmVmZXRjaD17ZmFsc2V9PlxuICAgICAgICAgIHt0KCdhdXRoZW50aWNhdGlvbjpmb3Jnb3RQYXNzd29yZFF1ZXN0aW9uJyl9XG4gICAgICAgIDwvTGluaz5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPXt0KCdhdXRoZW50aWNhdGlvbjpsb2dpbicpfSBsb2FkaW5nTGFiZWw9e3QoJ2dlbmVyYWw6bG9hZGluZycpfSAvPn0gLz5cbiAgICAgIDwvRm9ybT5cbiAgICAgIHsoT2JqZWN0LmtleXMoc29jaWFsUHJvdmlkZXJzIHx8IHt9KS5sZW5ndGggPiAwIHx8IGhhc1Bhc3NrZXlTdXBwb3J0KSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6ICctLjVyZW0nLFxuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10aGVtZS1lbGV2YXRpb24tNDUwKScsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcxLjVyZW0nXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPk9yIGxvZ2luIHdpdGg8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9uc1xuICAgICAgICBhbGxvd1NpZ251cD17ZmFsc2V9XG4gICAgICAgIHNvY2lhbFByb3ZpZGVycz17c29jaWFsUHJvdmlkZXJzfVxuICAgICAgICBzZXRMb2FkaW5nPXsoKSA9PiB7fX1cbiAgICAgICAgaGFzUGFzc2tleVN1cHBvcnQ9e2hhc1Bhc3NrZXlTdXBwb3J0fVxuICAgICAgICByZWRpcmVjdFVybD17cmVkaXJlY3RVcmx9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ6IiwidXNlQXBwRm9ybSIsIkZvcm0iLCJGb3JtSW5wdXRXcmFwIiwiRm9ybUhlYWRlciIsImNyZWF0ZUF1dGhDbGllbnQiLCJ1c2VybmFtZUNsaWVudCIsImFkbWluUm91dGVzIiwiZm9ybWF0QWRtaW5VUkwiLCJnZXRMb2dpbk9wdGlvbnMiLCJnZXRTYWZlUmVkaXJlY3QiLCJMaW5rIiwidG9hc3QiLCJ1c2VDb25maWciLCJ1c2VUcmFuc2xhdGlvbiIsIkFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIiwiZW1haWxSZWdleCIsInVzZXJuYW1lUmVnZXgiLCJiYXNlQ2xhc3MiLCJBZG1pbkxvZ2luQ2xpZW50Iiwic29jaWFsUHJvdmlkZXJzIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJoYXNQYXNza2V5U3VwcG9ydCIsInByZWZpbGxFbWFpbCIsInByZWZpbGxQYXNzd29yZCIsInByZWZpbGxVc2VybmFtZSIsInNlYXJjaFBhcmFtcyIsImxvZ2luV2l0aFVzZXJuYW1lIiwiY29uZmlnIiwidCIsImNhbkxvZ2luV2l0aEVtYWlsIiwiY2FuTG9naW5XaXRoVXNlcm5hbWUiLCJ1c2VybmFtZVNldHRpbmdzIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwicmVkaXJlY3RVcmwiLCJyZWRpcmVjdCIsInJvdXRlcyIsImFkbWluIiwiZm9yZ290UGFzc3dvcmRVcmwiLCJhZG1pblJvdXRlIiwicGF0aCIsImZvcmdvdFBhc3N3b3JkIiwiYXV0aENsaWVudCIsInBsdWdpbnMiLCJsb2dpblR5cGUiLCJyZXF1aXJlRW1haWxWZXJpZmljYXRpb24iLCJzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb24iLCJoZWFkaW5nIiwiZGVzY3JpcHRpb24iLCJzdHlsZSIsInRleHRBbGlnbiIsInZhbGlkYXRpb25NYXAiLCJlbWFpbCIsImlzVmFsaWQiLCJ2YWwiLCJ0ZXN0IiwiZ2V0RXJyb3JNZXNzYWdlIiwidXNlcm5hbWUiLCJsZW5ndGgiLCJlbWFpbE9yVXNlcm5hbWUiLCJpbmNsdWRlcyIsImlzUHJvYmFibHlFbWFpbCIsImxvZ2luU2NoZW1hIiwib2JqZWN0IiwibG9naW4iLCJzdHJpbmciLCJyZWZpbmUiLCJtZXNzYWdlIiwicGFzc3dvcmQiLCJtaW4iLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwidmFsdWUiLCJpc0VtYWlsIiwiZGF0YSIsImVycm9yIiwic2lnbkluIiwiY2FsbGJhY2tVUkwiLCJjb2RlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRva2VuIiwic3VjY2VzcyIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImVyciIsInZhbGlkYXRvcnMiLCJnZXRMb2dpblR5cGVMYWJlbCIsImxhYmVscyIsImRpdiIsImNsYXNzTmFtZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVN1Ym1pdCIsIkFwcEZpZWxkIiwibmFtZSIsImNoaWxkcmVuIiwiZmllbGQiLCJUZXh0RmllbGQiLCJ0eXBlIiwiYXV0b0NvbXBsZXRlIiwibGFiZWwiLCJwcmVmZXRjaCIsIkFwcEZvcm0iLCJTdWJtaXQiLCJsb2FkaW5nTGFiZWwiLCJPYmplY3QiLCJrZXlzIiwiZm9udFNpemUiLCJ0ZXh0VHJhbnNmb3JtIiwibWFyZ2luVG9wIiwiY29sb3IiLCJtYXJnaW5Cb3R0b20iLCJzcGFuIiwiYWxsb3dTaWdudXAiLCJzZXRMb2FkaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxRQUFPO0FBQ2hELFNBQVNDLENBQUMsUUFBUSxNQUFLO0FBQ3ZCLFNBQVNDLFVBQVUsUUFBUSw2QkFBZTtBQUMxQyxTQUFTQyxJQUFJLEVBQUVDLGFBQWEs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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type AdminViewServerProps } from 'payload';
|
|
3
|
+
import type { BetterAuthPluginOptions, SanitizedBetterAuthOptions } from '@/better-auth/plugin/types';
|
|
4
|
+
export declare const loginBaseClass = "login";
|
|
5
|
+
type AdminLoginProps = AdminViewServerProps & {
|
|
6
|
+
pluginOptions: BetterAuthPluginOptions;
|
|
7
|
+
betterAuthOptions: SanitizedBetterAuthOptions;
|
|
8
|
+
};
|
|
9
|
+
declare const AdminLogin: React.FC<AdminLoginProps>;
|
|
10
|
+
export default AdminLogin;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAE,KAAK,oBAAoB,EAAoB,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAErG,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,KAAK,eAAe,GAAG,oBAAoB,GAAG;IAC5C,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,CAAA;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoIzC,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { AdminLoginClient } from "./client";
|
|
4
|
+
import { redirect } from "next/navigation";
|
|
5
|
+
import { Logo } from "../../../../../shared/components/logo";
|
|
6
|
+
import { getSafeRedirect } from "../../utils/get-safe-redirect";
|
|
7
|
+
import { MinimalTemplate } from "@payloadcms/next/templates";
|
|
8
|
+
import { checkPasskeyPlugin } from "../../../helpers/check-passkey-plugin";
|
|
9
|
+
import { checkUsernamePlugin } from "../../../helpers/check-username-plugin";
|
|
10
|
+
import { RenderServerComponent } from "@payloadcms/ui/elements/RenderServerComponent";
|
|
11
|
+
import { adminRoutes, baseCollectionSlugs, defaults } from "../../../constants";
|
|
12
|
+
export const loginBaseClass = 'login';
|
|
13
|
+
const AdminLogin = async ({ initPageResult, params, searchParams, pluginOptions, betterAuthOptions })=>{
|
|
14
|
+
const { locale, permissions, req } = initPageResult;
|
|
15
|
+
const { i18n, payload: { config, collections }, payload, user } = req;
|
|
16
|
+
const { admin: { components: { afterLogin, beforeLogin } = {}, user: userSlug }, routes: { admin: adminRoute } } = config;
|
|
17
|
+
const invitationsCollection = pluginOptions.adminInvitations?.slug ?? baseCollectionSlugs.adminInvitations;
|
|
18
|
+
const adminRole = pluginOptions.users?.defaultAdminRole ?? defaults.adminRole;
|
|
19
|
+
const redirectUrl = getSafeRedirect(searchParams?.redirect ?? '', adminRoute);
|
|
20
|
+
if (user) {
|
|
21
|
+
redirect(redirectUrl);
|
|
22
|
+
}
|
|
23
|
+
const adminCount = await req.payload.count({
|
|
24
|
+
collection: userSlug,
|
|
25
|
+
where: {
|
|
26
|
+
role: {
|
|
27
|
+
equals: adminRole
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
if (adminCount.totalDocs === 0) {
|
|
32
|
+
// Check if we already have an admin invitation
|
|
33
|
+
const existingInvitations = await req.payload.find({
|
|
34
|
+
collection: invitationsCollection,
|
|
35
|
+
where: {
|
|
36
|
+
role: {
|
|
37
|
+
equals: adminRole
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
let token;
|
|
42
|
+
if (existingInvitations.totalDocs > 0) {
|
|
43
|
+
// Use existing token
|
|
44
|
+
token = existingInvitations.docs[0].token;
|
|
45
|
+
} else {
|
|
46
|
+
// Generate a new secure invite token
|
|
47
|
+
token = crypto.randomUUID();
|
|
48
|
+
await req.payload.create({
|
|
49
|
+
collection: invitationsCollection,
|
|
50
|
+
data: {
|
|
51
|
+
role: adminRole,
|
|
52
|
+
token
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
redirect(`${adminRoute}${adminRoutes.adminSignup}?token=${token}`);
|
|
57
|
+
}
|
|
58
|
+
// Filter out the first component from afterLogin array or set to undefined if not more than 1
|
|
59
|
+
// This is because of the custom login redirect component, we don't want an infinite loop
|
|
60
|
+
const filteredAfterLogin = Array.isArray(afterLogin) && afterLogin.length > 1 ? afterLogin.slice(1) : undefined;
|
|
61
|
+
const prefillAutoLogin = typeof config.admin?.autoLogin === 'object' && config.admin?.autoLogin.prefillOnly;
|
|
62
|
+
const prefillUsername = prefillAutoLogin && typeof config.admin?.autoLogin === 'object' ? config.admin?.autoLogin.username : undefined;
|
|
63
|
+
const prefillEmail = prefillAutoLogin && typeof config.admin?.autoLogin === 'object' ? config.admin?.autoLogin.email : undefined;
|
|
64
|
+
const prefillPassword = prefillAutoLogin && typeof config.admin?.autoLogin === 'object' ? config.admin?.autoLogin.password : undefined;
|
|
65
|
+
const hasUsernamePlugin = checkUsernamePlugin(betterAuthOptions);
|
|
66
|
+
const hasPasskeyPlugin = checkPasskeyPlugin(betterAuthOptions);
|
|
67
|
+
const socialProviders = pluginOptions.adminComponents?.socialProviders ?? {};
|
|
68
|
+
const loginWithUsername = collections?.[userSlug]?.config.auth.loginWithUsername;
|
|
69
|
+
const canLoginWithUsername = (hasUsernamePlugin && loginWithUsername) ?? false;
|
|
70
|
+
return /*#__PURE__*/ _jsxs(MinimalTemplate, {
|
|
71
|
+
className: loginBaseClass,
|
|
72
|
+
children: [
|
|
73
|
+
/*#__PURE__*/ _jsx("div", {
|
|
74
|
+
className: `${loginBaseClass}__brand`,
|
|
75
|
+
children: /*#__PURE__*/ _jsx(Logo, {
|
|
76
|
+
i18n: i18n,
|
|
77
|
+
locale: locale,
|
|
78
|
+
params: params,
|
|
79
|
+
payload: payload,
|
|
80
|
+
permissions: permissions,
|
|
81
|
+
searchParams: searchParams,
|
|
82
|
+
user: user ?? undefined
|
|
83
|
+
})
|
|
84
|
+
}),
|
|
85
|
+
RenderServerComponent({
|
|
86
|
+
Component: beforeLogin,
|
|
87
|
+
importMap: payload.importMap,
|
|
88
|
+
serverProps: {
|
|
89
|
+
i18n,
|
|
90
|
+
locale,
|
|
91
|
+
params,
|
|
92
|
+
payload,
|
|
93
|
+
permissions,
|
|
94
|
+
searchParams,
|
|
95
|
+
user: user ?? undefined
|
|
96
|
+
}
|
|
97
|
+
}),
|
|
98
|
+
/*#__PURE__*/ _jsx(AdminLoginClient, {
|
|
99
|
+
loginWithUsername: canLoginWithUsername,
|
|
100
|
+
hasPasskeySupport: hasPasskeyPlugin,
|
|
101
|
+
hasUsernamePlugin: hasUsernamePlugin,
|
|
102
|
+
socialProviders: socialProviders,
|
|
103
|
+
prefillEmail: prefillEmail,
|
|
104
|
+
prefillPassword: prefillPassword,
|
|
105
|
+
prefillUsername: prefillUsername,
|
|
106
|
+
searchParams: searchParams ?? {}
|
|
107
|
+
}),
|
|
108
|
+
RenderServerComponent({
|
|
109
|
+
Component: filteredAfterLogin,
|
|
110
|
+
importMap: payload.importMap,
|
|
111
|
+
serverProps: {
|
|
112
|
+
i18n,
|
|
113
|
+
locale,
|
|
114
|
+
params,
|
|
115
|
+
payload,
|
|
116
|
+
permissions,
|
|
117
|
+
searchParams,
|
|
118
|
+
user: user ?? undefined
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
]
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
export default AdminLogin;
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQWRtaW5Mb2dpbkNsaWVudCB9IGZyb20gJy4vY2xpZW50J1xuaW1wb3J0IHsgcmVkaXJlY3QgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgeyBMb2dvIH0gZnJvbSAnQC9zaGFyZWQvY29tcG9uZW50cy9sb2dvJ1xuaW1wb3J0IHsgZ2V0U2FmZVJlZGlyZWN0IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZXQtc2FmZS1yZWRpcmVjdCdcbmltcG9ydCB7IE1pbmltYWxUZW1wbGF0ZSB9IGZyb20gJ0BwYXlsb2FkY21zL25leHQvdGVtcGxhdGVzJ1xuaW1wb3J0IHsgY2hlY2tQYXNza2V5UGx1Z2luIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9jaGVjay1wYXNza2V5LXBsdWdpbidcbmltcG9ydCB7IGNoZWNrVXNlcm5hbWVQbHVnaW4gfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL2NoZWNrLXVzZXJuYW1lLXBsdWdpbidcbmltcG9ydCB7IFJlbmRlclNlcnZlckNvbXBvbmVudCB9IGZyb20gJ0BwYXlsb2FkY21zL3VpL2VsZW1lbnRzL1JlbmRlclNlcnZlckNvbXBvbmVudCdcbmltcG9ydCB7IGFkbWluUm91dGVzLCBiYXNlQ29sbGVjdGlvblNsdWdzLCBkZWZhdWx0cyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcblxuaW1wb3J0IHsgdHlwZSBBZG1pblZpZXdTZXJ2ZXJQcm9wcywgdHlwZSBTZXJ2ZXJQcm9wcyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhQbHVnaW5PcHRpb25zLCBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgbG9naW5CYXNlQ2xhc3MgPSAnbG9naW4nXG5cbnR5cGUgQWRtaW5Mb2dpblByb3BzID0gQWRtaW5WaWV3U2VydmVyUHJvcHMgJiB7XG4gIHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zXG4gIGJldHRlckF1dGhPcHRpb25zOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9uc1xufVxuXG5jb25zdCBBZG1pbkxvZ2luOiBSZWFjdC5GQzxBZG1pbkxvZ2luUHJvcHM+ID0gYXN5bmMgKHtcbiAgaW5pdFBhZ2VSZXN1bHQsXG4gIHBhcmFtcyxcbiAgc2VhcmNoUGFyYW1zLFxuICBwbHVnaW5PcHRpb25zLFxuICBiZXR0ZXJBdXRoT3B0aW9uc1xufTogQWRtaW5Mb2dpblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgbG9jYWxlLCBwZXJtaXNzaW9ucywgcmVxIH0gPSBpbml0UGFnZVJlc3VsdFxuICBjb25zdCB7XG4gICAgaTE4bixcbiAgICBwYXlsb2FkOiB7IGNvbmZpZywgY29sbGVjdGlvbnMgfSxcbiAgICBwYXlsb2FkLFxuICAgIHVzZXJcbiAgfSA9IHJlcVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBjb21wb25lbnRzOiB7IGFmdGVyTG9naW4sIGJlZm9yZUxvZ2luIH0gPSB7fSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW46IGFkbWluUm91dGUgfVxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgaW52aXRhdGlvbnNDb2xsZWN0aW9uID0gcGx1Z2luT3B0aW9ucy5hZG1pbkludml0YXRpb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWRtaW5JbnZpdGF0aW9uc1xuICBjb25zdCBhZG1pblJvbGUgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5kZWZhdWx0QWRtaW5Sb2xlID8/IGRlZmF1bHRzLmFkbWluUm9sZVxuICBjb25zdCByZWRpcmVjdFVybCA9IGdldFNhZmVSZWRpcmVjdChzZWFyY2hQYXJhbXM/LnJlZGlyZWN0ID8/ICcnLCBhZG1pblJvdXRlKVxuXG4gIGlmICh1c2VyKSB7XG4gICAgcmVkaXJlY3QocmVkaXJlY3RVcmwpXG4gIH1cblxuICBjb25zdCBhZG1pbkNvdW50ID0gYXdhaXQgcmVxLnBheWxvYWQuY291bnQoe1xuICAgIGNvbGxlY3Rpb246IHVzZXJTbHVnLFxuICAgIHdoZXJlOiB7XG4gICAgICByb2xlOiB7XG4gICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIGlmIChhZG1pbkNvdW50LnRvdGFsRG9jcyA9PT0gMCkge1xuICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBhZG1pbiBpbnZpdGF0aW9uXG4gICAgY29uc3QgZXhpc3RpbmdJbnZpdGF0aW9ucyA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgd2hlcmU6IHtcbiAgICAgICAgcm9sZToge1xuICAgICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgbGV0IHRva2VuXG5cbiAgICBpZiAoZXhpc3RpbmdJbnZpdGF0aW9ucy50b3RhbERvY3MgPiAwKSB7XG4gICAgICAvLyBVc2UgZXhpc3RpbmcgdG9rZW5cbiAgICAgIHRva2VuID0gZXhpc3RpbmdJbnZpdGF0aW9ucy5kb2NzWzBdLnRva2VuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHNlY3VyZSBpbnZpdGUgdG9rZW5cbiAgICAgIHRva2VuID0gY3J5cHRvLnJhbmRvbVVVSUQoKVxuICAgICAgYXdhaXQgcmVxLnBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcm9sZTogYWRtaW5Sb2xlLFxuICAgICAgICAgIHRva2VuXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmVkaXJlY3QoYCR7YWRtaW5Sb3V0ZX0ke2FkbWluUm91dGVzLmFkbWluU2lnbnVwfT90b2tlbj0ke3Rva2VufWApXG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IHRoZSBmaXJzdCBjb21wb25lbnQgZnJvbSBhZnRlckxvZ2luIGFycmF5IG9yIHNldCB0byB1bmRlZmluZWQgaWYgbm90IG1vcmUgdGhhbiAxXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgY3VzdG9tIGxvZ2luIHJlZGlyZWN0IGNvbXBvbmVudCwgd2UgZG9uJ3Qgd2FudCBhbiBpbmZpbml0ZSBsb29wXG4gIGNvbnN0IGZpbHRlcmVkQWZ0ZXJMb2dpbiA9IEFycmF5LmlzQXJyYXkoYWZ0ZXJMb2dpbikgJiYgYWZ0ZXJMb2dpbi5sZW5ndGggPiAxID8gYWZ0ZXJMb2dpbi5zbGljZSgxKSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsQXV0b0xvZ2luID0gdHlwZW9mIGNvbmZpZy5hZG1pbj8uYXV0b0xvZ2luID09PSAnb2JqZWN0JyAmJiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wcmVmaWxsT25seVxuICBjb25zdCBwcmVmaWxsVXNlcm5hbWUgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi51c2VybmFtZSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsRW1haWwgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5lbWFpbCA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsUGFzc3dvcmQgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wYXNzd29yZCA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGhhc1Bhc3NrZXlQbHVnaW4gPSBjaGVja1Bhc3NrZXlQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IHNvY2lhbFByb3ZpZGVycyA9IHBsdWdpbk9wdGlvbnMuYWRtaW5Db21wb25lbnRzPy5zb2NpYWxQcm92aWRlcnMgPz8ge31cbiAgY29uc3QgbG9naW5XaXRoVXNlcm5hbWUgPSBjb2xsZWN0aW9ucz8uW3VzZXJTbHVnXT8uY29uZmlnLmF1dGgubG9naW5XaXRoVXNlcm5hbWVcbiAgY29uc3QgY2FuTG9naW5XaXRoVXNlcm5hbWUgPSAoaGFzVXNlcm5hbWVQbHVnaW4gJiYgbG9naW5XaXRoVXNlcm5hbWUpID8/IGZhbHNlXG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbFRlbXBsYXRlIGNsYXNzTmFtZT17bG9naW5CYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2xvZ2luQmFzZUNsYXNzfV9fYnJhbmRgfT5cbiAgICAgICAgPExvZ29cbiAgICAgICAgICBpMThuPXtpMThufVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIHBhcmFtcz17cGFyYW1zfVxuICAgICAgICAgIHBheWxvYWQ9e3BheWxvYWR9XG4gICAgICAgICAgcGVybWlzc2lvbnM9e3Blcm1pc3Npb25zfVxuICAgICAgICAgIHNlYXJjaFBhcmFtcz17c2VhcmNoUGFyYW1zfVxuICAgICAgICAgIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7UmVuZGVyU2VydmVyQ29tcG9uZW50KHtcbiAgICAgICAgQ29tcG9uZW50OiBiZWZvcmVMb2dpbixcbiAgICAgICAgaW1wb3J0TWFwOiBwYXlsb2FkLmltcG9ydE1hcCxcbiAgICAgICAgc2VydmVyUHJvcHM6IHtcbiAgICAgICAgICBpMThuLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICBwZXJtaXNzaW9ucyxcbiAgICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgICAgdXNlcjogdXNlciA/PyB1bmRlZmluZWRcbiAgICAgICAgfSBzYXRpc2ZpZXMgU2VydmVyUHJvcHNcbiAgICAgIH0pfVxuICAgICAgPEFkbWluTG9naW5DbGllbnRcbiAgICAgICAgbG9naW5XaXRoVXNlcm5hbWU9e2NhbkxvZ2luV2l0aFVzZXJuYW1lfVxuICAgICAgICBoYXNQYXNza2V5U3VwcG9ydD17aGFzUGFzc2tleVBsdWdpbn1cbiAgICAgICAgaGFzVXNlcm5hbWVQbHVnaW49e2hhc1VzZXJuYW1lUGx1Z2lufVxuICAgICAgICBzb2NpYWxQcm92aWRlcnM9e3NvY2lhbFByb3ZpZGVyc31cbiAgICAgICAgcHJlZmlsbEVtYWlsPXtwcmVmaWxsRW1haWx9XG4gICAgICAgIHByZWZpbGxQYXNzd29yZD17cHJlZmlsbFBhc3N3b3JkfVxuICAgICAgICBwcmVmaWxsVXNlcm5hbWU9e3ByZWZpbGxVc2VybmFtZX1cbiAgICAgICAgc2VhcmNoUGFyYW1zPXtzZWFyY2hQYXJhbXMgPz8ge319XG4gICAgICAvPlxuICAgICAge1JlbmRlclNlcnZlckNvbXBvbmVudCh7XG4gICAgICAgIENvbXBvbmVudDogZmlsdGVyZWRBZnRlckxvZ2luLFxuICAgICAgICBpbXBvcnRNYXA6IHBheWxvYWQuaW1wb3J0TWFwLFxuICAgICAgICBzZXJ2ZXJQcm9wczoge1xuICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgIHNlYXJjaFBhcmFtcyxcbiAgICAgICAgICB1c2VyOiB1c2VyID8/IHVuZGVmaW5lZFxuICAgICAgICB9IHNhdGlzZmllcyBTZXJ2ZXJQcm9wc1xuICAgICAgfSl9XG4gICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRtaW5Mb2dpblxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiQWRtaW5Mb2dpbkNsaWVudCIsInJlZGlyZWN0IiwiTG9nbyIsImdldFNhZmVSZWRpcmVjdCIsIk1pbmltYWxUZW1wbGF0ZSIsImNoZWNrUGFzc2tleVBsdWdpbiIsImNoZWNrVXNlcm5hbWVQbHVnaW4iLCJSZW5kZXJTZXJ2ZXJDb21wb25lbnQiLCJhZG1pblJvdXRlcyIsImJhc2VDb2xsZWN0aW9uU2x1Z3MiLCJkZWZhdWx0cyIsImxvZ2luQmFzZUNsYXNzIiwiQWRtaW5Mb2dpbiIsImluaXRQYWdlUmVzdWx0IiwicGFyYW1zIiwic2VhcmNoUGFyYW1zIiwicGx1Z2luT3B0aW9ucyIsImJldHRlckF1dGhPcHRpb25zIiwibG9jYWxlIiwicGVybWlzc2lvbnMiLCJyZXEiLCJpMThuIiwicGF5bG9hZCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwidXNlciIsImFkbWluIiwiY29tcG9uZW50cyIsImFmdGVyTG9naW4iLCJiZWZvcmVMb2dpbiIsInVzZXJTbHVnIiwicm91dGVzIiwiYWRtaW5Sb3V0ZSIsImludml0YXRpb25zQ29sbGVjdGlvbiIsImFkbWluSW52aXRhdGlvbnMiLCJzbHVnIiwiYWRtaW5Sb2xlIiwidXNlcnMiLCJkZWZhdWx0QWRtaW5Sb2xlIiwicmVkaXJlY3RVcmwiLCJhZG1pbkNvdW50IiwiY291bnQiLCJjb2xsZWN0aW9uIiwid2hlcmUiLCJyb2xlIiwiZXF1YWxzIiwidG90YWxEb2NzIiwiZXhpc3RpbmdJbnZpdGF0aW9ucyIsImZpbmQiLCJ0b2tlbiIsImRvY3MiLCJjcnlwdG8iLCJyYW5kb21VVUlEIiwiY3JlYXRlIiwiZGF0YSIsImFkbWluU2lnbnVwIiwiZmlsdGVyZWRBZnRlckxvZ2luIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJ1bmRlZmluZWQiLCJwcmVmaWxsQXV0b0xvZ2luIiwiYXV0b0xvZ2luIiwicHJlZmlsbE9ubHkiLCJwcmVmaWxsVXNlcm5hbWUiLCJ1c2VybmFtZSIsInByZWZpbGxFbWFpbCIsImVtYWlsIiwicHJlZmlsbFBhc3N3b3JkIiwicGFzc3dvcmQiLCJoYXNVc2VybmFtZVBsdWdpbiIsImhhc1Bhc3NrZXlQbHVnaW4iLCJzb2NpYWxQcm92aWRlcnMiLCJhZG1pbkNvbXBvbmVudHMiLCJsb2dpbldpdGhVc2VybmFtZSIsImF1dGgiLCJjYW5Mb2dpbldpdGhVc2VybmFtZSIsImNsYXNzTmFtZSIsImRpdiIsIkNvbXBvbmVudCIsImltcG9ydE1hcCIsInNlcnZlclByb3BzIiwiaGFzUGFzc2tleVN1cHBvcnQiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQU87QUFDekIsU0FBU0MsZ0JBQWdCLFFBQVEsV0FBVTtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsa0JBQWlCO0FBQzFDLFNBQVNDLElBQUksUUFBUSx3Q0FBMEI7QUFDL0MsU0FBU0MsZUFBZSxRQUFRLGdDQUFzRDtBQUN0RixTQUFTQyxlQUFlLFFBQVEsNkJBQTRCO0FBQzVELFNBQVNDLGtCQUFrQixRQUFRLHdDQUFtRDtBQUN0RixTQUFTQyxtQkFBbUIsUUFBUSx5Q0FBb0Q7QUFDeEYsU0FBU0MscUJBQXFCLFFBQVEsZ0RBQStDO0FBQ3JGLFNBQVNDLFdBQVcsRUFBRUMsbUJBQW1CLEVBQUVDLFFBQVEsUUFBUSxxQkFBZ0M7QUFLM0YsT0FBTyxNQUFNQyxpQkFBaUIsUUFBTztBQU9yQyxNQUFNQyxhQUF3QyxPQUFPLEVBQ25EQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGlCQUFpQixFQUNEO0lBQ2hCLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLEdBQUcsRUFBRSxHQUFHUDtJQUNyQyxNQUFNLEVBQ0pRLElBQUksRUFDSkMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsRUFBRSxFQUNoQ0YsT0FBTyxFQUNQRyxJQUFJLEVBQ0wsR0FBR0w7SUFFSixNQUFNLEVBQ0pNLE9BQU8sRUFBRUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFSixNQUFNSyxRQUFRLEVBQUUsRUFDdkVDLFFBQVEsRUFBRUwsT0FBT00sVUFBVSxFQUFFLEVBQzlCLEdBQUdUO0lBRUosTUFBTVUsd0JBQXdCakIsY0FBY2tCLGdCQUFnQixFQUFFQyxRQUFRMUIsb0JBQW9CeUIsZ0JBQWdCO0lBQzFHLE1BQU1FLFlBQVlwQixjQUFjcUIsS0FBSyxFQUFFQyxvQkFBb0I1QixTQUFTMEIsU0FBUztJQUM3RSxNQUFNRyxjQUFjcEMsZ0JBQWdCWSxjQUFjZCxZQUFZLElBQUkrQjtJQUVsRSxJQUFJUCxNQUFNO1FBQ1J4QixTQUFTc0M7SUFDWDtJQUVBLE1BQU1DLGFBQWEsTUFBTXBCLElBQUlFLE9BQU8sQ0FBQ21CLEtBQUssQ0FBQztRQUN6Q0MsWUFBWVo7UUFDWmEsT0FBTztZQUNMQyxNQUFNO2dCQUNKQyxRQUFRVDtZQUNWO1FBQ0Y7SUFDRjtJQUVBLElBQUlJLFdBQVdNLFNBQVMsS0FBSyxHQUFHO1FBQzlCLCtDQUErQztRQUMvQyxNQUFNQyxzQkFBc0IsTUFBTTNCLElBQUlFLE9BQU8sQ0FBQzBCLElBQUksQ0FBQztZQUNqRE4sWUFBWVQ7WUFDWlUsT0FBTztnQkFDTEMsTUFBTTtvQkFDSkMsUUFBUVQ7Z0JBQ1Y7WUFDRjtRQUNGO1FBRUEsSUFBSWE7UUFFSixJQUFJRixvQkFBb0JELFNBQVMsR0FBRyxHQUFHO1lBQ3JDLHFCQUFxQjtZQUNyQkcsUUFBUUYsb0JBQW9CRyxJQUFJLENBQUMsRUFBRSxDQUFDRCxLQUFLO1FBQzNDLE9BQU87WUFDTCxxQ0FBcUM7WUFDckNBLFFBQVFFLE9BQU9DLFVBQVU7WUFDekIsTUFBTWhDLElBQUlFLE9BQU8sQ0FBQytCLE1BQU0sQ0FBQztnQkFDdkJYLFlBQVlUO2dCQUNacUIsTUFBTTtvQkFDSlYsTUFBTVI7b0JBQ05hO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBaEQsU0FBUyxHQUFHK0IsYUFBYXhCLFlBQVkrQyxXQUFXLENBQUMsT0FBTyxFQUFFTixPQUFPO0lBQ25FO0lBRUEsOEZBQThGO0lBQzlGLHlGQUF5RjtJQUN6RixNQUFNTyxxQkFBcUJDLE1BQU1DLE9BQU8sQ0FBQzlCLGVBQWVBLFdBQVcrQixNQUFNLEdBQUcsSUFBSS9CLFdBQVdnQyxLQUFLLENBQUMsS0FBS0M7SUFDdEcsTUFBTUMsbUJBQW1CLE9BQU92QyxPQUFPRyxLQUFLLEVBQUVxQyxjQUFjLFlBQVl4QyxPQUFPRyxLQUFLLEVBQUVxQyxVQUFVQztJQUNoRyxNQUFNQyxrQkFBa0JILG9CQUFvQixPQUFPdkMsT0FBT0csS0FBSyxFQUFFcUMsY0FBYyxXQUFXeEMsT0FBT0csS0FBSyxFQUFFcUMsVUFBVUcsV0FBV0w7SUFDN0gsTUFBTU0sZUFBZUwsb0JBQW9CLE9BQU92QyxPQUFPRyxLQUFLLEVBQUVxQyxjQUFjLFdBQVd4QyxPQUFPRyxLQUFLLEVBQUVxQyxVQUFVSyxRQUFRUDtJQUN2SCxNQUFNUSxrQkFBa0JQLG9CQUFvQixPQUFPdkMsT0FBT0csS0FBSyxFQUFFcUMsY0FBYyxXQUFXeEMsT0FBT0csS0FBSyxFQUFFcUMsVUFBVU8sV0FBV1Q7SUFDN0gsTUFBTVUsb0JBQW9CakUsb0JBQW9CVztJQUM5QyxNQUFNdUQsbUJBQW1CbkUsbUJBQW1CWTtJQUM1QyxNQUFNd0Qsa0JBQWtCekQsY0FBYzBELGVBQWUsRUFBRUQsbUJBQW1CLENBQUM7SUFDM0UsTUFBTUUsb0JBQW9CbkQsYUFBYSxDQUFDTSxTQUFTLEVBQUVQLE9BQU9xRCxLQUFLRDtJQUMvRCxNQUFNRSx1QkFBdUIsQUFBQ04sQ0FBQUEscUJBQXFCSSxpQkFBZ0IsS0FBTTtJQUV6RSxxQkFDRSxNQUFDdkU7UUFBZ0IwRSxXQUFXbkU7OzBCQUMxQixLQUFDb0U7Z0JBQUlELFdBQVcsR0FBR25FLGVBQWUsT0FBTyxDQUFDOzBCQUN4QyxjQUFBLEtBQUNUO29CQUNDbUIsTUFBTUE7b0JBQ05ILFFBQVFBO29CQUNSSixRQUFRQTtvQkFDUlEsU0FBU0E7b0JBQ1RILGFBQWFBO29CQUNiSixjQUFjQTtvQkFDZFUsTUFBTUEsUUFBUW9DOzs7WUFHakJ0RCxzQkFBc0I7Z0JBQ3JCeUUsV0FBV25EO2dCQUNYb0QsV0FBVzNELFFBQVEyRCxTQUFTO2dCQUM1QkMsYUFBYTtvQkFDWDdEO29CQUNBSDtvQkFDQUo7b0JBQ0FRO29CQUNBSDtvQkFDQUo7b0JBQ0FVLE1BQU1BLFFBQVFvQztnQkFDaEI7WUFDRjswQkFDQSxLQUFDN0Q7Z0JBQ0MyRSxtQkFBbUJFO2dCQUNuQk0sbUJBQW1CWDtnQkFDbkJELG1CQUFtQkE7Z0JBQ25CRSxpQkFBaUJBO2dCQUNqQk4sY0FBY0E7Z0JBQ2RFLGlCQUFpQkE7Z0JBQ2pCSixpQkFBaUJBO2dCQUNqQmxELGNBQWNBLGdCQUFnQixDQUFDOztZQUVoQ1Isc0JBQXNCO2dCQUNyQnlFLFdBQVd4QjtnQkFDWHlCLFdBQVczRCxRQUFRMkQsU0FBUztnQkFDNUJDLGFBQWE7b0JBQ1g3RDtvQkFDQUg7b0JBQ0FKO29CQUNBUTtvQkFDQUg7b0JBQ0FKO29CQUNBVSxNQUFNQSxRQUFRb0M7Z0JBQ2hCO1lBQ0Y7OztBQUdOO0FBRUEsZUFBZWpELFdBQVUifQ==
|