@revealui/auth 0.0.1-pre.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/LICENSE +202 -0
- package/dist/better-auth/adapter/__tests__/transform.test.js +213 -0
- package/dist/better-auth/adapter/__tests__/transform.test.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/biome.d.js +2 -0
- package/dist/better-auth/adapter/generate-schema/biome.d.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +5 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +482 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +1 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +42 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/index.d.ts +4 -0
- package/dist/better-auth/adapter/generate-schema/index.js +19 -0
- package/dist/better-auth/adapter/generate-schema/index.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/utils.d.ts +2 -0
- package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
- package/dist/better-auth/adapter/generate-schema/utils.js.map +1 -0
- package/dist/better-auth/adapter/index.d.ts +15 -0
- package/dist/better-auth/adapter/index.js +731 -0
- package/dist/better-auth/adapter/index.js.map +1 -0
- package/dist/better-auth/adapter/tests/adapter.test.js +174 -0
- package/dist/better-auth/adapter/tests/adapter.test.js.map +1 -0
- package/dist/better-auth/adapter/tests/base-collections-tests.js +575 -0
- package/dist/better-auth/adapter/tests/base-collections-tests.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/index.js +117 -0
- package/dist/better-auth/adapter/tests/dev/index.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/migrate.js +26 -0
- package/dist/better-auth/adapter/tests/dev/migrate.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js +218 -0
- package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/schema.js +160 -0
- package/dist/better-auth/adapter/tests/dev/schema.js.map +1 -0
- package/dist/better-auth/adapter/tests/plugins-tests.js +2 -0
- package/dist/better-auth/adapter/tests/plugins-tests.js.map +1 -0
- package/dist/better-auth/adapter/transform/index.d.ts +27 -0
- package/dist/better-auth/adapter/transform/index.js +664 -0
- package/dist/better-auth/adapter/transform/index.js.map +1 -0
- package/dist/better-auth/adapter/types.d.ts +10 -0
- package/dist/better-auth/adapter/types.js +3 -0
- package/dist/better-auth/adapter/types.js.map +1 -0
- package/dist/better-auth/generated-types.d.ts +285 -0
- package/dist/better-auth/index.d.ts +3 -0
- package/dist/better-auth/index.js +5 -0
- package/dist/better-auth/index.js.map +1 -0
- package/dist/better-auth/plugin/__tests__/plugin.test.js +162 -0
- package/dist/better-auth/plugin/__tests__/plugin.test.js.map +1 -0
- package/dist/better-auth/plugin/constants.d.ts +220 -0
- package/dist/better-auth/plugin/constants.js +249 -0
- package/dist/better-auth/plugin/constants.js.map +1 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +12 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.js.map +1 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +29 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +7 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +5 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +18 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +70 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +5 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-collection.d.ts +15 -0
- package/dist/better-auth/plugin/helpers/get-collection.js +29 -0
- package/dist/better-auth/plugin/helpers/get-collection.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-ip.d.ts +2 -0
- package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
- package/dist/better-auth/plugin/helpers/get-ip.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +2 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.js +65 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.js.map +1 -0
- package/dist/better-auth/plugin/helpers/index.d.ts +1 -0
- package/dist/better-auth/plugin/helpers/index.js +3 -0
- package/dist/better-auth/plugin/helpers/index.js.map +1 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +59 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.js.map +1 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +20 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +67 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js.map +1 -0
- package/dist/better-auth/plugin/index.d.ts +11 -0
- package/dist/better-auth/plugin/index.js +125 -0
- package/dist/better-auth/plugin/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +12 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +60 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +154 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +5 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +119 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +177 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.js +50 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +10 -0
- package/dist/better-auth/plugin/lib/build-collections/index.js +73 -0
- package/dist/better-auth/plugin/lib/build-collections/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +94 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +59 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/members.js +73 -0
- package/dist/better-auth/plugin/lib/build-collections/members.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +107 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +118 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +89 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +70 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +170 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +81 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +111 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.js +57 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.js +76 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +53 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +11 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +75 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +115 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +80 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +79 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +82 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +91 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +341 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +15 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.d.ts +10 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +9 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +94 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +35 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +25 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +14 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +20 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +98 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +87 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.js.map +1 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +5 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.js.map +1 -0
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +7 -0
- package/dist/better-auth/plugin/lib/init-better-auth.js +46 -0
- package/dist/better-auth/plugin/lib/init-better-auth.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +156 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +7 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +25 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +47 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +15 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +42 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +63 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/set-login-methods.d.ts +4 -0
- package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
- package/dist/better-auth/plugin/lib/set-login-methods.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +143 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +10 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +219 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
- package/dist/better-auth/plugin/payload/components/logout-button.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +117 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js +66 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js +52 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +22 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +6 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js +7 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +15 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +157 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/token-field.js +31 -0
- package/dist/better-auth/plugin/payload/components/token-field.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +300 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/exports/client.d.ts +6 -0
- package/dist/better-auth/plugin/payload/exports/client.js +8 -0
- package/dist/better-auth/plugin/payload/exports/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +8 -0
- package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
- package/dist/better-auth/plugin/payload/exports/rsc.js.map +1 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +2 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +1 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +19 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +226 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +10 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +150 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js.map +1 -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.js +299 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +104 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +119 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +78 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +10 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +144 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +96 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +6 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +96 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +56 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js.map +1 -0
- package/dist/better-auth/plugin/types.d.ts +429 -0
- package/dist/better-auth/plugin/types.js +3 -0
- package/dist/better-auth/plugin/types.js.map +1 -0
- package/dist/better-auth/plugin/utils/set.d.ts +39 -0
- package/dist/better-auth/plugin/utils/set.js +103 -0
- package/dist/better-auth/plugin/utils/set.js.map +1 -0
- package/dist/better-auth/scripts/generate-types.d.ts +1 -0
- package/dist/better-auth/scripts/generate-types.js +234 -0
- package/dist/better-auth/scripts/generate-types.js.map +1 -0
- package/dist/better-auth/types.d.ts +2 -0
- package/dist/better-auth/types.js +4 -0
- package/dist/better-auth/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/components/icons.d.ts +7 -0
- package/dist/shared/components/icons.js +442 -0
- package/dist/shared/components/icons.js.map +1 -0
- package/dist/shared/components/logo.d.ts +3 -0
- package/dist/shared/components/logo.js +24 -0
- package/dist/shared/components/logo.js.map +1 -0
- package/dist/shared/form/components/submit.d.ts +7 -0
- package/dist/shared/form/components/submit.js +16 -0
- package/dist/shared/form/components/submit.js.map +1 -0
- package/dist/shared/form/fields/text-field.d.ts +8 -0
- package/dist/shared/form/fields/text-field.js +37 -0
- package/dist/shared/form/fields/text-field.js.map +1 -0
- package/dist/shared/form/index.d.ts +4 -0
- package/dist/shared/form/index.js +8 -0
- package/dist/shared/form/index.js.map +1 -0
- package/dist/shared/form/ui/header/index.d.ts +8 -0
- package/dist/shared/form/ui/header/index.js +24 -0
- package/dist/shared/form/ui/header/index.js.map +1 -0
- package/dist/shared/form/ui/index.d.ts +31 -0
- package/dist/shared/form/ui/index.js +57 -0
- package/dist/shared/form/ui/index.js.map +1 -0
- package/dist/shared/form/validation.d.ts +51 -0
- package/dist/shared/form/validation.js +127 -0
- package/dist/shared/form/validation.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts +3 -0
- package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
- package/dist/shared/payload/fields/field-copy-button/index.js.map +1 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +3 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js.map +1 -0
- package/dist/shared/payload/fields/index.d.ts +2 -0
- package/dist/shared/payload/fields/index.js +4 -0
- package/dist/shared/payload/fields/index.js.map +1 -0
- package/dist/shared/utils/regex.d.ts +2 -0
- package/dist/shared/utils/regex.js +4 -0
- package/dist/shared/utils/regex.js.map +1 -0
- package/dist/shared/utils/try-catch.d.ts +11 -0
- package/dist/shared/utils/try-catch.js +17 -0
- package/dist/shared/utils/try-catch.js.map +1 -0
- package/dist/shared/utils/value-or-default.d.ts +9 -0
- package/dist/shared/utils/value-or-default.js +12 -0
- package/dist/shared/utils/value-or-default.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/team-members.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { TeamMember } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\n\nexport function buildTeamMembersCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const teamMemberSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.teamMember);\n const teamMemberSchema = resolvedSchemas[baModelKey.teamMember];\n\n const existingTeamMemberCollection = incomingCollections.find(\n collection => collection.slug === teamMemberSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof TeamMember> = {\n teamId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The team that the membership belongs to.' },\n }),\n userId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The user that is a member of the team.' },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: teamMemberSchema,\n additionalProperties: fieldOverrides,\n });\n\n const teamMemberCollection: CollectionConfig = {\n ...existingTeamMemberCollection,\n slug: teamMemberSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.teamMember, 'teamId'),\n description: 'Team members of an organization team.',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingTeamMemberCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingTeamMemberCollection?.access ?? {}),\n },\n custom: {\n ...(existingTeamMemberCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.teamMember,\n },\n fields: [\n ...(existingTeamMemberCollection?.fields ?? []),\n ...filterDuplicateFields(existingTeamMemberCollection?.fields, collectionFields),\n ],\n };\n\n assertAllSchemaFields(teamMemberCollection, teamMemberSchema);\n\n return teamMemberCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildTeamMembersCollection","incomingCollections","pluginOptions","resolvedSchemas","teamMemberSlug","teamMember","teamMemberSchema","existingTeamMemberCollection","find","collection","slug","fieldOverrides","teamId","index","admin","readOnly","description","userId","collectionFields","schema","additionalProperties","teamMemberCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,2BAA2B,EACzCC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,iBAAiBR,wBAAwBO,iBAAiBV,WAAWY,UAAU;IACrF,MAAMC,mBAAmBH,eAAe,CAACV,WAAWY,UAAU,CAAC;IAE/D,MAAME,+BAA+BN,oBAAoBO,IAAI,CAC3DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAmD;QACvDC,QAAQ,IAAO,CAAA;gBACbC,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAA2C;YACnF,CAAA;QACAC,QAAQ,IAAO,CAAA;gBACbJ,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAyC;YACjF,CAAA;IACF;IAEA,MAAME,mBAAmBnB,oBAAoB;QAC3CoB,QAAQb;QACRc,sBAAsBT;IACxB;IAEA,MAAMU,uBAAyC;QAC7C,GAAGd,4BAA4B;QAC/BG,MAAMN;QACNU,OAAO;YACLQ,QAAQpB,cAAcqB,qBAAqB,IAAI;YAC/CC,YAAY3B,mBAAmBM,iBAAiBV,WAAWY,UAAU,EAAE;YACvEW,aAAa;YACbS,OAAOvB,eAAewB,wBAAwB;YAC9C,GAAGnB,8BAA8BO,KAAK;QACxC;QACAa,QAAQ;YACN,GAAGjC,eAAeQ,cAAc;YAChC,GAAIK,8BAA8BoB,UAAU,CAAC,CAAC;QAChD;QACAC,QAAQ;YACN,GAAIrB,8BAA8BqB,UAAU,CAAC,CAAC;YAC9CC,oBAAoBpC,WAAWY,UAAU;QAC3C;QACAyB,QAAQ;eACFvB,8BAA8BuB,UAAU,EAAE;eAC3ChC,sBAAsBS,8BAA8BuB,QAAQZ;SAChE;IACH;IAEAvB,sBAAsB0B,sBAAsBf;IAE5C,OAAOe;AACT"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { baModelKey } from "../../constants";
|
|
2
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
3
|
+
import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
|
|
4
|
+
import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
|
|
5
|
+
import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
|
|
6
|
+
export function buildTeamsCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
7
|
+
const teamSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.team);
|
|
8
|
+
const teamSchema = resolvedSchemas[baModelKey.team];
|
|
9
|
+
const existingTeamCollection = incomingCollections.find((collection)=>collection.slug === teamSlug);
|
|
10
|
+
const fieldOverrides = {
|
|
11
|
+
name: ()=>({
|
|
12
|
+
admin: {
|
|
13
|
+
description: 'The name of the team.'
|
|
14
|
+
}
|
|
15
|
+
}),
|
|
16
|
+
organizationId: ()=>({
|
|
17
|
+
admin: {
|
|
18
|
+
readOnly: true,
|
|
19
|
+
description: 'The organization that the team belongs to.'
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
};
|
|
23
|
+
const teamFieldRules = [
|
|
24
|
+
{
|
|
25
|
+
condition: (field)=>field.type === 'date',
|
|
26
|
+
transform: (field)=>({
|
|
27
|
+
...field,
|
|
28
|
+
saveToJWT: false,
|
|
29
|
+
admin: {
|
|
30
|
+
disableBulkEdit: true,
|
|
31
|
+
hidden: true
|
|
32
|
+
},
|
|
33
|
+
index: true,
|
|
34
|
+
// Using any because PayloadCMS label function receives translation function with dynamic type
|
|
35
|
+
label: ({ t })=>t('general:updatedAt')
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
const collectionFields = getCollectionFields({
|
|
40
|
+
schema: teamSchema,
|
|
41
|
+
fieldRules: teamFieldRules,
|
|
42
|
+
additionalProperties: fieldOverrides
|
|
43
|
+
});
|
|
44
|
+
let teamCollection = {
|
|
45
|
+
...existingTeamCollection,
|
|
46
|
+
slug: teamSlug,
|
|
47
|
+
admin: {
|
|
48
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
49
|
+
useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.team, 'name'),
|
|
50
|
+
description: 'Teams are groups of users that share access to certain resources.',
|
|
51
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
52
|
+
...existingTeamCollection?.admin
|
|
53
|
+
},
|
|
54
|
+
access: {
|
|
55
|
+
...getAdminAccess(pluginOptions),
|
|
56
|
+
...existingTeamCollection?.access ?? {}
|
|
57
|
+
},
|
|
58
|
+
custom: {
|
|
59
|
+
...existingTeamCollection?.custom ?? {},
|
|
60
|
+
betterAuthModelKey: baModelKey.team
|
|
61
|
+
},
|
|
62
|
+
fields: [
|
|
63
|
+
...existingTeamCollection?.fields ?? [],
|
|
64
|
+
...filterDuplicateFields(existingTeamCollection?.fields, collectionFields)
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
if (typeof pluginOptions.pluginCollectionOverrides?.teams === 'function') {
|
|
68
|
+
teamCollection = pluginOptions.pluginCollectionOverrides.teams({
|
|
69
|
+
collection: teamCollection
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
assertAllSchemaFields(teamCollection, teamSchema);
|
|
73
|
+
return teamCollection;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=teams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/teams.ts"],"sourcesContent":["import type { Team } from '@/better-auth/generated-types';\nimport type { CollectionConfig } from 'payload';\nimport { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport type { BuildCollectionProps, FieldOverrides, FieldRule } from '../../types';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nexport function buildTeamsCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const teamSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.team);\n const teamSchema = resolvedSchemas[baModelKey.team];\n const existingTeamCollection = incomingCollections.find(\n collection => collection.slug === teamSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Team> = {\n name: () => ({\n admin: { description: 'The name of the team.' },\n }),\n organizationId: () => ({\n admin: {\n readOnly: true,\n description: 'The organization that the team belongs to.',\n },\n }),\n };\n\n const teamFieldRules: FieldRule[] = [\n {\n condition: field => field.type === 'date',\n transform: field => ({\n ...field,\n saveToJWT: false,\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n index: true,\n // Using any because PayloadCMS label function receives translation function with dynamic type\n label: ({ t }: any) => t('general:updatedAt'),\n }),\n },\n ];\n\n const collectionFields = getCollectionFields({\n schema: teamSchema,\n fieldRules: teamFieldRules,\n additionalProperties: fieldOverrides,\n });\n\n let teamCollection: CollectionConfig = {\n ...existingTeamCollection,\n slug: teamSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.team, 'name'),\n description: 'Teams are groups of users that share access to certain resources.',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingTeamCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingTeamCollection?.access ?? {}),\n },\n custom: {\n ...(existingTeamCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.team,\n },\n fields: [\n ...(existingTeamCollection?.fields ?? []),\n ...filterDuplicateFields(existingTeamCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.teams === 'function') {\n teamCollection = pluginOptions.pluginCollectionOverrides.teams({\n collection: teamCollection,\n });\n }\n\n assertAllSchemaFields(teamCollection, teamSchema);\n\n return teamCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildTeamsCollection","incomingCollections","pluginOptions","resolvedSchemas","teamSlug","team","teamSchema","existingTeamCollection","find","collection","slug","fieldOverrides","name","admin","description","organizationId","readOnly","teamFieldRules","condition","field","type","transform","saveToJWT","disableBulkEdit","hidden","index","label","t","collectionFields","schema","fieldRules","additionalProperties","teamCollection","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields","pluginCollectionOverrides","teams"],"mappings":"AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAEhE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAEjF,OAAO,SAASC,qBAAqB,EACnCC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,WAAWR,wBAAwBO,iBAAiBV,WAAWY,IAAI;IACzE,MAAMC,aAAaH,eAAe,CAACV,WAAWY,IAAI,CAAC;IACnD,MAAME,yBAAyBN,oBAAoBO,IAAI,CACrDC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAA6C;QACjDC,MAAM,IAAO,CAAA;gBACXC,OAAO;oBAAEC,aAAa;gBAAwB;YAChD,CAAA;QACAC,gBAAgB,IAAO,CAAA;gBACrBF,OAAO;oBACLG,UAAU;oBACVF,aAAa;gBACf;YACF,CAAA;IACF;IAEA,MAAMG,iBAA8B;QAClC;YACEC,WAAWC,CAAAA,QAASA,MAAMC,IAAI,KAAK;YACnCC,WAAWF,CAAAA,QAAU,CAAA;oBACnB,GAAGA,KAAK;oBACRG,WAAW;oBACXT,OAAO;wBACLU,iBAAiB;wBACjBC,QAAQ;oBACV;oBACAC,OAAO;oBACP,8FAA8F;oBAC9FC,OAAO,CAAC,EAAEC,CAAC,EAAO,GAAKA,EAAE;gBAC3B,CAAA;QACF;KACD;IAED,MAAMC,mBAAmB7B,oBAAoB;QAC3C8B,QAAQvB;QACRwB,YAAYb;QACZc,sBAAsBpB;IACxB;IAEA,IAAIqB,iBAAmC;QACrC,GAAGzB,sBAAsB;QACzBG,MAAMN;QACNS,OAAO;YACLW,QAAQtB,cAAc+B,qBAAqB,IAAI;YAC/CC,YAAYrC,mBAAmBM,iBAAiBV,WAAWY,IAAI,EAAE;YACjES,aAAa;YACbqB,OAAOjC,eAAekC,wBAAwB;YAC9C,GAAG7B,wBAAwBM,KAAK;QAClC;QACAwB,QAAQ;YACN,GAAG3C,eAAeQ,cAAc;YAChC,GAAIK,wBAAwB8B,UAAU,CAAC,CAAC;QAC1C;QACAC,QAAQ;YACN,GAAI/B,wBAAwB+B,UAAU,CAAC,CAAC;YACxCC,oBAAoB9C,WAAWY,IAAI;QACrC;QACAmC,QAAQ;eACFjC,wBAAwBiC,UAAU,EAAE;eACrC1C,sBAAsBS,wBAAwBiC,QAAQZ;SAC1D;IACH;IAEA,IAAI,OAAO1B,cAAcuC,yBAAyB,EAAEC,UAAU,YAAY;QACxEV,iBAAiB9B,cAAcuC,yBAAyB,CAACC,KAAK,CAAC;YAC7DjC,YAAYuB;QACd;IACF;IAEArC,sBAAsBqC,gBAAgB1B;IAEtC,OAAO0B;AACT"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { baModelKey } from "../../constants";
|
|
2
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
3
|
+
import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
|
|
4
|
+
import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
|
|
5
|
+
import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
|
|
6
|
+
export function buildTwoFactorsCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
7
|
+
const twoFactorSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.twoFactor);
|
|
8
|
+
const twoFactorSchema = resolvedSchemas[baModelKey.twoFactor];
|
|
9
|
+
const existingTwoFactorCollection = incomingCollections.find((collection)=>collection.slug === twoFactorSlug);
|
|
10
|
+
const fieldOverrides = {
|
|
11
|
+
userId: ()=>({
|
|
12
|
+
admin: {
|
|
13
|
+
readOnly: true,
|
|
14
|
+
description: 'The user that the two factor authentication secret belongs to'
|
|
15
|
+
}
|
|
16
|
+
}),
|
|
17
|
+
secret: ()=>({
|
|
18
|
+
index: true,
|
|
19
|
+
admin: {
|
|
20
|
+
readOnly: true,
|
|
21
|
+
description: 'The secret used to generate the TOTP code.'
|
|
22
|
+
}
|
|
23
|
+
}),
|
|
24
|
+
backupCodes: ()=>({
|
|
25
|
+
admin: {
|
|
26
|
+
readOnly: true,
|
|
27
|
+
description: 'The backup codes used to recover access to the account if the user loses access to their phone or email'
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
};
|
|
31
|
+
const collectionFields = getCollectionFields({
|
|
32
|
+
schema: twoFactorSchema,
|
|
33
|
+
additionalProperties: fieldOverrides
|
|
34
|
+
});
|
|
35
|
+
let twoFactorCollection = {
|
|
36
|
+
...existingTwoFactorCollection,
|
|
37
|
+
slug: twoFactorSlug,
|
|
38
|
+
admin: {
|
|
39
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
40
|
+
useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.twoFactor, 'secret'),
|
|
41
|
+
description: 'Two factor authentication secrets',
|
|
42
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
43
|
+
...existingTwoFactorCollection?.admin
|
|
44
|
+
},
|
|
45
|
+
access: {
|
|
46
|
+
...getAdminAccess(pluginOptions),
|
|
47
|
+
...existingTwoFactorCollection?.access ?? {}
|
|
48
|
+
},
|
|
49
|
+
custom: {
|
|
50
|
+
...existingTwoFactorCollection?.custom ?? {},
|
|
51
|
+
betterAuthModelKey: baModelKey.twoFactor
|
|
52
|
+
},
|
|
53
|
+
fields: [
|
|
54
|
+
...existingTwoFactorCollection?.fields ?? [],
|
|
55
|
+
...filterDuplicateFields(existingTwoFactorCollection?.fields, collectionFields)
|
|
56
|
+
]
|
|
57
|
+
};
|
|
58
|
+
if (typeof pluginOptions.pluginCollectionOverrides?.twoFactors === 'function') {
|
|
59
|
+
twoFactorCollection = pluginOptions.pluginCollectionOverrides.twoFactors({
|
|
60
|
+
collection: twoFactorCollection
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
assertAllSchemaFields(twoFactorCollection, twoFactorSchema);
|
|
64
|
+
return twoFactorCollection;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=two-factors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/two-factors.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { TwoFactor } from '@/better-auth/generated-types';\nimport type { CollectionConfig } from 'payload';\nimport type { BuildCollectionProps, FieldOverrides } from '../../types';\n\nexport function buildTwoFactorsCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const twoFactorSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.twoFactor);\n const twoFactorSchema = resolvedSchemas[baModelKey.twoFactor];\n\n const existingTwoFactorCollection = incomingCollections.find(\n collection => collection.slug === twoFactorSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof TwoFactor> = {\n userId: () => ({\n admin: {\n readOnly: true,\n description: 'The user that the two factor authentication secret belongs to',\n },\n }),\n secret: () => ({\n index: true,\n admin: {\n readOnly: true,\n description: 'The secret used to generate the TOTP code.',\n },\n }),\n backupCodes: () => ({\n admin: {\n readOnly: true,\n description:\n 'The backup codes used to recover access to the account if the user loses access to their phone or email',\n },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: twoFactorSchema,\n additionalProperties: fieldOverrides,\n });\n\n let twoFactorCollection: CollectionConfig = {\n ...existingTwoFactorCollection,\n slug: twoFactorSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.twoFactor, 'secret'),\n description: 'Two factor authentication secrets',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingTwoFactorCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingTwoFactorCollection?.access ?? {}),\n },\n custom: {\n ...(existingTwoFactorCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.twoFactor,\n },\n fields: [\n ...(existingTwoFactorCollection?.fields ?? []),\n ...filterDuplicateFields(existingTwoFactorCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.twoFactors === 'function') {\n twoFactorCollection = pluginOptions.pluginCollectionOverrides.twoFactors({\n collection: twoFactorCollection,\n });\n }\n\n assertAllSchemaFields(twoFactorCollection, twoFactorSchema);\n\n return twoFactorCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildTwoFactorsCollection","incomingCollections","pluginOptions","resolvedSchemas","twoFactorSlug","twoFactor","twoFactorSchema","existingTwoFactorCollection","find","collection","slug","fieldOverrides","userId","admin","readOnly","description","secret","index","backupCodes","collectionFields","schema","additionalProperties","twoFactorCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields","pluginCollectionOverrides","twoFactors"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,0BAA0B,EACxCC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,gBAAgBR,wBAAwBO,iBAAiBV,WAAWY,SAAS;IACnF,MAAMC,kBAAkBH,eAAe,CAACV,WAAWY,SAAS,CAAC;IAE7D,MAAME,8BAA8BN,oBAAoBO,IAAI,CAC1DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAkD;QACtDC,QAAQ,IAAO,CAAA;gBACbC,OAAO;oBACLC,UAAU;oBACVC,aAAa;gBACf;YACF,CAAA;QACAC,QAAQ,IAAO,CAAA;gBACbC,OAAO;gBACPJ,OAAO;oBACLC,UAAU;oBACVC,aAAa;gBACf;YACF,CAAA;QACAG,aAAa,IAAO,CAAA;gBAClBL,OAAO;oBACLC,UAAU;oBACVC,aACE;gBACJ;YACF,CAAA;IACF;IAEA,MAAMI,mBAAmBpB,oBAAoB;QAC3CqB,QAAQd;QACRe,sBAAsBV;IACxB;IAEA,IAAIW,sBAAwC;QAC1C,GAAGf,2BAA2B;QAC9BG,MAAMN;QACNS,OAAO;YACLU,QAAQrB,cAAcsB,qBAAqB,IAAI;YAC/CC,YAAY5B,mBAAmBM,iBAAiBV,WAAWY,SAAS,EAAE;YACtEU,aAAa;YACbW,OAAOxB,eAAeyB,wBAAwB;YAC9C,GAAGpB,6BAA6BM,KAAK;QACvC;QACAe,QAAQ;YACN,GAAGlC,eAAeQ,cAAc;YAChC,GAAIK,6BAA6BqB,UAAU,CAAC,CAAC;QAC/C;QACAC,QAAQ;YACN,GAAItB,6BAA6BsB,UAAU,CAAC,CAAC;YAC7CC,oBAAoBrC,WAAWY,SAAS;QAC1C;QACA0B,QAAQ;eACFxB,6BAA6BwB,UAAU,EAAE;eAC1CjC,sBAAsBS,6BAA6BwB,QAAQZ;SAC/D;IACH;IAEA,IAAI,OAAOjB,cAAc8B,yBAAyB,EAAEC,eAAe,YAAY;QAC7EX,sBAAsBpB,cAAc8B,yBAAyB,CAACC,UAAU,CAAC;YACvExB,YAAYa;QACd;IACF;IAEA3B,sBAAsB2B,qBAAqBhB;IAE3C,OAAOgB;AACT"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { baseSlugs } from "@/better-auth/plugin/constants";
|
|
2
|
+
import { getPayloadAuth } from "@/better-auth/plugin/lib/get-payload-auth";
|
|
3
|
+
/**
|
|
4
|
+
* Auth strategy for BetterAuth
|
|
5
|
+
* @param userSlug - User collection slug
|
|
6
|
+
* @returns Auth strategy
|
|
7
|
+
*/ export function betterAuthStrategy(userSlug) {
|
|
8
|
+
return {
|
|
9
|
+
authenticate: async ({ headers, payload })=>{
|
|
10
|
+
try {
|
|
11
|
+
const payloadAuth = await getPayloadAuth(payload.config);
|
|
12
|
+
const res = await payloadAuth.betterAuth.api.getSession({
|
|
13
|
+
headers
|
|
14
|
+
});
|
|
15
|
+
if (!res) {
|
|
16
|
+
return {
|
|
17
|
+
user: null
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const userId = res.session.userId ?? res.user.id;
|
|
21
|
+
if (!userId) {
|
|
22
|
+
return {
|
|
23
|
+
user: null
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const user = await payloadAuth.findByID({
|
|
27
|
+
collection: userSlug ?? baseSlugs.users,
|
|
28
|
+
id: userId
|
|
29
|
+
});
|
|
30
|
+
if (!user) {
|
|
31
|
+
return {
|
|
32
|
+
user: null
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
user: {
|
|
37
|
+
...user,
|
|
38
|
+
_strategy: 'better-auth',
|
|
39
|
+
collection: userSlug ?? baseSlugs.users
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
} catch {
|
|
43
|
+
// Authentication failed - return null user
|
|
44
|
+
return {
|
|
45
|
+
user: null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
name: 'better-auth'
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=better-auth-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/better-auth/plugin/lib/build-collections/users/better-auth-strategy.ts"],"sourcesContent":["import { baseSlugs } from '@/better-auth/plugin/constants';\nimport { getPayloadAuth } from '@/better-auth/plugin/lib/get-payload-auth';\n\nimport type { AuthStrategy, CollectionSlug } from 'payload';\n\n/**\n * Auth strategy for BetterAuth\n * @param userSlug - User collection slug\n * @returns Auth strategy\n */\nexport function betterAuthStrategy(userSlug?: string): AuthStrategy {\n return {\n authenticate: async ({ headers, payload }) => {\n try {\n const payloadAuth = await getPayloadAuth(payload.config);\n\n const res = await payloadAuth.betterAuth.api.getSession({\n headers,\n });\n\n if (!res) {\n return { user: null };\n }\n const userId = res.session.userId ?? res.user.id;\n if (!userId) {\n return { user: null };\n }\n const user = await payloadAuth.findByID({\n collection: (userSlug ?? baseSlugs.users) as CollectionSlug,\n id: userId,\n });\n if (!user) {\n return { user: null };\n }\n return {\n user: {\n ...user,\n _strategy: 'better-auth',\n collection: (userSlug ?? baseSlugs.users) as 'users',\n } as any,\n };\n } catch {\n // Authentication failed - return null user\n return { user: null };\n }\n },\n name: 'better-auth',\n };\n}\n"],"names":["baseSlugs","getPayloadAuth","betterAuthStrategy","userSlug","authenticate","headers","payload","payloadAuth","config","res","betterAuth","api","getSession","user","userId","session","id","findByID","collection","users","_strategy","name"],"mappings":"AAAA,SAASA,SAAS,QAAQ,iCAAiC;AAC3D,SAASC,cAAc,QAAQ,4CAA4C;AAI3E;;;;CAIC,GACD,OAAO,SAASC,mBAAmBC,QAAiB;IAClD,OAAO;QACLC,cAAc,OAAO,EAAEC,OAAO,EAAEC,OAAO,EAAE;YACvC,IAAI;gBACF,MAAMC,cAAc,MAAMN,eAAeK,QAAQE,MAAM;gBAEvD,MAAMC,MAAM,MAAMF,YAAYG,UAAU,CAACC,GAAG,CAACC,UAAU,CAAC;oBACtDP;gBACF;gBAEA,IAAI,CAACI,KAAK;oBACR,OAAO;wBAAEI,MAAM;oBAAK;gBACtB;gBACA,MAAMC,SAASL,IAAIM,OAAO,CAACD,MAAM,IAAIL,IAAII,IAAI,CAACG,EAAE;gBAChD,IAAI,CAACF,QAAQ;oBACX,OAAO;wBAAED,MAAM;oBAAK;gBACtB;gBACA,MAAMA,OAAO,MAAMN,YAAYU,QAAQ,CAAC;oBACtCC,YAAaf,YAAYH,UAAUmB,KAAK;oBACxCH,IAAIF;gBACN;gBACA,IAAI,CAACD,MAAM;oBACT,OAAO;wBAAEA,MAAM;oBAAK;gBACtB;gBACA,OAAO;oBACLA,MAAM;wBACJ,GAAGA,IAAI;wBACPO,WAAW;wBACXF,YAAaf,YAAYH,UAAUmB,KAAK;oBAC1C;gBACF;YACF,EAAE,OAAM;gBACN,2CAA2C;gBAC3C,OAAO;oBAAEN,MAAM;gBAAK;YACtB;QACF;QACAQ,MAAM;IACR;AACF"}
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BetterAuthPluginOptions } from '@/better-auth/plugin/types';
|
|
2
|
+
import { type Endpoint } from 'payload';
|
|
3
|
+
type InviteEndpointProps = {
|
|
4
|
+
roles: {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}[];
|
|
8
|
+
pluginOptions: BetterAuthPluginOptions;
|
|
9
|
+
};
|
|
10
|
+
export declare const getGenerateInviteUrlEndpoint: ({ roles, pluginOptions, }: InviteEndpointProps) => Endpoint;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { adminEndpoints, baseSlugs } from "@/better-auth/plugin/constants";
|
|
2
|
+
import { generateAdminInviteUrl } from "@/better-auth/plugin/payload/utils/generate-admin-invite-url";
|
|
3
|
+
import { status as httpStatus } from "http-status";
|
|
4
|
+
import { addDataAndFileToRequest } from "payload";
|
|
5
|
+
export const getGenerateInviteUrlEndpoint = ({ roles, pluginOptions })=>{
|
|
6
|
+
const endpoint = {
|
|
7
|
+
path: adminEndpoints.generateInviteUrl,
|
|
8
|
+
method: 'post',
|
|
9
|
+
handler: async (req)=>{
|
|
10
|
+
await addDataAndFileToRequest(req);
|
|
11
|
+
const body = req.data;
|
|
12
|
+
const generateAdminInviteUrlFn = pluginOptions?.adminInvitations?.generateInviteUrl ?? generateAdminInviteUrl;
|
|
13
|
+
if (!body) {
|
|
14
|
+
return Response.json({
|
|
15
|
+
message: 'No body provided'
|
|
16
|
+
}, {
|
|
17
|
+
status: httpStatus.BAD_REQUEST
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (typeof body !== 'object' || !('role' in body)) {
|
|
21
|
+
return Response.json({
|
|
22
|
+
message: 'Invalid body'
|
|
23
|
+
}, {
|
|
24
|
+
status: httpStatus.BAD_REQUEST
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (!roles.some((role)=>role.value === body.role.value)) {
|
|
28
|
+
return Response.json({
|
|
29
|
+
message: 'Invalid role'
|
|
30
|
+
}, {
|
|
31
|
+
status: httpStatus.BAD_REQUEST
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const token = crypto.randomUUID();
|
|
35
|
+
const inviteLink = generateAdminInviteUrlFn({
|
|
36
|
+
payload: req.payload,
|
|
37
|
+
token
|
|
38
|
+
});
|
|
39
|
+
try {
|
|
40
|
+
await req.payload.create({
|
|
41
|
+
collection: pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations,
|
|
42
|
+
data: {
|
|
43
|
+
token,
|
|
44
|
+
role: body.role.value,
|
|
45
|
+
url: inviteLink
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const response = new Response(JSON.stringify({
|
|
49
|
+
message: 'Invite link generated successfully',
|
|
50
|
+
inviteLink
|
|
51
|
+
}), {
|
|
52
|
+
status: 200
|
|
53
|
+
});
|
|
54
|
+
return response;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
req.payload.logger.error('Failed to generate invite link', {
|
|
57
|
+
operation: 'generateInviteUrl',
|
|
58
|
+
error: error instanceof Error ? error.message : String(error),
|
|
59
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
60
|
+
context: {
|
|
61
|
+
role: body.role.value
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
return Response.json({
|
|
65
|
+
message: 'Error generating invite link'
|
|
66
|
+
}, {
|
|
67
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
return endpoint;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=generate-invite-url.js.map
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.ts"],"sourcesContent":["import { adminEndpoints, baseSlugs } from '@/better-auth/plugin/constants';\nimport { generateAdminInviteUrl } from '@/better-auth/plugin/payload/utils/generate-admin-invite-url';\nimport type { BetterAuthPluginOptions } from '@/better-auth/plugin/types';\nimport { status as httpStatus } from 'http-status';\nimport { type CollectionSlug, type Endpoint, addDataAndFileToRequest } from 'payload';\n\ntype InviteEndpointProps = {\n roles: { label: string; value: string }[];\n pluginOptions: BetterAuthPluginOptions;\n};\n\nexport const getGenerateInviteUrlEndpoint = ({\n roles,\n pluginOptions,\n}: InviteEndpointProps): Endpoint => {\n const endpoint: Endpoint = {\n path: adminEndpoints.generateInviteUrl,\n method: 'post',\n handler: async req => {\n await addDataAndFileToRequest(req);\n const body = req.data as { role: { label: string; value: string } };\n const generateAdminInviteUrlFn =\n pluginOptions?.adminInvitations?.generateInviteUrl ?? generateAdminInviteUrl;\n\n if (!body) {\n return Response.json({ message: 'No body provided' }, { status: httpStatus.BAD_REQUEST });\n }\n\n if (typeof body !== 'object' || !('role' in body)) {\n return Response.json({ message: 'Invalid body' }, { status: httpStatus.BAD_REQUEST });\n }\n\n if (!roles.some(role => role.value === body.role.value)) {\n return Response.json({ message: 'Invalid role' }, { status: httpStatus.BAD_REQUEST });\n }\n const token = crypto.randomUUID();\n const inviteLink = generateAdminInviteUrlFn({\n payload: req.payload,\n token,\n });\n\n try {\n await req.payload.create({\n collection: (pluginOptions.adminInvitations?.slug ??\n baseSlugs.adminInvitations) as CollectionSlug,\n data: {\n token,\n role: body.role.value,\n url: inviteLink,\n // Using Record<string, unknown> because PayloadCMS create data structure varies by collection configuration\n } as /* Using Record<string, unknown> because PayloadCMS create data structure varies by collection configuration */ Record<\n string,\n unknown\n >,\n });\n const response = new Response(\n JSON.stringify({\n message: 'Invite link generated successfully',\n inviteLink,\n }),\n {\n status: 200,\n }\n );\n return response;\n } catch (error) {\n req.payload.logger.error('Failed to generate invite link', {\n operation: 'generateInviteUrl',\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n context: { role: body.role.value },\n });\n return Response.json(\n { message: 'Error generating invite link' },\n { status: httpStatus.INTERNAL_SERVER_ERROR }\n );\n }\n },\n };\n\n return endpoint;\n};\n"],"names":["adminEndpoints","baseSlugs","generateAdminInviteUrl","status","httpStatus","addDataAndFileToRequest","getGenerateInviteUrlEndpoint","roles","pluginOptions","endpoint","path","generateInviteUrl","method","handler","req","body","data","generateAdminInviteUrlFn","adminInvitations","Response","json","message","BAD_REQUEST","some","role","value","token","crypto","randomUUID","inviteLink","payload","create","collection","slug","url","response","JSON","stringify","error","logger","operation","Error","String","stack","undefined","context","INTERNAL_SERVER_ERROR"],"mappings":"AAAA,SAASA,cAAc,EAAEC,SAAS,QAAQ,iCAAiC;AAC3E,SAASC,sBAAsB,QAAQ,+DAA+D;AAEtG,SAASC,UAAUC,UAAU,QAAQ,cAAc;AACnD,SAA6CC,uBAAuB,QAAQ,UAAU;AAOtF,OAAO,MAAMC,+BAA+B,CAAC,EAC3CC,KAAK,EACLC,aAAa,EACO;IACpB,MAAMC,WAAqB;QACzBC,MAAMV,eAAeW,iBAAiB;QACtCC,QAAQ;QACRC,SAAS,OAAMC;YACb,MAAMT,wBAAwBS;YAC9B,MAAMC,OAAOD,IAAIE,IAAI;YACrB,MAAMC,2BACJT,eAAeU,kBAAkBP,qBAAqBT;YAExD,IAAI,CAACa,MAAM;gBACT,OAAOI,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAAmB,GAAG;oBAAElB,QAAQC,WAAWkB,WAAW;gBAAC;YACzF;YAEA,IAAI,OAAOP,SAAS,YAAY,CAAE,CAAA,UAAUA,IAAG,GAAI;gBACjD,OAAOI,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAAe,GAAG;oBAAElB,QAAQC,WAAWkB,WAAW;gBAAC;YACrF;YAEA,IAAI,CAACf,MAAMgB,IAAI,CAACC,CAAAA,OAAQA,KAAKC,KAAK,KAAKV,KAAKS,IAAI,CAACC,KAAK,GAAG;gBACvD,OAAON,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAAe,GAAG;oBAAElB,QAAQC,WAAWkB,WAAW;gBAAC;YACrF;YACA,MAAMI,QAAQC,OAAOC,UAAU;YAC/B,MAAMC,aAAaZ,yBAAyB;gBAC1Ca,SAAShB,IAAIgB,OAAO;gBACpBJ;YACF;YAEA,IAAI;gBACF,MAAMZ,IAAIgB,OAAO,CAACC,MAAM,CAAC;oBACvBC,YAAaxB,cAAcU,gBAAgB,EAAEe,QAC3ChC,UAAUiB,gBAAgB;oBAC5BF,MAAM;wBACJU;wBACAF,MAAMT,KAAKS,IAAI,CAACC,KAAK;wBACrBS,KAAKL;oBAEP;gBAIF;gBACA,MAAMM,WAAW,IAAIhB,SACnBiB,KAAKC,SAAS,CAAC;oBACbhB,SAAS;oBACTQ;gBACF,IACA;oBACE1B,QAAQ;gBACV;gBAEF,OAAOgC;YACT,EAAE,OAAOG,OAAO;gBACdxB,IAAIgB,OAAO,CAACS,MAAM,CAACD,KAAK,CAAC,kCAAkC;oBACzDE,WAAW;oBACXF,OAAOA,iBAAiBG,QAAQH,MAAMjB,OAAO,GAAGqB,OAAOJ;oBACvDK,OAAOL,iBAAiBG,QAAQH,MAAMK,KAAK,GAAGC;oBAC9CC,SAAS;wBAAErB,MAAMT,KAAKS,IAAI,CAACC,KAAK;oBAAC;gBACnC;gBACA,OAAON,SAASC,IAAI,CAClB;oBAAEC,SAAS;gBAA+B,GAC1C;oBAAElB,QAAQC,WAAW0C,qBAAqB;gBAAC;YAE/C;QACF;IACF;IAEA,OAAOrC;AACT,EAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/index.ts"],"sourcesContent":["export * from './generate-invite-url';\nexport * from './refresh-token';\nexport * from './send-invite-url';\nexport * from './set-admin-role';\n"],"names":[],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// import { GenericEndpointContext } from 'better-auth/types'
|
|
2
|
+
import { adminEndpoints } from "@/better-auth/plugin/constants";
|
|
3
|
+
import { getSignedCookie } from "@/better-auth/plugin/helpers/get-signed-cookie";
|
|
4
|
+
import { getPayloadAuth } from "@/better-auth/plugin/lib/get-payload-auth";
|
|
5
|
+
import { setCookieCache } from "better-auth/cookies";
|
|
6
|
+
import { getFieldsToSign, refreshOperation } from "payload";
|
|
7
|
+
export const getRefreshTokenEndpoint = (userSlug)=>{
|
|
8
|
+
const endpoint = {
|
|
9
|
+
path: adminEndpoints.refreshToken,
|
|
10
|
+
method: 'post',
|
|
11
|
+
handler: async (req)=>{
|
|
12
|
+
const payload = await getPayloadAuth(req.payload.config);
|
|
13
|
+
const authContext = await payload.betterAuth?.$context;
|
|
14
|
+
const userCollection = payload.collections[userSlug];
|
|
15
|
+
if (!userCollection) {
|
|
16
|
+
return new Response(JSON.stringify({
|
|
17
|
+
message: 'User collection not found'
|
|
18
|
+
}), {
|
|
19
|
+
status: 500
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
if (!payload.betterAuth || !authContext) {
|
|
23
|
+
return new Response(JSON.stringify({
|
|
24
|
+
message: 'BetterAuth not initialized'
|
|
25
|
+
}), {
|
|
26
|
+
status: 500
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const sessionTokenName = authContext.authCookies.sessionToken.name;
|
|
30
|
+
const cookieHeader = req.headers.get('cookie') || '';
|
|
31
|
+
const hasSessionToken = cookieHeader.includes(`${sessionTokenName}=`);
|
|
32
|
+
const dontRememberTokenName = authContext.authCookies.dontRememberToken.name;
|
|
33
|
+
if (!hasSessionToken) {
|
|
34
|
+
try {
|
|
35
|
+
const result = await refreshOperation({
|
|
36
|
+
collection: userCollection,
|
|
37
|
+
req
|
|
38
|
+
});
|
|
39
|
+
return new Response(JSON.stringify(result), {
|
|
40
|
+
status: 200
|
|
41
|
+
});
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error('Token refresh failed:', error);
|
|
44
|
+
return new Response(JSON.stringify({
|
|
45
|
+
message: 'Token refresh failed'
|
|
46
|
+
}), {
|
|
47
|
+
status: 401
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const res = await payload.betterAuth.api.getSession({
|
|
52
|
+
headers: req.headers,
|
|
53
|
+
query: {
|
|
54
|
+
disableCookieCache: true
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
if (!res) {
|
|
58
|
+
return new Response(JSON.stringify({
|
|
59
|
+
message: 'No current session'
|
|
60
|
+
}), {
|
|
61
|
+
status: 401
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const user = await payload.findByID({
|
|
65
|
+
collection: userSlug,
|
|
66
|
+
id: res.session.userId
|
|
67
|
+
});
|
|
68
|
+
if (!user) {
|
|
69
|
+
return new Response(JSON.stringify({
|
|
70
|
+
message: 'No user found'
|
|
71
|
+
}), {
|
|
72
|
+
status: 401
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const cookieCacheFields = getFieldsToSign({
|
|
76
|
+
collectionConfig: userCollection?.config,
|
|
77
|
+
email: user.email,
|
|
78
|
+
user: user
|
|
79
|
+
});
|
|
80
|
+
const responseData = {
|
|
81
|
+
refreshedToken: null,
|
|
82
|
+
setCookie: !!authContext.options.session?.cookieCache?.enabled,
|
|
83
|
+
strategy: 'better-auth',
|
|
84
|
+
user: {
|
|
85
|
+
...user,
|
|
86
|
+
collection: userSlug
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const response = new Response(JSON.stringify(responseData), {
|
|
90
|
+
status: 200
|
|
91
|
+
});
|
|
92
|
+
const ctx = {
|
|
93
|
+
context: authContext,
|
|
94
|
+
setCookie (name, value, options) {
|
|
95
|
+
const path = options?.path ?? '/';
|
|
96
|
+
const maxAge = options?.maxAge ? `; Max-Age=${options.maxAge}` : '';
|
|
97
|
+
const httpOnly = options?.httpOnly ? '; HttpOnly' : '';
|
|
98
|
+
const secure = options?.secure ? '; Secure' : '';
|
|
99
|
+
const sameSite = options?.sameSite ? `; SameSite=${options.sameSite}` : '; SameSite=Lax';
|
|
100
|
+
response.headers.set('Set-Cookie', `${name}=${value}; Path=${path}${maxAge}${httpOnly}${secure}${sameSite}`);
|
|
101
|
+
return name;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const dontRememberMe = await getSignedCookie(cookieHeader, dontRememberTokenName, authContext.secret);
|
|
105
|
+
await setCookieCache(ctx, {
|
|
106
|
+
session: res.session,
|
|
107
|
+
user: cookieCacheFields
|
|
108
|
+
}, !!dontRememberMe);
|
|
109
|
+
return response;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return endpoint;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=refresh-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.ts"],"sourcesContent":["// import { GenericEndpointContext } from 'better-auth/types'\nimport { adminEndpoints } from '@/better-auth/plugin/constants';\nimport { getSignedCookie } from '@/better-auth/plugin/helpers/get-signed-cookie';\nimport { getPayloadAuth } from '@/better-auth/plugin/lib/get-payload-auth';\nimport { setCookieCache } from 'better-auth/cookies';\nimport {\n type CollectionSlug,\n type Endpoint,\n type TypedUser,\n getFieldsToSign,\n refreshOperation,\n} from 'payload';\n\nexport const getRefreshTokenEndpoint = (userSlug: string): Endpoint => {\n const endpoint: Endpoint = {\n path: adminEndpoints.refreshToken,\n method: 'post',\n handler: async req => {\n const payload = await getPayloadAuth(req.payload.config);\n const authContext = await payload.betterAuth?.$context;\n const userCollection = payload.collections[userSlug as CollectionSlug];\n\n if (!userCollection) {\n return new Response(JSON.stringify({ message: 'User collection not found' }), {\n status: 500,\n });\n }\n\n if (!payload.betterAuth || !authContext) {\n return new Response(JSON.stringify({ message: 'BetterAuth not initialized' }), {\n status: 500,\n });\n }\n\n const sessionTokenName = authContext.authCookies.sessionToken.name;\n const cookieHeader = req.headers.get('cookie') || '';\n const hasSessionToken = cookieHeader.includes(`${sessionTokenName}=`);\n const dontRememberTokenName = authContext.authCookies.dontRememberToken.name;\n\n if (!hasSessionToken) {\n try {\n const result = await refreshOperation({\n collection: userCollection,\n req,\n });\n return new Response(JSON.stringify(result), { status: 200 });\n } catch (error) {\n console.error('Token refresh failed:', error);\n return new Response(JSON.stringify({ message: 'Token refresh failed' }), { status: 401 });\n }\n }\n\n const res = await payload.betterAuth.api.getSession({\n headers: req.headers,\n query: { disableCookieCache: true },\n });\n\n if (!res) {\n return new Response(JSON.stringify({ message: 'No current session' }), {\n status: 401,\n });\n }\n\n const user = await payload.findByID({\n collection: userSlug as CollectionSlug,\n id: res.session.userId,\n });\n\n if (!user) {\n return new Response(JSON.stringify({ message: 'No user found' }), {\n status: 401,\n });\n }\n\n const cookieCacheFields = getFieldsToSign({\n collectionConfig: userCollection?.config,\n email: (user as any).email,\n user: user as TypedUser,\n });\n\n const responseData = {\n refreshedToken: null,\n setCookie: !!authContext.options.session?.cookieCache?.enabled,\n strategy: 'better-auth',\n user: { ...user, collection: userSlug },\n };\n\n const response = new Response(JSON.stringify(responseData), {\n status: 200,\n });\n\n const ctx = {\n context: authContext,\n setCookie(name: string, value: string, options?: any) {\n const path = options?.path ?? '/';\n const maxAge = options?.maxAge ? `; Max-Age=${options.maxAge}` : '';\n const httpOnly = options?.httpOnly ? '; HttpOnly' : '';\n const secure = options?.secure ? '; Secure' : '';\n const sameSite = options?.sameSite ? `; SameSite=${options.sameSite}` : '; SameSite=Lax';\n\n response.headers.set(\n 'Set-Cookie',\n `${name}=${value}; Path=${path}${maxAge}${httpOnly}${secure}${sameSite}`\n );\n return name;\n },\n } as any;\n\n const dontRememberMe = await getSignedCookie(\n cookieHeader,\n dontRememberTokenName,\n authContext.secret\n );\n\n await setCookieCache(\n ctx,\n {\n session: res.session,\n user: cookieCacheFields as any,\n },\n !!dontRememberMe\n );\n\n return response;\n },\n };\n\n return endpoint;\n};\n"],"names":["adminEndpoints","getSignedCookie","getPayloadAuth","setCookieCache","getFieldsToSign","refreshOperation","getRefreshTokenEndpoint","userSlug","endpoint","path","refreshToken","method","handler","req","payload","config","authContext","betterAuth","$context","userCollection","collections","Response","JSON","stringify","message","status","sessionTokenName","authCookies","sessionToken","name","cookieHeader","headers","get","hasSessionToken","includes","dontRememberTokenName","dontRememberToken","result","collection","error","console","res","api","getSession","query","disableCookieCache","user","findByID","id","session","userId","cookieCacheFields","collectionConfig","email","responseData","refreshedToken","setCookie","options","cookieCache","enabled","strategy","response","ctx","context","value","maxAge","httpOnly","secure","sameSite","set","dontRememberMe","secret"],"mappings":"AAAA,6DAA6D;AAC7D,SAASA,cAAc,QAAQ,iCAAiC;AAChE,SAASC,eAAe,QAAQ,iDAAiD;AACjF,SAASC,cAAc,QAAQ,4CAA4C;AAC3E,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAIEC,eAAe,EACfC,gBAAgB,QACX,UAAU;AAEjB,OAAO,MAAMC,0BAA0B,CAACC;IACtC,MAAMC,WAAqB;QACzBC,MAAMT,eAAeU,YAAY;QACjCC,QAAQ;QACRC,SAAS,OAAMC;YACb,MAAMC,UAAU,MAAMZ,eAAeW,IAAIC,OAAO,CAACC,MAAM;YACvD,MAAMC,cAAc,MAAMF,QAAQG,UAAU,EAAEC;YAC9C,MAAMC,iBAAiBL,QAAQM,WAAW,CAACb,SAA2B;YAEtE,IAAI,CAACY,gBAAgB;gBACnB,OAAO,IAAIE,SAASC,KAAKC,SAAS,CAAC;oBAAEC,SAAS;gBAA4B,IAAI;oBAC5EC,QAAQ;gBACV;YACF;YAEA,IAAI,CAACX,QAAQG,UAAU,IAAI,CAACD,aAAa;gBACvC,OAAO,IAAIK,SAASC,KAAKC,SAAS,CAAC;oBAAEC,SAAS;gBAA6B,IAAI;oBAC7EC,QAAQ;gBACV;YACF;YAEA,MAAMC,mBAAmBV,YAAYW,WAAW,CAACC,YAAY,CAACC,IAAI;YAClE,MAAMC,eAAejB,IAAIkB,OAAO,CAACC,GAAG,CAAC,aAAa;YAClD,MAAMC,kBAAkBH,aAAaI,QAAQ,CAAC,GAAGR,iBAAiB,CAAC,CAAC;YACpE,MAAMS,wBAAwBnB,YAAYW,WAAW,CAACS,iBAAiB,CAACP,IAAI;YAE5E,IAAI,CAACI,iBAAiB;gBACpB,IAAI;oBACF,MAAMI,SAAS,MAAMhC,iBAAiB;wBACpCiC,YAAYnB;wBACZN;oBACF;oBACA,OAAO,IAAIQ,SAASC,KAAKC,SAAS,CAACc,SAAS;wBAAEZ,QAAQ;oBAAI;gBAC5D,EAAE,OAAOc,OAAO;oBACdC,QAAQD,KAAK,CAAC,yBAAyBA;oBACvC,OAAO,IAAIlB,SAASC,KAAKC,SAAS,CAAC;wBAAEC,SAAS;oBAAuB,IAAI;wBAAEC,QAAQ;oBAAI;gBACzF;YACF;YAEA,MAAMgB,MAAM,MAAM3B,QAAQG,UAAU,CAACyB,GAAG,CAACC,UAAU,CAAC;gBAClDZ,SAASlB,IAAIkB,OAAO;gBACpBa,OAAO;oBAAEC,oBAAoB;gBAAK;YACpC;YAEA,IAAI,CAACJ,KAAK;gBACR,OAAO,IAAIpB,SAASC,KAAKC,SAAS,CAAC;oBAAEC,SAAS;gBAAqB,IAAI;oBACrEC,QAAQ;gBACV;YACF;YAEA,MAAMqB,OAAO,MAAMhC,QAAQiC,QAAQ,CAAC;gBAClCT,YAAY/B;gBACZyC,IAAIP,IAAIQ,OAAO,CAACC,MAAM;YACxB;YAEA,IAAI,CAACJ,MAAM;gBACT,OAAO,IAAIzB,SAASC,KAAKC,SAAS,CAAC;oBAAEC,SAAS;gBAAgB,IAAI;oBAChEC,QAAQ;gBACV;YACF;YAEA,MAAM0B,oBAAoB/C,gBAAgB;gBACxCgD,kBAAkBjC,gBAAgBJ;gBAClCsC,OAAO,AAACP,KAAaO,KAAK;gBAC1BP,MAAMA;YACR;YAEA,MAAMQ,eAAe;gBACnBC,gBAAgB;gBAChBC,WAAW,CAAC,CAACxC,YAAYyC,OAAO,CAACR,OAAO,EAAES,aAAaC;gBACvDC,UAAU;gBACVd,MAAM;oBAAE,GAAGA,IAAI;oBAAER,YAAY/B;gBAAS;YACxC;YAEA,MAAMsD,WAAW,IAAIxC,SAASC,KAAKC,SAAS,CAAC+B,eAAe;gBAC1D7B,QAAQ;YACV;YAEA,MAAMqC,MAAM;gBACVC,SAAS/C;gBACTwC,WAAU3B,IAAY,EAAEmC,KAAa,EAAEP,OAAa;oBAClD,MAAMhD,OAAOgD,SAAShD,QAAQ;oBAC9B,MAAMwD,SAASR,SAASQ,SAAS,CAAC,UAAU,EAAER,QAAQQ,MAAM,EAAE,GAAG;oBACjE,MAAMC,WAAWT,SAASS,WAAW,eAAe;oBACpD,MAAMC,SAASV,SAASU,SAAS,aAAa;oBAC9C,MAAMC,WAAWX,SAASW,WAAW,CAAC,WAAW,EAAEX,QAAQW,QAAQ,EAAE,GAAG;oBAExEP,SAAS9B,OAAO,CAACsC,GAAG,CAClB,cACA,GAAGxC,KAAK,CAAC,EAAEmC,MAAM,OAAO,EAAEvD,OAAOwD,SAASC,WAAWC,SAASC,UAAU;oBAE1E,OAAOvC;gBACT;YACF;YAEA,MAAMyC,iBAAiB,MAAMrE,gBAC3B6B,cACAK,uBACAnB,YAAYuD,MAAM;YAGpB,MAAMpE,eACJ2D,KACA;gBACEb,SAASR,IAAIQ,OAAO;gBACpBH,MAAMK;YACR,GACA,CAAC,CAACmB;YAGJ,OAAOT;QACT;IACF;IAEA,OAAOrD;AACT,EAAE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { adminEndpoints } from "@/better-auth/plugin/constants";
|
|
2
|
+
import { status as httpStatus } from "http-status";
|
|
3
|
+
import { addDataAndFileToRequest, headersWithCors, killTransaction } from "payload";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const requestSchema = z.object({
|
|
6
|
+
email: z.email(),
|
|
7
|
+
link: z.string()
|
|
8
|
+
});
|
|
9
|
+
export const getSendInviteUrlEndpoint = (pluginOptions)=>{
|
|
10
|
+
const endpoint = {
|
|
11
|
+
handler: async (req)=>{
|
|
12
|
+
await addDataAndFileToRequest(req);
|
|
13
|
+
const { t } = req;
|
|
14
|
+
const body = requestSchema.safeParse(req.data);
|
|
15
|
+
if (!body.success) {
|
|
16
|
+
return Response.json({
|
|
17
|
+
message: body.error.message
|
|
18
|
+
}, {
|
|
19
|
+
status: httpStatus.BAD_REQUEST
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const sendInviteEmailFn = pluginOptions.adminInvitations?.sendInviteEmail;
|
|
23
|
+
if (!sendInviteEmailFn) {
|
|
24
|
+
req.payload.logger.error('Send admin invite email function not configured, please add the function to the betterAuthPlugin options.');
|
|
25
|
+
return Response.json({
|
|
26
|
+
message: 'Send invite email function not found'
|
|
27
|
+
}, {
|
|
28
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const res = await sendInviteEmailFn({
|
|
33
|
+
email: body.data.email,
|
|
34
|
+
payload: req.payload,
|
|
35
|
+
url: body.data.link
|
|
36
|
+
});
|
|
37
|
+
if (!res.success) {
|
|
38
|
+
return Response.json({
|
|
39
|
+
message: res.message
|
|
40
|
+
}, {
|
|
41
|
+
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return Response.json({
|
|
45
|
+
message: t('general:success')
|
|
46
|
+
}, {
|
|
47
|
+
headers: headersWithCors({
|
|
48
|
+
headers: new Headers(),
|
|
49
|
+
req
|
|
50
|
+
}),
|
|
51
|
+
status: httpStatus.OK
|
|
52
|
+
});
|
|
53
|
+
} catch (error) {
|
|
54
|
+
await killTransaction(req);
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
method: 'post',
|
|
59
|
+
path: adminEndpoints.sendInvite
|
|
60
|
+
};
|
|
61
|
+
return endpoint;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=send-invite-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.ts"],"sourcesContent":["import { adminEndpoints } from '@/better-auth/plugin/constants';\nimport { status as httpStatus } from 'http-status';\nimport { type Endpoint, addDataAndFileToRequest, headersWithCors, killTransaction } from 'payload';\nimport { z } from 'zod';\n\nimport type { BetterAuthPluginOptions } from '@/better-auth/plugin/types';\n\nconst requestSchema = z.object({\n email: z.email(),\n link: z.string(),\n});\n\nexport const getSendInviteUrlEndpoint = (pluginOptions: BetterAuthPluginOptions): Endpoint => {\n const endpoint: Endpoint = {\n handler: async req => {\n await addDataAndFileToRequest(req);\n const { t } = req;\n const body = requestSchema.safeParse(req.data);\n if (!body.success) {\n return Response.json({ message: body.error.message }, { status: httpStatus.BAD_REQUEST });\n }\n\n const sendInviteEmailFn = pluginOptions.adminInvitations?.sendInviteEmail;\n\n if (!sendInviteEmailFn) {\n req.payload.logger.error(\n 'Send admin invite email function not configured, please add the function to the betterAuthPlugin options.'\n );\n return Response.json(\n { message: 'Send invite email function not found' },\n { status: httpStatus.INTERNAL_SERVER_ERROR }\n );\n }\n\n try {\n const res = await sendInviteEmailFn({\n email: body.data.email,\n payload: req.payload,\n url: body.data.link,\n });\n\n if (!res.success) {\n return Response.json(\n { message: res.message },\n { status: httpStatus.INTERNAL_SERVER_ERROR }\n );\n }\n\n return Response.json(\n {\n message: t('general:success'),\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.OK,\n }\n );\n } catch (error) {\n await killTransaction(req);\n throw error;\n }\n },\n method: 'post',\n path: adminEndpoints.sendInvite,\n };\n return endpoint;\n};\n"],"names":["adminEndpoints","status","httpStatus","addDataAndFileToRequest","headersWithCors","killTransaction","z","requestSchema","object","email","link","string","getSendInviteUrlEndpoint","pluginOptions","endpoint","handler","req","t","body","safeParse","data","success","Response","json","message","error","BAD_REQUEST","sendInviteEmailFn","adminInvitations","sendInviteEmail","payload","logger","INTERNAL_SERVER_ERROR","res","url","headers","Headers","OK","method","path","sendInvite"],"mappings":"AAAA,SAASA,cAAc,QAAQ,iCAAiC;AAChE,SAASC,UAAUC,UAAU,QAAQ,cAAc;AACnD,SAAwBC,uBAAuB,EAAEC,eAAe,EAAEC,eAAe,QAAQ,UAAU;AACnG,SAASC,CAAC,QAAQ,MAAM;AAIxB,MAAMC,gBAAgBD,EAAEE,MAAM,CAAC;IAC7BC,OAAOH,EAAEG,KAAK;IACdC,MAAMJ,EAAEK,MAAM;AAChB;AAEA,OAAO,MAAMC,2BAA2B,CAACC;IACvC,MAAMC,WAAqB;QACzBC,SAAS,OAAMC;YACb,MAAMb,wBAAwBa;YAC9B,MAAM,EAAEC,CAAC,EAAE,GAAGD;YACd,MAAME,OAAOX,cAAcY,SAAS,CAACH,IAAII,IAAI;YAC7C,IAAI,CAACF,KAAKG,OAAO,EAAE;gBACjB,OAAOC,SAASC,IAAI,CAAC;oBAAEC,SAASN,KAAKO,KAAK,CAACD,OAAO;gBAAC,GAAG;oBAAEvB,QAAQC,WAAWwB,WAAW;gBAAC;YACzF;YAEA,MAAMC,oBAAoBd,cAAce,gBAAgB,EAAEC;YAE1D,IAAI,CAACF,mBAAmB;gBACtBX,IAAIc,OAAO,CAACC,MAAM,CAACN,KAAK,CACtB;gBAEF,OAAOH,SAASC,IAAI,CAClB;oBAAEC,SAAS;gBAAuC,GAClD;oBAAEvB,QAAQC,WAAW8B,qBAAqB;gBAAC;YAE/C;YAEA,IAAI;gBACF,MAAMC,MAAM,MAAMN,kBAAkB;oBAClClB,OAAOS,KAAKE,IAAI,CAACX,KAAK;oBACtBqB,SAASd,IAAIc,OAAO;oBACpBI,KAAKhB,KAAKE,IAAI,CAACV,IAAI;gBACrB;gBAEA,IAAI,CAACuB,IAAIZ,OAAO,EAAE;oBAChB,OAAOC,SAASC,IAAI,CAClB;wBAAEC,SAASS,IAAIT,OAAO;oBAAC,GACvB;wBAAEvB,QAAQC,WAAW8B,qBAAqB;oBAAC;gBAE/C;gBAEA,OAAOV,SAASC,IAAI,CAClB;oBACEC,SAASP,EAAE;gBACb,GACA;oBACEkB,SAAS/B,gBAAgB;wBACvB+B,SAAS,IAAIC;wBACbpB;oBACF;oBACAf,QAAQC,WAAWmC,EAAE;gBACvB;YAEJ,EAAE,OAAOZ,OAAO;gBACd,MAAMpB,gBAAgBW;gBACtB,MAAMS;YACR;QACF;QACAa,QAAQ;QACRC,MAAMvC,eAAewC,UAAU;IACjC;IACA,OAAO1B;AACT,EAAE"}
|