payload-auth 1.8.4 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +106 -23
- package/dist/better-auth/adapter/transform/index.d.ts +6 -6
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +160 -52
- package/dist/better-auth/generated-types.d.ts +14 -11
- package/dist/better-auth/generated-types.d.ts.map +1 -1
- package/dist/better-auth/generated-types.js +1 -1
- package/dist/better-auth/plugin/constants.d.ts +3 -7
- package/dist/better-auth/plugin/constants.d.ts.map +1 -1
- package/dist/better-auth/plugin/constants.js +5 -9
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +8 -12
- package/dist/better-auth/plugin/lib/{apply-disabled-default-auth-config.d.ts → apply-ba-admin-config.d.ts} +4 -3
- package/dist/better-auth/plugin/lib/apply-ba-admin-config.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/apply-ba-admin-config.js +88 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +7 -12
- 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 +5 -5
- package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/device-code.js +8 -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 +2 -1
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.js +4 -7
- 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 +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 +4 -4
- 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 +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 +10 -5
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +2 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.js +3 -3
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +2 -2
- 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 +10 -2
- 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 +36 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +1 -2
- 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 +4 -3
- 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 +36 -2
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +4 -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 +103 -33
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +1 -5
- 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 +6 -25
- 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 +8 -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 +3 -3
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-payload-auth.js +4 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +3 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +2 -3
- 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 +7 -49
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +6 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +5 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +2 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.js +2 -2
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-invite-after-signup-middleware.d.ts +16 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-invite-after-signup-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-invite-after-signup-middleware.js +96 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +2 -2
- package/dist/better-auth/plugin/lib/set-login-methods.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/set-login-methods.js +2 -2
- package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.js +8 -4
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/passkeys/index.js +3 -2
- package/dist/better-auth/plugin/payload/utils/resolve-base-url.d.ts +9 -0
- package/dist/better-auth/plugin/payload/utils/resolve-base-url.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/utils/resolve-base-url.js +49 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +3 -2
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +2 -5
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +3 -2
- 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 +4 -3
- 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 +4 -3
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +3 -2
- package/dist/better-auth/plugin/types.d.ts +13 -56
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/better-auth/scripts/generate-types.js +8 -6
- package/package.json +20 -17
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +0 -87
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +0 -51
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +0 -90
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +0 -7
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +0 -80
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +0 -7
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +0 -15
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +0 -17
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +0 -90
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +0 -8
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +0 -23
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +0 -26
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +0 -62
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +0 -10
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +0 -62
package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { baModelKey } from "../../../../constants";
|
|
2
|
-
import { getSchemaCollectionSlug, getSchemaFieldName } from "../../utils/collection-schema";
|
|
3
|
-
export function getSyncPasswordToUserHook(resolvedSchemas) {
|
|
4
|
-
const hook = async ({ doc, req, operation, context })=>{
|
|
5
|
-
if (context?.syncAccountHook) return doc;
|
|
6
|
-
if (operation !== "create" && operation !== "update") {
|
|
7
|
-
return doc;
|
|
8
|
-
}
|
|
9
|
-
const userSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.user);
|
|
10
|
-
const accountSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.account);
|
|
11
|
-
const userField = getSchemaFieldName(resolvedSchemas, baModelKey.account, "userId");
|
|
12
|
-
if (!doc[userField]) {
|
|
13
|
-
return doc;
|
|
14
|
-
}
|
|
15
|
-
const account = await req.payload.findByID({
|
|
16
|
-
collection: accountSlug,
|
|
17
|
-
id: doc.id,
|
|
18
|
-
depth: 0,
|
|
19
|
-
req,
|
|
20
|
-
showHiddenFields: true
|
|
21
|
-
});
|
|
22
|
-
if (!account || !account.password) {
|
|
23
|
-
return doc;
|
|
24
|
-
}
|
|
25
|
-
const [salt, hash] = account.password.split(":");
|
|
26
|
-
if (!salt || !hash) {
|
|
27
|
-
return doc;
|
|
28
|
-
}
|
|
29
|
-
const userId = typeof doc[userField] === "object" ? doc[userField]?.id : doc[userField];
|
|
30
|
-
try {
|
|
31
|
-
await req.payload.update({
|
|
32
|
-
collection: userSlug,
|
|
33
|
-
id: userId,
|
|
34
|
-
data: {
|
|
35
|
-
salt,
|
|
36
|
-
hash
|
|
37
|
-
},
|
|
38
|
-
req,
|
|
39
|
-
context: {
|
|
40
|
-
syncPasswordToUser: true
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
} catch (error) {
|
|
44
|
-
console.error("Failed to sync password to user:", error);
|
|
45
|
-
}
|
|
46
|
-
return doc;
|
|
47
|
-
};
|
|
48
|
-
return hook;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL2FjY291bnRzL2hvb2tzL3N5bmMtcGFzc3dvcmQtdG8tdXNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25BZnRlckNoYW5nZUhvb2sgfSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHsgYmFNb2RlbEtleSB9IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aFNjaGVtYXMgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGdldFNjaGVtYUNvbGxlY3Rpb25TbHVnLFxuICBnZXRTY2hlbWFGaWVsZE5hbWVcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbGxlY3Rpb24tc2NoZW1hXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTeW5jUGFzc3dvcmRUb1VzZXJIb29rKFxuICByZXNvbHZlZFNjaGVtYXM6IEJldHRlckF1dGhTY2hlbWFzXG4pOiBDb2xsZWN0aW9uQWZ0ZXJDaGFuZ2VIb29rIHtcbiAgY29uc3QgaG9vazogQ29sbGVjdGlvbkFmdGVyQ2hhbmdlSG9vayA9IGFzeW5jICh7XG4gICAgZG9jLFxuICAgIHJlcSxcbiAgICBvcGVyYXRpb24sXG4gICAgY29udGV4dFxuICB9KSA9PiB7XG4gICAgaWYgKGNvbnRleHQ/LnN5bmNBY2NvdW50SG9vaykgcmV0dXJuIGRvYztcblxuICAgIGlmIChvcGVyYXRpb24gIT09IFwiY3JlYXRlXCIgJiYgb3BlcmF0aW9uICE9PSBcInVwZGF0ZVwiKSB7XG4gICAgICByZXR1cm4gZG9jO1xuICAgIH1cbiAgICBjb25zdCB1c2VyU2x1ZyA9IGdldFNjaGVtYUNvbGxlY3Rpb25TbHVnKHJlc29sdmVkU2NoZW1hcywgYmFNb2RlbEtleS51c2VyKTtcbiAgICBjb25zdCBhY2NvdW50U2x1ZyA9IGdldFNjaGVtYUNvbGxlY3Rpb25TbHVnKFxuICAgICAgcmVzb2x2ZWRTY2hlbWFzLFxuICAgICAgYmFNb2RlbEtleS5hY2NvdW50XG4gICAgKTtcbiAgICBjb25zdCB1c2VyRmllbGQgPSBnZXRTY2hlbWFGaWVsZE5hbWUoXG4gICAgICByZXNvbHZlZFNjaGVtYXMsXG4gICAgICBiYU1vZGVsS2V5LmFjY291bnQsXG4gICAgICBcInVzZXJJZFwiXG4gICAgKTtcblxuICAgIGlmICghZG9jW3VzZXJGaWVsZF0pIHtcbiAgICAgIHJldHVybiBkb2M7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmRCeUlEKHtcbiAgICAgIGNvbGxlY3Rpb246IGFjY291bnRTbHVnLFxuICAgICAgaWQ6IGRvYy5pZCxcbiAgICAgIGRlcHRoOiAwLFxuICAgICAgcmVxLFxuICAgICAgc2hvd0hpZGRlbkZpZWxkczogdHJ1ZVxuICAgIH0pO1xuXG4gICAgaWYgKCFhY2NvdW50IHx8ICFhY2NvdW50LnBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gZG9jO1xuICAgIH1cblxuICAgIGNvbnN0IFtzYWx0LCBoYXNoXSA9IGFjY291bnQucGFzc3dvcmQuc3BsaXQoXCI6XCIpO1xuXG4gICAgaWYgKCFzYWx0IHx8ICFoYXNoKSB7XG4gICAgICByZXR1cm4gZG9jO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJJZCA9XG4gICAgICB0eXBlb2YgZG9jW3VzZXJGaWVsZF0gPT09IFwib2JqZWN0XCIgPyBkb2NbdXNlckZpZWxkXT8uaWQgOiBkb2NbdXNlckZpZWxkXTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZXEucGF5bG9hZC51cGRhdGUoe1xuICAgICAgICBjb2xsZWN0aW9uOiB1c2VyU2x1ZyxcbiAgICAgICAgaWQ6IHVzZXJJZCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHNhbHQsXG4gICAgICAgICAgaGFzaFxuICAgICAgICB9LFxuICAgICAgICByZXEsXG4gICAgICAgIGNvbnRleHQ6IHsgc3luY1Bhc3N3b3JkVG9Vc2VyOiB0cnVlIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHN5bmMgcGFzc3dvcmQgdG8gdXNlcjpcIiwgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBkb2M7XG4gIH07XG5cbiAgcmV0dXJuIGhvb2sgYXMgQ29sbGVjdGlvbkFmdGVyQ2hhbmdlSG9vaztcbn1cbiJdLCJuYW1lcyI6WyJiYU1vZGVsS2V5IiwiZ2V0U2NoZW1hQ29sbGVjdGlvblNsdWciLCJnZXRTY2hlbWFGaWVsZE5hbWUiLCJnZXRTeW5jUGFzc3dvcmRUb1VzZXJIb29rIiwicmVzb2x2ZWRTY2hlbWFzIiwiaG9vayIsImRvYyIsInJlcSIsIm9wZXJhdGlvbiIsImNvbnRleHQiLCJzeW5jQWNjb3VudEhvb2siLCJ1c2VyU2x1ZyIsInVzZXIiLCJhY2NvdW50U2x1ZyIsImFjY291bnQiLCJ1c2VyRmllbGQiLCJwYXlsb2FkIiwiZmluZEJ5SUQiLCJjb2xsZWN0aW9uIiwiaWQiLCJkZXB0aCIsInNob3dIaWRkZW5GaWVsZHMiLCJwYXNzd29yZCIsInNhbHQiLCJoYXNoIiwic3BsaXQiLCJ1c2VySWQiLCJ1cGRhdGUiLCJkYXRhIiwic3luY1Bhc3N3b3JkVG9Vc2VyIiwiZXJyb3IiLCJjb25zb2xlIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxVQUFVLFFBQVEsd0JBQWlDO0FBRTVELFNBQ0VDLHVCQUF1QixFQUN2QkMsa0JBQWtCLFFBQ2IsZ0NBQWdDO0FBRXZDLE9BQU8sU0FBU0MsMEJBQ2RDLGVBQWtDO0lBRWxDLE1BQU1DLE9BQWtDLE9BQU8sRUFDN0NDLEdBQUcsRUFDSEMsR0FBRyxFQUNIQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUjtRQUNDLElBQUlBLFNBQVNDLGlCQUFpQixPQUFPSjtRQUVyQyxJQUFJRSxjQUFjLFlBQVlBLGNBQWMsVUFBVTtZQUNwRCxPQUFPRjtRQUNUO1FBQ0EsTUFBTUssV0FBV1Ysd0JBQXdCRyxpQkFBaUJKLFdBQVdZLElBQUk7UUFDekUsTUFBTUMsY0FBY1osd0JBQ2xCRyxpQkFDQUosV0FBV2MsT0FBTztRQUVwQixNQUFNQyxZQUFZYixtQkFDaEJFLGlCQUNBSixXQUFXYyxPQUFPLEVBQ2xCO1FBR0YsSUFBSSxDQUFDUixHQUFHLENBQUNTLFVBQVUsRUFBRTtZQUNuQixPQUFPVDtRQUNUO1FBRUEsTUFBTVEsVUFBVSxNQUFNUCxJQUFJUyxPQUFPLENBQUNDLFFBQVEsQ0FBQztZQUN6Q0MsWUFBWUw7WUFDWk0sSUFBSWIsSUFBSWEsRUFBRTtZQUNWQyxPQUFPO1lBQ1BiO1lBQ0FjLGtCQUFrQjtRQUNwQjtRQUVBLElBQUksQ0FBQ1AsV0FBVyxDQUFDQSxRQUFRUSxRQUFRLEVBQUU7WUFDakMsT0FBT2hCO1FBQ1Q7UUFFQSxNQUFNLENBQUNpQixNQUFNQyxLQUFLLEdBQUdWLFFBQVFRLFFBQVEsQ0FBQ0csS0FBSyxDQUFDO1FBRTVDLElBQUksQ0FBQ0YsUUFBUSxDQUFDQyxNQUFNO1lBQ2xCLE9BQU9sQjtRQUNUO1FBRUEsTUFBTW9CLFNBQ0osT0FBT3BCLEdBQUcsQ0FBQ1MsVUFBVSxLQUFLLFdBQVdULEdBQUcsQ0FBQ1MsVUFBVSxFQUFFSSxLQUFLYixHQUFHLENBQUNTLFVBQVU7UUFFMUUsSUFBSTtZQUNGLE1BQU1SLElBQUlTLE9BQU8sQ0FBQ1csTUFBTSxDQUFDO2dCQUN2QlQsWUFBWVA7Z0JBQ1pRLElBQUlPO2dCQUNKRSxNQUFNO29CQUNKTDtvQkFDQUM7Z0JBQ0Y7Z0JBQ0FqQjtnQkFDQUUsU0FBUztvQkFBRW9CLG9CQUFvQjtnQkFBSztZQUN0QztRQUNGLEVBQUUsT0FBT0MsT0FBTztZQUNkQyxRQUFRRCxLQUFLLENBQUMsb0NBQW9DQTtRQUNwRDtRQUVBLE9BQU94QjtJQUNUO0lBRUEsT0FBT0Q7QUFDVCJ9
|
package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-admin-role.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQvD,eAAO,MAAM,uBAAuB,GAClC,eAAe,kBAAkB,EACjC,UAAU,MAAM,KACf,QA0EF,CAAC"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { status as httpStatus } from "http-status";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { adminEndpoints, baseSlugs } from "../../../../constants";
|
|
4
|
-
import { getPayloadAuth } from "../../../get-payload-auth";
|
|
5
|
-
const setAdminRoleSchema = z.object({
|
|
6
|
-
token: z.string().optional(),
|
|
7
|
-
redirect: z.string().optional()
|
|
8
|
-
});
|
|
9
|
-
export const getSetAdminRoleEndpoint = (pluginOptions, userSlug)=>{
|
|
10
|
-
const endpoint = {
|
|
11
|
-
path: adminEndpoints.setAdminRole,
|
|
12
|
-
method: "get",
|
|
13
|
-
handler: async (req)=>{
|
|
14
|
-
const { config } = req.payload;
|
|
15
|
-
const schema = setAdminRoleSchema.safeParse(req.query);
|
|
16
|
-
if (!schema.success) {
|
|
17
|
-
return Response.json({
|
|
18
|
-
message: schema.error.message
|
|
19
|
-
}, {
|
|
20
|
-
status: httpStatus.BAD_REQUEST
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
const payloadAuth = await getPayloadAuth(config);
|
|
24
|
-
const session = await payloadAuth.betterAuth.api.getSession({
|
|
25
|
-
headers: req.headers
|
|
26
|
-
});
|
|
27
|
-
if (!session) {
|
|
28
|
-
return Response.json({
|
|
29
|
-
message: "No session found"
|
|
30
|
-
}, {
|
|
31
|
-
status: httpStatus.UNAUTHORIZED
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
const { token, redirect } = schema.data;
|
|
35
|
-
const invite = await req.payload.find({
|
|
36
|
-
collection: pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations,
|
|
37
|
-
where: {
|
|
38
|
-
token: {
|
|
39
|
-
equals: token
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
limit: 1
|
|
43
|
-
});
|
|
44
|
-
if (invite.docs.length === 0) {
|
|
45
|
-
return Response.json({
|
|
46
|
-
message: "Invalid token"
|
|
47
|
-
}, {
|
|
48
|
-
status: httpStatus.UNAUTHORIZED
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
const role = invite.docs[0].role;
|
|
52
|
-
try {
|
|
53
|
-
const updatedUser = await req.payload.update({
|
|
54
|
-
collection: userSlug,
|
|
55
|
-
id: session.user.id,
|
|
56
|
-
data: {
|
|
57
|
-
role: [
|
|
58
|
-
role
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
overrideAccess: true
|
|
62
|
-
});
|
|
63
|
-
await req.payload.delete({
|
|
64
|
-
collection: pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations,
|
|
65
|
-
where: {
|
|
66
|
-
token: {
|
|
67
|
-
equals: token
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
const response = new Response(null, {
|
|
72
|
-
status: 307,
|
|
73
|
-
headers: {
|
|
74
|
-
Location: redirect ?? config.routes.admin
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return response;
|
|
78
|
-
} catch (error) {
|
|
79
|
-
return Response.json({
|
|
80
|
-
message: "Error updating user role"
|
|
81
|
-
}, {
|
|
82
|
-
status: httpStatus.INTERNAL_SERVER_ERROR
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
return endpoint;
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9zZXQtYWRtaW4tcm9sZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGF0dXMgYXMgaHR0cFN0YXR1cyB9IGZyb20gXCJodHRwLXN0YXR1c1wiO1xuaW1wb3J0IHsgdHlwZSBFbmRwb2ludCB9IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgYWRtaW5FbmRwb2ludHMsIGJhc2VTbHVncyB9IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFBheWxvYWRBdXRoT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0UGF5bG9hZEF1dGggfSBmcm9tIFwiLi4vLi4vLi4vZ2V0LXBheWxvYWQtYXV0aFwiO1xuXG5jb25zdCBzZXRBZG1pblJvbGVTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlZGlyZWN0OiB6LnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQgPSAoXG4gIHBsdWdpbk9wdGlvbnM6IFBheWxvYWRBdXRoT3B0aW9ucyxcbiAgdXNlclNsdWc6IHN0cmluZ1xuKTogRW5kcG9pbnQgPT4ge1xuICBjb25zdCBlbmRwb2ludDogRW5kcG9pbnQgPSB7XG4gICAgcGF0aDogYWRtaW5FbmRwb2ludHMuc2V0QWRtaW5Sb2xlLFxuICAgIG1ldGhvZDogXCJnZXRcIixcbiAgICBoYW5kbGVyOiBhc3luYyAocmVxKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZyB9ID0gcmVxLnBheWxvYWQ7XG4gICAgICBjb25zdCBzY2hlbWEgPSBzZXRBZG1pblJvbGVTY2hlbWEuc2FmZVBhcnNlKHJlcS5xdWVyeSk7XG4gICAgICBpZiAoIXNjaGVtYS5zdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgIHsgbWVzc2FnZTogc2NoZW1hLmVycm9yLm1lc3NhZ2UgfSxcbiAgICAgICAgICB7IHN0YXR1czogaHR0cFN0YXR1cy5CQURfUkVRVUVTVCB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXlsb2FkQXV0aCA9IGF3YWl0IGdldFBheWxvYWRBdXRoKGNvbmZpZyk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgcGF5bG9hZEF1dGguYmV0dGVyQXV0aC5hcGkuZ2V0U2Vzc2lvbih7XG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzXG4gICAgICB9KTtcbiAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiTm8gc2Vzc2lvbiBmb3VuZFwiIH0sXG4gICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuVU5BVVRIT1JJWkVEIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdG9rZW4sIHJlZGlyZWN0IH0gPSBzY2hlbWEuZGF0YTtcbiAgICAgIGNvbnN0IGludml0ZSA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgICBjb2xsZWN0aW9uOlxuICAgICAgICAgIHBsdWdpbk9wdGlvbnMuYWRtaW5JbnZpdGF0aW9ucz8uc2x1ZyA/PyBiYXNlU2x1Z3MuYWRtaW5JbnZpdGF0aW9ucyxcbiAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICB0b2tlbjogeyBlcXVhbHM6IHRva2VuIH1cbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IDFcbiAgICAgIH0pO1xuICAgICAgaWYgKGludml0ZS5kb2NzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gUmVzcG9uc2UuanNvbihcbiAgICAgICAgICB7IG1lc3NhZ2U6IFwiSW52YWxpZCB0b2tlblwiIH0sXG4gICAgICAgICAgeyBzdGF0dXM6IGh0dHBTdGF0dXMuVU5BVVRIT1JJWkVEIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvbGUgPSBpbnZpdGUuZG9jc1swXS5yb2xlIGFzIHN0cmluZztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRVc2VyID0gYXdhaXQgcmVxLnBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiB1c2VyU2x1ZyxcbiAgICAgICAgICBpZDogc2Vzc2lvbi51c2VyLmlkLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHJvbGU6IFtyb2xlXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3M6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHJlcS5wYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgY29sbGVjdGlvbjpcbiAgICAgICAgICAgIHBsdWdpbk9wdGlvbnMuYWRtaW5JbnZpdGF0aW9ucz8uc2x1ZyA/PyBiYXNlU2x1Z3MuYWRtaW5JbnZpdGF0aW9ucyxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgICAgZXF1YWxzOiB0b2tlblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgICBzdGF0dXM6IDMwNyxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBMb2NhdGlvbjogcmVkaXJlY3QgPz8gY29uZmlnLnJvdXRlcy5hZG1pblxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBSZXNwb25zZS5qc29uKFxuICAgICAgICAgIHsgbWVzc2FnZTogXCJFcnJvciB1cGRhdGluZyB1c2VyIHJvbGVcIiB9LFxuICAgICAgICAgIHsgc3RhdHVzOiBodHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUiB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBlbmRwb2ludDtcbn07XG4iXSwibmFtZXMiOlsic3RhdHVzIiwiaHR0cFN0YXR1cyIsInoiLCJhZG1pbkVuZHBvaW50cyIsImJhc2VTbHVncyIsImdldFBheWxvYWRBdXRoIiwic2V0QWRtaW5Sb2xlU2NoZW1hIiwib2JqZWN0IiwidG9rZW4iLCJzdHJpbmciLCJvcHRpb25hbCIsInJlZGlyZWN0IiwiZ2V0U2V0QWRtaW5Sb2xlRW5kcG9pbnQiLCJwbHVnaW5PcHRpb25zIiwidXNlclNsdWciLCJlbmRwb2ludCIsInBhdGgiLCJzZXRBZG1pblJvbGUiLCJtZXRob2QiLCJoYW5kbGVyIiwicmVxIiwiY29uZmlnIiwicGF5bG9hZCIsInNjaGVtYSIsInNhZmVQYXJzZSIsInF1ZXJ5Iiwic3VjY2VzcyIsIlJlc3BvbnNlIiwianNvbiIsIm1lc3NhZ2UiLCJlcnJvciIsIkJBRF9SRVFVRVNUIiwicGF5bG9hZEF1dGgiLCJzZXNzaW9uIiwiYmV0dGVyQXV0aCIsImFwaSIsImdldFNlc3Npb24iLCJoZWFkZXJzIiwiVU5BVVRIT1JJWkVEIiwiZGF0YSIsImludml0ZSIsImZpbmQiLCJjb2xsZWN0aW9uIiwiYWRtaW5JbnZpdGF0aW9ucyIsInNsdWciLCJ3aGVyZSIsImVxdWFscyIsImxpbWl0IiwiZG9jcyIsImxlbmd0aCIsInJvbGUiLCJ1cGRhdGVkVXNlciIsInVwZGF0ZSIsImlkIiwidXNlciIsIm92ZXJyaWRlQWNjZXNzIiwiZGVsZXRlIiwicmVzcG9uc2UiLCJMb2NhdGlvbiIsInJvdXRlcyIsImFkbWluIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVQyxV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
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CollectionAfterLoginHook } from "payload";
|
|
2
|
-
/**
|
|
3
|
-
* This hook is used to sync the admin login token with better-auth session token
|
|
4
|
-
* It also creates a new session in better-auth
|
|
5
|
-
*/
|
|
6
|
-
export declare function getAfterLoginHook(): CollectionAfterLoginHook;
|
|
7
|
-
//# sourceMappingURL=after-login.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"after-login.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/after-login.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAMnD;;;GAGG;AACH,wBAAgB,iBAAiB,IA+EhB,wBAAwB,CACxC"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { generateId } from "better-auth";
|
|
2
|
-
import { createAuthMiddleware } from "better-auth/api";
|
|
3
|
-
import { setSessionCookie } from "better-auth/cookies";
|
|
4
|
-
import { parseSetCookie } from "next/dist/compiled/@edge-runtime/cookies";
|
|
5
|
-
import { cookies } from "next/headers";
|
|
6
|
-
import { baModelKey } from "../../../../constants";
|
|
7
|
-
import { getCollectionByModelKey } from "../../../../helpers/get-collection";
|
|
8
|
-
import { getIp } from "../../../../helpers/get-ip";
|
|
9
|
-
import { prepareSessionData } from "../../../../helpers/prepare-session-data";
|
|
10
|
-
import { getPayloadAuth } from "../../../get-payload-auth";
|
|
11
|
-
/**
|
|
12
|
-
* This hook is used to sync the admin login token with better-auth session token
|
|
13
|
-
* It also creates a new session in better-auth
|
|
14
|
-
*/ export function getAfterLoginHook() {
|
|
15
|
-
const hook = async ({ req, user })=>{
|
|
16
|
-
const config = req.payload.config;
|
|
17
|
-
const payload = await getPayloadAuth(config);
|
|
18
|
-
const collections = req.payload.collections;
|
|
19
|
-
const userCollection = getCollectionByModelKey(collections, baModelKey.user);
|
|
20
|
-
const sessionCollection = getCollectionByModelKey(collections, baModelKey.session);
|
|
21
|
-
const cookieStore = await cookies();
|
|
22
|
-
const authContext = await payload.betterAuth.$context;
|
|
23
|
-
const sessionExpiration = payload.betterAuth.options.session?.expiresIn || 60 * 60 * 24 * 7; // 7 days
|
|
24
|
-
// we can't use internal adapter as we can cause a race condition unless we pass req to the payload.create
|
|
25
|
-
const session = await payload.create({
|
|
26
|
-
collection: sessionCollection.slug,
|
|
27
|
-
data: {
|
|
28
|
-
ipAddress: getIp(req.headers, payload.betterAuth.options) || "",
|
|
29
|
-
userAgent: req.headers?.get("user-agent") || "",
|
|
30
|
-
user: user.id,
|
|
31
|
-
token: generateId(32),
|
|
32
|
-
expiresAt: new Date(Date.now() + sessionExpiration * 1000)
|
|
33
|
-
},
|
|
34
|
-
req,
|
|
35
|
-
depth: 0
|
|
36
|
-
});
|
|
37
|
-
const betterAuthHandleRequest = createAuthMiddleware(async (ctx)=>{
|
|
38
|
-
ctx.context = {
|
|
39
|
-
...authContext,
|
|
40
|
-
user: user
|
|
41
|
-
};
|
|
42
|
-
await ctx.setSignedCookie(ctx.context.authCookies.sessionToken.name, session.token, ctx.context.secret, ctx.context.authCookies.sessionToken.options);
|
|
43
|
-
const filteredSessionData = await prepareSessionData({
|
|
44
|
-
sessionData: {
|
|
45
|
-
session,
|
|
46
|
-
user
|
|
47
|
-
},
|
|
48
|
-
usersCollection: userCollection,
|
|
49
|
-
sessionsCollection: sessionCollection
|
|
50
|
-
});
|
|
51
|
-
if (filteredSessionData) {
|
|
52
|
-
await setSessionCookie(ctx, filteredSessionData);
|
|
53
|
-
}
|
|
54
|
-
if ("responseHeaders" in ctx) {
|
|
55
|
-
return ctx.responseHeaders;
|
|
56
|
-
}
|
|
57
|
-
return null;
|
|
58
|
-
});
|
|
59
|
-
// Create a modified request object that matches the expected MiddlewareInputContext type
|
|
60
|
-
const modifiedReq = {
|
|
61
|
-
...req,
|
|
62
|
-
body: undefined // Explicitly set body to undefined to satisfy type constraint
|
|
63
|
-
};
|
|
64
|
-
const responseHeaders = await betterAuthHandleRequest(modifiedReq);
|
|
65
|
-
const responseCookies = responseHeaders?.getSetCookie().map((cookie)=>parseSetCookie(cookie)).filter(Boolean);
|
|
66
|
-
if (responseCookies) {
|
|
67
|
-
for (const cookieData of responseCookies){
|
|
68
|
-
const { name, value, ...options } = cookieData;
|
|
69
|
-
cookieStore.set({
|
|
70
|
-
...options,
|
|
71
|
-
name,
|
|
72
|
-
value: decodeURIComponent(value)
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
return hook;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2hvb2tzL2FmdGVyLWxvZ2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdlbmVyYXRlSWQsIFNlc3Npb24gfSBmcm9tIFwiYmV0dGVyLWF1dGhcIjtcbmltcG9ydCB7IGNyZWF0ZUF1dGhNaWRkbGV3YXJlIH0gZnJvbSBcImJldHRlci1hdXRoL2FwaVwiO1xuaW1wb3J0IHsgc2V0U2Vzc2lvbkNvb2tpZSB9IGZyb20gXCJiZXR0ZXItYXV0aC9jb29raWVzXCI7XG5pbXBvcnQge1xuICBwYXJzZVNldENvb2tpZSxcbiAgdHlwZSBSZXNwb25zZUNvb2tpZVxufSBmcm9tIFwibmV4dC9kaXN0L2NvbXBpbGVkL0BlZGdlLXJ1bnRpbWUvY29va2llc1wiO1xuaW1wb3J0IHsgY29va2llcyB9IGZyb20gXCJuZXh0L2hlYWRlcnNcIjtcbmltcG9ydCB7IENvbGxlY3Rpb25BZnRlckxvZ2luSG9vayB9IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgeyBiYU1vZGVsS2V5IH0gZnJvbSBcIkAvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtY29sbGVjdGlvblwiO1xuaW1wb3J0IHsgZ2V0SXAgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtaXBcIjtcbmltcG9ydCB7IHByZXBhcmVTZXNzaW9uRGF0YSB9IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL3ByZXBhcmUtc2Vzc2lvbi1kYXRhXCI7XG5pbXBvcnQgeyBnZXRQYXlsb2FkQXV0aCB9IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9saWIvZ2V0LXBheWxvYWQtYXV0aFwiO1xuLyoqXG4gKiBUaGlzIGhvb2sgaXMgdXNlZCB0byBzeW5jIHRoZSBhZG1pbiBsb2dpbiB0b2tlbiB3aXRoIGJldHRlci1hdXRoIHNlc3Npb24gdG9rZW5cbiAqIEl0IGFsc28gY3JlYXRlcyBhIG5ldyBzZXNzaW9uIGluIGJldHRlci1hdXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZnRlckxvZ2luSG9vaygpIHtcbiAgY29uc3QgaG9vazogQ29sbGVjdGlvbkFmdGVyTG9naW5Ib29rID0gYXN5bmMgKHsgcmVxLCB1c2VyIH0pID0+IHtcbiAgICBjb25zdCBjb25maWcgPSByZXEucGF5bG9hZC5jb25maWc7XG4gICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGdldFBheWxvYWRBdXRoKGNvbmZpZyk7XG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucztcbiAgICBjb25zdCB1c2VyQ29sbGVjdGlvbiA9IGdldENvbGxlY3Rpb25CeU1vZGVsS2V5KFxuICAgICAgY29sbGVjdGlvbnMsXG4gICAgICBiYU1vZGVsS2V5LnVzZXJcbiAgICApO1xuICAgIGNvbnN0IHNlc3Npb25Db2xsZWN0aW9uID0gZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkoXG4gICAgICBjb2xsZWN0aW9ucyxcbiAgICAgIGJhTW9kZWxLZXkuc2Vzc2lvblxuICAgICk7XG4gICAgY29uc3QgY29va2llU3RvcmUgPSBhd2FpdCBjb29raWVzKCk7XG4gICAgY29uc3QgYXV0aENvbnRleHQgPSBhd2FpdCBwYXlsb2FkLmJldHRlckF1dGguJGNvbnRleHQ7XG4gICAgY29uc3Qgc2Vzc2lvbkV4cGlyYXRpb24gPVxuICAgICAgcGF5bG9hZC5iZXR0ZXJBdXRoLm9wdGlvbnMuc2Vzc2lvbj8uZXhwaXJlc0luIHx8IDYwICogNjAgKiAyNCAqIDc7IC8vIDcgZGF5c1xuICAgIC8vIHdlIGNhbid0IHVzZSBpbnRlcm5hbCBhZGFwdGVyIGFzIHdlIGNhbiBjYXVzZSBhIHJhY2UgY29uZGl0aW9uIHVubGVzcyB3ZSBwYXNzIHJlcSB0byB0aGUgcGF5bG9hZC5jcmVhdGVcbiAgICBjb25zdCBzZXNzaW9uID0gKGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgIGNvbGxlY3Rpb246IHNlc3Npb25Db2xsZWN0aW9uLnNsdWcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlwQWRkcmVzczogZ2V0SXAocmVxLmhlYWRlcnMsIHBheWxvYWQuYmV0dGVyQXV0aC5vcHRpb25zKSB8fCBcIlwiLFxuICAgICAgICB1c2VyQWdlbnQ6IHJlcS5oZWFkZXJzPy5nZXQoXCJ1c2VyLWFnZW50XCIpIHx8IFwiXCIsXG4gICAgICAgIHVzZXI6IHVzZXIuaWQsXG4gICAgICAgIHRva2VuOiBnZW5lcmF0ZUlkKDMyKSxcbiAgICAgICAgZXhwaXJlc0F0OiBuZXcgRGF0ZShEYXRlLm5vdygpICsgc2Vzc2lvbkV4cGlyYXRpb24gKiAxMDAwKVxuICAgICAgfSxcbiAgICAgIHJlcSxcbiAgICAgIGRlcHRoOiAwXG4gICAgfSkpIGFzIFNlc3Npb247XG5cbiAgICBjb25zdCBiZXR0ZXJBdXRoSGFuZGxlUmVxdWVzdCA9IGNyZWF0ZUF1dGhNaWRkbGV3YXJlKFxuICAgICAgYXN5bmMgKGN0eCk6IFByb21pc2U8SGVhZGVycyB8IG51bGw+ID0+IHtcbiAgICAgICAgY3R4LmNvbnRleHQgPSB7IC4uLmF1dGhDb250ZXh0LCB1c2VyOiB1c2VyIH07XG4gICAgICAgIGF3YWl0IGN0eC5zZXRTaWduZWRDb29raWUoXG4gICAgICAgICAgY3R4LmNvbnRleHQuYXV0aENvb2tpZXMuc2Vzc2lvblRva2VuLm5hbWUsXG4gICAgICAgICAgc2Vzc2lvbi50b2tlbixcbiAgICAgICAgICBjdHguY29udGV4dC5zZWNyZXQsXG4gICAgICAgICAgY3R4LmNvbnRleHQuYXV0aENvb2tpZXMuc2Vzc2lvblRva2VuLm9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRTZXNzaW9uRGF0YSA9IGF3YWl0IHByZXBhcmVTZXNzaW9uRGF0YSh7XG4gICAgICAgICAgc2Vzc2lvbkRhdGE6IHsgc2Vzc2lvbiwgdXNlciB9LFxuICAgICAgICAgIHVzZXJzQ29sbGVjdGlvbjogdXNlckNvbGxlY3Rpb24sXG4gICAgICAgICAgc2Vzc2lvbnNDb2xsZWN0aW9uOiBzZXNzaW9uQ29sbGVjdGlvblxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGZpbHRlcmVkU2Vzc2lvbkRhdGEpIHtcbiAgICAgICAgICBhd2FpdCBzZXRTZXNzaW9uQ29va2llKGN0eCwgZmlsdGVyZWRTZXNzaW9uRGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwicmVzcG9uc2VIZWFkZXJzXCIgaW4gY3R4KSB7XG4gICAgICAgICAgcmV0dXJuIGN0eC5yZXNwb25zZUhlYWRlcnMgYXMgSGVhZGVycztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGEgbW9kaWZpZWQgcmVxdWVzdCBvYmplY3QgdGhhdCBtYXRjaGVzIHRoZSBleHBlY3RlZCBNaWRkbGV3YXJlSW5wdXRDb250ZXh0IHR5cGVcbiAgICBjb25zdCBtb2RpZmllZFJlcSA9IHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIGJvZHk6IHVuZGVmaW5lZCAvLyBFeHBsaWNpdGx5IHNldCBib2R5IHRvIHVuZGVmaW5lZCB0byBzYXRpc2Z5IHR5cGUgY29uc3RyYWludFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBhd2FpdCBiZXR0ZXJBdXRoSGFuZGxlUmVxdWVzdChtb2RpZmllZFJlcSk7XG4gICAgY29uc3QgcmVzcG9uc2VDb29raWVzID0gcmVzcG9uc2VIZWFkZXJzXG4gICAgICA/LmdldFNldENvb2tpZSgpXG4gICAgICAubWFwKChjb29raWUpID0+IHBhcnNlU2V0Q29va2llKGNvb2tpZSkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIFJlc3BvbnNlQ29va2llW107XG5cbiAgICBpZiAocmVzcG9uc2VDb29raWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvb2tpZURhdGEgb2YgcmVzcG9uc2VDb29raWVzKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUsIC4uLm9wdGlvbnMgfSA9IGNvb2tpZURhdGE7XG4gICAgICAgIGNvb2tpZVN0b3JlLnNldCh7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHZhbHVlOiBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZXR1cm4gaG9vayBhcyBDb2xsZWN0aW9uQWZ0ZXJMb2dpbkhvb2s7XG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVJZCIsImNyZWF0ZUF1dGhNaWRkbGV3YXJlIiwic2V0U2Vzc2lvbkNvb2tpZSIsInBhcnNlU2V0Q29va2llIiwiY29va2llcyIsImJhTW9kZWxLZXkiLCJnZXRDb2xsZWN0aW9uQnlNb2RlbEtleSIsImdldElwIiwicHJlcGFyZVNlc3Npb25EYXRhIiwiZ2V0UGF5bG9hZEF1dGgiLCJnZXRBZnRlckxvZ2luSG9vayIsImhvb2siLCJyZXEiLCJ1c2VyIiwiY29uZmlnIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwidXNlckNvbGxlY3Rpb24iLCJzZXNzaW9uQ29sbGVjdGlvbiIsInNlc3Npb24iLCJjb29raWVTdG9yZSIsImF1dGhDb250ZXh0IiwiYmV0dGVyQXV0aCIsIiRjb250ZXh0Iiwic2Vzc2lvbkV4cGlyYXRpb24iLCJvcHRpb25zIiwiZXhwaXJlc0luIiwiY3JlYXRlIiwiY29sbGVjdGlvbiIsInNsdWciLCJkYXRhIiwiaXBBZGRyZXNzIiwiaGVhZGVycyIsInVzZXJBZ2VudCIsImdldCIsImlkIiwidG9rZW4iLCJleHBpcmVzQXQiLCJEYXRlIiwibm93IiwiZGVwdGgiLCJiZXR0ZXJBdXRoSGFuZGxlUmVxdWVzdCIsImN0eCIsImNvbnRleHQiLCJzZXRTaWduZWRDb29raWUiLCJhdXRoQ29va2llcyIsInNlc3Npb25Ub2tlbiIsIm5hbWUiLCJzZWNyZXQiLCJmaWx0ZXJlZFNlc3Npb25EYXRhIiwic2Vzc2lvbkRhdGEiLCJ1c2Vyc0NvbGxlY3Rpb24iLCJzZXNzaW9uc0NvbGxlY3Rpb24iLCJyZXNwb25zZUhlYWRlcnMiLCJtb2RpZmllZFJlcSIsImJvZHkiLCJ1bmRlZmluZWQiLCJyZXNwb25zZUNvb2tpZXMiLCJnZXRTZXRDb29raWUiLCJtYXAiLCJjb29raWUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiY29va2llRGF0YSIsInZhbHVlIiwic2V0IiwiZGVjb2RlVVJJQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVLFFBQWlCLGNBQWM7QUFDbEQsU0FBU0Msb0JBQW9CLFFBQVEsa0JBQWtCO0FBQ3ZELFNBQVNDLGdCQUFnQixRQUFRLHNCQUFzQjtBQUN2RCxTQUNFQyxjQUFjLFFBRVQsMkNBQTJDO0FBQ2xELFNBQVNDLE9BQU8sUUFBUSxlQUFlO0FBRXZDLFNBQVNDLFVBQVUsUUFBUSx3QkFBaUM7QUFDNUQsU0FBU0MsdUJBQXVCLFFBQVEscUNBQThDO0FBQ3RGLFNBQVNDLEtBQUssUUFBUSw2QkFBc0M7QUFDNUQsU0FBU0Msa0JBQWtCLFFBQVEsMkNBQW9EO0FBQ3ZGLFNBQVNDLGNBQWMsUUFBUSw0QkFBNEM7QUFDM0U7OztDQUdDLEdBQ0QsT0FBTyxTQUFTQztJQUNkLE1BQU1DLE9BQWlDLE9BQU8sRUFBRUMsR0FBRyxFQUFFQyxJQUFJLEVBQUU7UUFDekQsTUFBTUMsU0FBU0YsSUFBSUcsT0FBTyxDQUFDRCxNQUFNO1FBQ2pDLE1BQU1DLFVBQVUsTUFBTU4sZUFBZUs7UUFDckMsTUFBTUUsY0FBY0osSUFBSUcsT0FBTyxDQUFDQyxXQUFXO1FBQzNDLE1BQU1DLGlCQUFpQlgsd0JBQ3JCVSxhQUNBWCxXQUFXUSxJQUFJO1FBRWpCLE1BQU1LLG9CQUFvQlosd0JBQ3hCVSxhQUNBWCxXQUFXYyxPQUFPO1FBRXBCLE1BQU1DLGNBQWMsTUFBTWhCO1FBQzFCLE1BQU1pQixjQUFjLE1BQU1OLFFBQVFPLFVBQVUsQ0FBQ0MsUUFBUTtRQUNyRCxNQUFNQyxvQkFDSlQsUUFBUU8sVUFBVSxDQUFDRyxPQUFPLENBQUNOLE9BQU8sRUFBRU8sYUFBYSxLQUFLLEtBQUssS0FBSyxHQUFHLFNBQVM7UUFDOUUsMEdBQTBHO1FBQzFHLE1BQU1QLFVBQVcsTUFBTUosUUFBUVksTUFBTSxDQUFDO1lBQ3BDQyxZQUFZVixrQkFBa0JXLElBQUk7WUFDbENDLE1BQU07Z0JBQ0pDLFdBQVd4QixNQUFNSyxJQUFJb0IsT0FBTyxFQUFFakIsUUFBUU8sVUFBVSxDQUFDRyxPQUFPLEtBQUs7Z0JBQzdEUSxXQUFXckIsSUFBSW9CLE9BQU8sRUFBRUUsSUFBSSxpQkFBaUI7Z0JBQzdDckIsTUFBTUEsS0FBS3NCLEVBQUU7Z0JBQ2JDLE9BQU9wQyxXQUFXO2dCQUNsQnFDLFdBQVcsSUFBSUMsS0FBS0EsS0FBS0MsR0FBRyxLQUFLZixvQkFBb0I7WUFDdkQ7WUFDQVo7WUFDQTRCLE9BQU87UUFDVDtRQUVBLE1BQU1DLDBCQUEwQnhDLHFCQUM5QixPQUFPeUM7WUFDTEEsSUFBSUMsT0FBTyxHQUFHO2dCQUFFLEdBQUd0QixXQUFXO2dCQUFFUixNQUFNQTtZQUFLO1lBQzNDLE1BQU02QixJQUFJRSxlQUFlLENBQ3ZCRixJQUFJQyxPQUFPLENBQUNFLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDQyxJQUFJLEVBQ3pDNUIsUUFBUWlCLEtBQUssRUFDYk0sSUFBSUMsT0FBTyxDQUFDSyxNQUFNLEVBQ2xCTixJQUFJQyxPQUFPLENBQUNFLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDckIsT0FBTztZQUU5QyxNQUFNd0Isc0JBQXNCLE1BQU16QyxtQkFBbUI7Z0JBQ25EMEMsYUFBYTtvQkFBRS9CO29CQUFTTjtnQkFBSztnQkFDN0JzQyxpQkFBaUJsQztnQkFDakJtQyxvQkFBb0JsQztZQUN0QjtZQUNBLElBQUkrQixxQkFBcUI7Z0JBQ3ZCLE1BQU0vQyxpQkFBaUJ3QyxLQUFLTztZQUM5QjtZQUNBLElBQUkscUJBQXFCUCxLQUFLO2dCQUM1QixPQUFPQSxJQUFJVyxlQUFlO1lBQzVCO1lBQ0EsT0FBTztRQUNUO1FBR0YseUZBQXlGO1FBQ3pGLE1BQU1DLGNBQWM7WUFDbEIsR0FBRzFDLEdBQUc7WUFDTjJDLE1BQU1DLFVBQVUsOERBQThEO1FBQ2hGO1FBRUEsTUFBTUgsa0JBQWtCLE1BQU1aLHdCQUF3QmE7UUFDdEQsTUFBTUcsa0JBQWtCSixpQkFDcEJLLGVBQ0RDLElBQUksQ0FBQ0MsU0FBV3pELGVBQWV5RCxTQUMvQkMsT0FBT0M7UUFFVixJQUFJTCxpQkFBaUI7WUFDbkIsS0FBSyxNQUFNTSxjQUFjTixnQkFBaUI7Z0JBQ3hDLE1BQU0sRUFBRVYsSUFBSSxFQUFFaUIsS0FBSyxFQUFFLEdBQUd2QyxTQUFTLEdBQUdzQztnQkFDcEMzQyxZQUFZNkMsR0FBRyxDQUFDO29CQUNkLEdBQUd4QyxPQUFPO29CQUNWc0I7b0JBQ0FpQixPQUFPRSxtQkFBbUJGO2dCQUM1QjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLE9BQU9yRDtBQUNUIn0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CollectionBeforeLoginHook } from "payload";
|
|
2
|
-
import type { BetterAuthOptions } from "@/better-auth/plugin/types";
|
|
3
|
-
/**
|
|
4
|
-
* This hook blocks login attempts if email verification is required and the user's email is not verified
|
|
5
|
-
*/
|
|
6
|
-
export declare function getBeforeLoginHook(betterAuthOptions: BetterAuthOptions): CollectionBeforeLoginHook;
|
|
7
|
-
//# sourceMappingURL=before-login.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"before-login.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/before-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,iBAAiB,6BAgBtE"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { APIError } from "payload";
|
|
2
|
-
/**
|
|
3
|
-
* This hook blocks login attempts if email verification is required and the user's email is not verified
|
|
4
|
-
*/ export function getBeforeLoginHook(betterAuthOptions) {
|
|
5
|
-
const hook = async ({ user })=>{
|
|
6
|
-
const requireEmailVerification = betterAuthOptions.emailAndPassword?.requireEmailVerification ?? false;
|
|
7
|
-
if (requireEmailVerification && !user.emailVerified) {
|
|
8
|
-
throw new APIError("Email verification required. Please verify your email before logging in.", 403);
|
|
9
|
-
}
|
|
10
|
-
return user;
|
|
11
|
-
};
|
|
12
|
-
return hook;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2hvb2tzL2JlZm9yZS1sb2dpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElFcnJvciwgQ29sbGVjdGlvbkJlZm9yZUxvZ2luSG9vayB9IGZyb20gXCJwYXlsb2FkXCI7XG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhPcHRpb25zIH0gZnJvbSBcIkAvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzXCI7XG4vKipcbiAqIFRoaXMgaG9vayBibG9ja3MgbG9naW4gYXR0ZW1wdHMgaWYgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkIGFuZCB0aGUgdXNlcidzIGVtYWlsIGlzIG5vdCB2ZXJpZmllZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmVmb3JlTG9naW5Ib29rKGJldHRlckF1dGhPcHRpb25zOiBCZXR0ZXJBdXRoT3B0aW9ucykge1xuICBjb25zdCBob29rOiBDb2xsZWN0aW9uQmVmb3JlTG9naW5Ib29rID0gYXN5bmMgKHsgdXNlciB9KSA9PiB7XG4gICAgY29uc3QgcmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uID1cbiAgICAgIGJldHRlckF1dGhPcHRpb25zLmVtYWlsQW5kUGFzc3dvcmQ/LnJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbiA/PyBmYWxzZTtcblxuICAgIGlmIChyZXF1aXJlRW1haWxWZXJpZmljYXRpb24gJiYgIXVzZXIuZW1haWxWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKFxuICAgICAgICBcIkVtYWlsIHZlcmlmaWNhdGlvbiByZXF1aXJlZC4gUGxlYXNlIHZlcmlmeSB5b3VyIGVtYWlsIGJlZm9yZSBsb2dnaW5nIGluLlwiLFxuICAgICAgICA0MDNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH07XG5cbiAgcmV0dXJuIGhvb2s7XG59XG4iXSwibmFtZXMiOlsiQVBJRXJyb3IiLCJnZXRCZWZvcmVMb2dpbkhvb2siLCJiZXR0ZXJBdXRoT3B0aW9ucyIsImhvb2siLCJ1c2VyIiwicmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uIiwiZW1haWxBbmRQYXNzd29yZCIsImVtYWlsVmVyaWZpZWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBbUMsVUFBVTtBQUU5RDs7Q0FFQyxHQUNELE9BQU8sU0FBU0MsbUJBQW1CQyxpQkFBb0M7SUFDckUsTUFBTUMsT0FBa0MsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDckQsTUFBTUMsMkJBQ0pILGtCQUFrQkksZ0JBQWdCLEVBQUVELDRCQUE0QjtRQUVsRSxJQUFJQSw0QkFBNEIsQ0FBQ0QsS0FBS0csYUFBYSxFQUFFO1lBQ25ELE1BQU0sSUFBSVAsU0FDUiw0RUFDQTtRQUVKO1FBRUEsT0FBT0k7SUFDVDtJQUVBLE9BQU9EO0FBQ1QifQ==
|
package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"on-verified-change.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,uBAAuB,+BAmBtC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export function getOnVerifiedChangeHook() {
|
|
2
|
-
const hook = async ({ data, originalDoc })=>{
|
|
3
|
-
const isVerifiedChangingToTrue = Boolean(data._verified) && !Boolean(originalDoc?._verified);
|
|
4
|
-
const isEmailVerifiedChangingToTrue = Boolean(data.emailVerified) && !Boolean(originalDoc?.emailVerified);
|
|
5
|
-
if (!isVerifiedChangingToTrue && !isEmailVerifiedChangingToTrue) {
|
|
6
|
-
return data;
|
|
7
|
-
}
|
|
8
|
-
return {
|
|
9
|
-
...data,
|
|
10
|
-
_verified: true,
|
|
11
|
-
emailVerified: true
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
return hook;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2hvb2tzL29uLXZlcmlmaWVkLWNoYW5nZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uQmVmb3JlQ2hhbmdlSG9vayB9IGZyb20gXCJwYXlsb2FkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPblZlcmlmaWVkQ2hhbmdlSG9vaygpIHtcbiAgY29uc3QgaG9vazogQ29sbGVjdGlvbkJlZm9yZUNoYW5nZUhvb2sgPSBhc3luYyAoeyBkYXRhLCBvcmlnaW5hbERvYyB9KSA9PiB7XG4gICAgY29uc3QgaXNWZXJpZmllZENoYW5naW5nVG9UcnVlID1cbiAgICAgIEJvb2xlYW4oZGF0YS5fdmVyaWZpZWQpICYmICFCb29sZWFuKG9yaWdpbmFsRG9jPy5fdmVyaWZpZWQpO1xuICAgIGNvbnN0IGlzRW1haWxWZXJpZmllZENoYW5naW5nVG9UcnVlID1cbiAgICAgIEJvb2xlYW4oZGF0YS5lbWFpbFZlcmlmaWVkKSAmJiAhQm9vbGVhbihvcmlnaW5hbERvYz8uZW1haWxWZXJpZmllZCk7XG5cbiAgICBpZiAoIWlzVmVyaWZpZWRDaGFuZ2luZ1RvVHJ1ZSAmJiAhaXNFbWFpbFZlcmlmaWVkQ2hhbmdpbmdUb1RydWUpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgX3ZlcmlmaWVkOiB0cnVlLFxuICAgICAgZW1haWxWZXJpZmllZDogdHJ1ZVxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIGhvb2s7XG59XG4iXSwibmFtZXMiOlsiZ2V0T25WZXJpZmllZENoYW5nZUhvb2siLCJob29rIiwiZGF0YSIsIm9yaWdpbmFsRG9jIiwiaXNWZXJpZmllZENoYW5naW5nVG9UcnVlIiwiQm9vbGVhbiIsIl92ZXJpZmllZCIsImlzRW1haWxWZXJpZmllZENoYW5naW5nVG9UcnVlIiwiZW1haWxWZXJpZmllZCJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUFTQTtJQUNkLE1BQU1DLE9BQW1DLE9BQU8sRUFBRUMsSUFBSSxFQUFFQyxXQUFXLEVBQUU7UUFDbkUsTUFBTUMsMkJBQ0pDLFFBQVFILEtBQUtJLFNBQVMsS0FBSyxDQUFDRCxRQUFRRixhQUFhRztRQUNuRCxNQUFNQyxnQ0FDSkYsUUFBUUgsS0FBS00sYUFBYSxLQUFLLENBQUNILFFBQVFGLGFBQWFLO1FBRXZELElBQUksQ0FBQ0osNEJBQTRCLENBQUNHLCtCQUErQjtZQUMvRCxPQUFPTDtRQUNUO1FBRUEsT0FBTztZQUNMLEdBQUdBLElBQUk7WUFDUEksV0FBVztZQUNYRSxlQUFlO1FBQ2pCO0lBQ0Y7SUFFQSxPQUFPUDtBQUNUIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync-account.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/sync-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAQzD,wBAAgB,kBAAkB,IAAI,yBAAyB,CA4G9D"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { BETTER_AUTH_CONTEXT_KEY } from "../../../../../adapter";
|
|
2
|
-
import { baModelKey } from "../../../../constants";
|
|
3
|
-
import { getCollectionByModelKey, getCollectionFieldNameByFieldKey } from "../../../../helpers/get-collection";
|
|
4
|
-
export function getSyncAccountHook() {
|
|
5
|
-
const hook = async ({ doc, req, operation, context })=>{
|
|
6
|
-
if (context?.syncPasswordToUser) return doc;
|
|
7
|
-
if (operation !== "create" && operation !== "update") return doc;
|
|
8
|
-
const collections = req.payload.collections;
|
|
9
|
-
const userCollection = getCollectionByModelKey(collections, baModelKey.user);
|
|
10
|
-
const accountCollection = getCollectionByModelKey(collections, baModelKey.account);
|
|
11
|
-
const userIdFieldName = getCollectionFieldNameByFieldKey(accountCollection, baModelKey.account, "userId");
|
|
12
|
-
const accountIdFieldName = getCollectionFieldNameByFieldKey(accountCollection, baModelKey.account, "accountId");
|
|
13
|
-
const providerIdFieldName = getCollectionFieldNameByFieldKey(accountCollection, baModelKey.account, "providerId");
|
|
14
|
-
const passwordFieldName = getCollectionFieldNameByFieldKey(accountCollection, baModelKey.account, "password");
|
|
15
|
-
const user = await req.payload.findByID({
|
|
16
|
-
collection: userCollection.slug,
|
|
17
|
-
id: doc.id,
|
|
18
|
-
depth: 0,
|
|
19
|
-
req,
|
|
20
|
-
showHiddenFields: true
|
|
21
|
-
});
|
|
22
|
-
if (!user || !user.hash || !user.salt) return doc;
|
|
23
|
-
const passwordValue = `${user.salt}:${user.hash}`;
|
|
24
|
-
if (operation === "create" && !(BETTER_AUTH_CONTEXT_KEY in context)) {
|
|
25
|
-
try {
|
|
26
|
-
await req.payload.create({
|
|
27
|
-
collection: accountCollection.slug,
|
|
28
|
-
data: {
|
|
29
|
-
[userIdFieldName]: doc.id,
|
|
30
|
-
[accountIdFieldName]: doc.id.toString(),
|
|
31
|
-
[providerIdFieldName]: "credential",
|
|
32
|
-
[passwordFieldName]: passwordValue
|
|
33
|
-
},
|
|
34
|
-
context: {
|
|
35
|
-
syncAccountHook: true
|
|
36
|
-
},
|
|
37
|
-
req
|
|
38
|
-
});
|
|
39
|
-
} catch (error) {
|
|
40
|
-
console.error("Failed to create account for user:", error);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (operation === "update") {
|
|
44
|
-
try {
|
|
45
|
-
const accounts = await req.payload.find({
|
|
46
|
-
collection: accountCollection.slug,
|
|
47
|
-
where: {
|
|
48
|
-
and: [
|
|
49
|
-
{
|
|
50
|
-
[userIdFieldName]: {
|
|
51
|
-
equals: doc.id
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
[providerIdFieldName]: {
|
|
56
|
-
equals: "credential"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
},
|
|
61
|
-
req,
|
|
62
|
-
depth: 0,
|
|
63
|
-
context: {
|
|
64
|
-
syncAccountHook: true
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
const account = accounts.docs.at(0);
|
|
68
|
-
if (account) {
|
|
69
|
-
await req.payload.update({
|
|
70
|
-
collection: accountCollection.slug,
|
|
71
|
-
id: account.id,
|
|
72
|
-
data: {
|
|
73
|
-
[passwordFieldName]: passwordValue
|
|
74
|
-
},
|
|
75
|
-
req,
|
|
76
|
-
context: {
|
|
77
|
-
syncAccountHook: true
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
} catch (error) {
|
|
82
|
-
console.error("Failed to sync hash/salt to account:", error);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return doc;
|
|
86
|
-
};
|
|
87
|
-
return hook;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2hvb2tzL3N5bmMtYWNjb3VudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25BZnRlckNoYW5nZUhvb2sgfSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHsgQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9hZGFwdGVyXCI7XG5pbXBvcnQgeyBiYU1vZGVsS2V5IH0gZnJvbSBcIkAvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXksXG4gIGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5XG59IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL2dldC1jb2xsZWN0aW9uXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTeW5jQWNjb3VudEhvb2soKTogQ29sbGVjdGlvbkFmdGVyQ2hhbmdlSG9vayB7XG4gIGNvbnN0IGhvb2s6IENvbGxlY3Rpb25BZnRlckNoYW5nZUhvb2sgPSBhc3luYyAoe1xuICAgIGRvYyxcbiAgICByZXEsXG4gICAgb3BlcmF0aW9uLFxuICAgIGNvbnRleHRcbiAgfSkgPT4ge1xuICAgIGlmIChjb250ZXh0Py5zeW5jUGFzc3dvcmRUb1VzZXIpIHJldHVybiBkb2M7XG5cbiAgICBpZiAob3BlcmF0aW9uICE9PSBcImNyZWF0ZVwiICYmIG9wZXJhdGlvbiAhPT0gXCJ1cGRhdGVcIikgcmV0dXJuIGRvYztcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gcmVxLnBheWxvYWQuY29sbGVjdGlvbnM7XG4gICAgY29uc3QgdXNlckNvbGxlY3Rpb24gPSBnZXRDb2xsZWN0aW9uQnlNb2RlbEtleShcbiAgICAgIGNvbGxlY3Rpb25zLFxuICAgICAgYmFNb2RlbEtleS51c2VyXG4gICAgKTtcbiAgICBjb25zdCBhY2NvdW50Q29sbGVjdGlvbiA9IGdldENvbGxlY3Rpb25CeU1vZGVsS2V5KFxuICAgICAgY29sbGVjdGlvbnMsXG4gICAgICBiYU1vZGVsS2V5LmFjY291bnRcbiAgICApO1xuXG4gICAgY29uc3QgdXNlcklkRmllbGROYW1lID0gZ2V0Q29sbGVjdGlvbkZpZWxkTmFtZUJ5RmllbGRLZXkoXG4gICAgICBhY2NvdW50Q29sbGVjdGlvbixcbiAgICAgIGJhTW9kZWxLZXkuYWNjb3VudCxcbiAgICAgIFwidXNlcklkXCJcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnRJZEZpZWxkTmFtZSA9IGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5KFxuICAgICAgYWNjb3VudENvbGxlY3Rpb24sXG4gICAgICBiYU1vZGVsS2V5LmFjY291bnQsXG4gICAgICBcImFjY291bnRJZFwiXG4gICAgKTtcbiAgICBjb25zdCBwcm92aWRlcklkRmllbGROYW1lID0gZ2V0Q29sbGVjdGlvbkZpZWxkTmFtZUJ5RmllbGRLZXkoXG4gICAgICBhY2NvdW50Q29sbGVjdGlvbixcbiAgICAgIGJhTW9kZWxLZXkuYWNjb3VudCxcbiAgICAgIFwicHJvdmlkZXJJZFwiXG4gICAgKTtcbiAgICBjb25zdCBwYXNzd29yZEZpZWxkTmFtZSA9IGdldENvbGxlY3Rpb25GaWVsZE5hbWVCeUZpZWxkS2V5KFxuICAgICAgYWNjb3VudENvbGxlY3Rpb24sXG4gICAgICBiYU1vZGVsS2V5LmFjY291bnQsXG4gICAgICBcInBhc3N3b3JkXCJcbiAgICApO1xuXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmRCeUlEKHtcbiAgICAgIGNvbGxlY3Rpb246IHVzZXJDb2xsZWN0aW9uLnNsdWcsXG4gICAgICBpZDogZG9jLmlkLFxuICAgICAgZGVwdGg6IDAsXG4gICAgICByZXEsXG4gICAgICBzaG93SGlkZGVuRmllbGRzOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAoIXVzZXIgfHwgIXVzZXIuaGFzaCB8fCAhdXNlci5zYWx0KSByZXR1cm4gZG9jO1xuXG4gICAgY29uc3QgcGFzc3dvcmRWYWx1ZSA9IGAke3VzZXIuc2FsdH06JHt1c2VyLmhhc2h9YDtcblxuICAgIGlmIChvcGVyYXRpb24gPT09IFwiY3JlYXRlXCIgJiYgIShCRVRURVJfQVVUSF9DT05URVhUX0tFWSBpbiBjb250ZXh0KSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVxLnBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBhY2NvdW50Q29sbGVjdGlvbi5zbHVnLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIFt1c2VySWRGaWVsZE5hbWVdOiBkb2MuaWQsXG4gICAgICAgICAgICBbYWNjb3VudElkRmllbGROYW1lXTogZG9jLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBbcHJvdmlkZXJJZEZpZWxkTmFtZV06IFwiY3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgW3Bhc3N3b3JkRmllbGROYW1lXTogcGFzc3dvcmRWYWx1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29udGV4dDogeyBzeW5jQWNjb3VudEhvb2s6IHRydWUgfSxcbiAgICAgICAgICByZXFcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBhY2NvdW50IGZvciB1c2VyOlwiLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gXCJ1cGRhdGVcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCByZXEucGF5bG9hZC5maW5kKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBhY2NvdW50Q29sbGVjdGlvbi5zbHVnLFxuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBhbmQ6IFtcbiAgICAgICAgICAgICAgeyBbdXNlcklkRmllbGROYW1lXTogeyBlcXVhbHM6IGRvYy5pZCB9IH0sXG4gICAgICAgICAgICAgIHsgW3Byb3ZpZGVySWRGaWVsZE5hbWVdOiB7IGVxdWFsczogXCJjcmVkZW50aWFsXCIgfSB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgY29udGV4dDogeyBzeW5jQWNjb3VudEhvb2s6IHRydWUgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBhY2NvdW50ID0gYWNjb3VudHMuZG9jcy5hdCgwKTtcbiAgICAgICAgaWYgKGFjY291bnQpIHtcbiAgICAgICAgICBhd2FpdCByZXEucGF5bG9hZC51cGRhdGUoe1xuICAgICAgICAgICAgY29sbGVjdGlvbjogYWNjb3VudENvbGxlY3Rpb24uc2x1ZyxcbiAgICAgICAgICAgIGlkOiBhY2NvdW50LmlkLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBbcGFzc3dvcmRGaWVsZE5hbWVdOiBwYXNzd29yZFZhbHVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgY29udGV4dDogeyBzeW5jQWNjb3VudEhvb2s6IHRydWUgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHN5bmMgaGFzaC9zYWx0IHRvIGFjY291bnQ6XCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZG9jO1xuICB9O1xuXG4gIHJldHVybiBob29rIGFzIENvbGxlY3Rpb25BZnRlckNoYW5nZUhvb2s7XG59XG4iXSwibmFtZXMiOlsiQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkiLCJiYU1vZGVsS2V5IiwiZ2V0Q29sbGVjdGlvbkJ5TW9kZWxLZXkiLCJnZXRDb2xsZWN0aW9uRmllbGROYW1lQnlGaWVsZEtleSIsImdldFN5bmNBY2NvdW50SG9vayIsImhvb2siLCJkb2MiLCJyZXEiLCJvcGVyYXRpb24iLCJjb250ZXh0Iiwic3luY1Bhc3N3b3JkVG9Vc2VyIiwiY29sbGVjdGlvbnMiLCJwYXlsb2FkIiwidXNlckNvbGxlY3Rpb24iLCJ1c2VyIiwiYWNjb3VudENvbGxlY3Rpb24iLCJhY2NvdW50IiwidXNlcklkRmllbGROYW1lIiwiYWNjb3VudElkRmllbGROYW1lIiwicHJvdmlkZXJJZEZpZWxkTmFtZSIsInBhc3N3b3JkRmllbGROYW1lIiwiZmluZEJ5SUQiLCJjb2xsZWN0aW9uIiwic2x1ZyIsImlkIiwiZGVwdGgiLCJzaG93SGlkZGVuRmllbGRzIiwiaGFzaCIsInNhbHQiLCJwYXNzd29yZFZhbHVlIiwiY3JlYXRlIiwiZGF0YSIsInRvU3RyaW5nIiwic3luY0FjY291bnRIb29rIiwiZXJyb3IiLCJjb25zb2xlIiwiYWNjb3VudHMiLCJmaW5kIiwid2hlcmUiLCJhbmQiLCJlcXVhbHMiLCJkb2NzIiwiYXQiLCJ1cGRhdGUiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLHVCQUF1QixRQUFRLHlCQUF3QjtBQUNoRSxTQUFTQyxVQUFVLFFBQVEsd0JBQWlDO0FBQzVELFNBQ0VDLHVCQUF1QixFQUN2QkMsZ0NBQWdDLFFBQzNCLHFDQUE4QztBQUVyRCxPQUFPLFNBQVNDO0lBQ2QsTUFBTUMsT0FBa0MsT0FBTyxFQUM3Q0MsR0FBRyxFQUNIQyxHQUFHLEVBQ0hDLFNBQVMsRUFDVEMsT0FBTyxFQUNSO1FBQ0MsSUFBSUEsU0FBU0Msb0JBQW9CLE9BQU9KO1FBRXhDLElBQUlFLGNBQWMsWUFBWUEsY0FBYyxVQUFVLE9BQU9GO1FBRTdELE1BQU1LLGNBQWNKLElBQUlLLE9BQU8sQ0FBQ0QsV0FBVztRQUMzQyxNQUFNRSxpQkFBaUJYLHdCQUNyQlMsYUFDQVYsV0FBV2EsSUFBSTtRQUVqQixNQUFNQyxvQkFBb0JiLHdCQUN4QlMsYUFDQVYsV0FBV2UsT0FBTztRQUdwQixNQUFNQyxrQkFB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
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SanitizedBetterAuthOptions } from "@/better-auth/plugin/types";
|
|
2
|
-
/**
|
|
3
|
-
* Adds a before hook to the user create operation to ensure the password is set.
|
|
4
|
-
* This is necessary because the password is not set in the user create operation
|
|
5
|
-
* and is instead set in the sync password accounts hook.
|
|
6
|
-
*/
|
|
7
|
-
export declare function ensurePasswordSetBeforeUserCreate(options: SanitizedBetterAuthOptions): void;
|
|
8
|
-
//# sourceMappingURL=ensure-password-set-before-create.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-password-set-before-create.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,0BAA0B,QAwBpC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adds a before hook to the user create operation to ensure the password is set.
|
|
3
|
-
* This is necessary because the password is not set in the user create operation
|
|
4
|
-
* and is instead set in the sync password accounts hook.
|
|
5
|
-
*/ export function ensurePasswordSetBeforeUserCreate(options) {
|
|
6
|
-
if (typeof options.databaseHooks !== "object") options.databaseHooks = {};
|
|
7
|
-
if (typeof options.databaseHooks.user !== "object") options.databaseHooks.user = {};
|
|
8
|
-
if (typeof options.databaseHooks.user.create !== "object") options.databaseHooks.user.create = {};
|
|
9
|
-
const initialBeforeUserCreateHook = options.databaseHooks.user.create.before ?? null;
|
|
10
|
-
options.databaseHooks.user.create.before = async (user, ctx)=>{
|
|
11
|
-
if (!user.password) {
|
|
12
|
-
user.password = ctx?.body?.password ?? Array(3).fill(0).map(()=>Math.random().toString(36).slice(2)).join("");
|
|
13
|
-
}
|
|
14
|
-
if (typeof initialBeforeUserCreateHook === "function") {
|
|
15
|
-
return initialBeforeUserCreateHook(user, ctx);
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
data: user
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvZW5zdXJlLXBhc3N3b3JkLXNldC1iZWZvcmUtY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXNcIjtcblxuLyoqXG4gKiBBZGRzIGEgYmVmb3JlIGhvb2sgdG8gdGhlIHVzZXIgY3JlYXRlIG9wZXJhdGlvbiB0byBlbnN1cmUgdGhlIHBhc3N3b3JkIGlzIHNldC5cbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHBhc3N3b3JkIGlzIG5vdCBzZXQgaW4gdGhlIHVzZXIgY3JlYXRlIG9wZXJhdGlvblxuICogYW5kIGlzIGluc3RlYWQgc2V0IGluIHRoZSBzeW5jIHBhc3N3b3JkIGFjY291bnRzIGhvb2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVQYXNzd29yZFNldEJlZm9yZVVzZXJDcmVhdGUoXG4gIG9wdGlvbnM6IFNhbml0aXplZEJldHRlckF1dGhPcHRpb25zXG4pIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGFiYXNlSG9va3MgIT09IFwib2JqZWN0XCIpIG9wdGlvbnMuZGF0YWJhc2VIb29rcyA9IHt9O1xuICBpZiAodHlwZW9mIG9wdGlvbnMuZGF0YWJhc2VIb29rcy51c2VyICE9PSBcIm9iamVjdFwiKVxuICAgIG9wdGlvbnMuZGF0YWJhc2VIb29rcy51c2VyID0ge307XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5kYXRhYmFzZUhvb2tzLnVzZXIuY3JlYXRlICE9PSBcIm9iamVjdFwiKVxuICAgIG9wdGlvbnMuZGF0YWJhc2VIb29rcy51c2VyLmNyZWF0ZSA9IHt9O1xuICBjb25zdCBpbml0aWFsQmVmb3JlVXNlckNyZWF0ZUhvb2sgPVxuICAgIG9wdGlvbnMuZGF0YWJhc2VIb29rcy51c2VyLmNyZWF0ZS5iZWZvcmUgPz8gbnVsbDtcblxuICBvcHRpb25zLmRhdGFiYXNlSG9va3MudXNlci5jcmVhdGUuYmVmb3JlID0gYXN5bmMgKHVzZXIsIGN0eCkgPT4ge1xuICAgIGlmICghKHVzZXIgYXMgYW55KS5wYXNzd29yZCkge1xuICAgICAgKHVzZXIgYXMgYW55KS5wYXNzd29yZCA9XG4gICAgICAgIGN0eD8uYm9keT8ucGFzc3dvcmQgPz9cbiAgICAgICAgQXJyYXkoMylcbiAgICAgICAgICAuZmlsbCgwKVxuICAgICAgICAgIC5tYXAoKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMikpXG4gICAgICAgICAgLmpvaW4oXCJcIik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaW5pdGlhbEJlZm9yZVVzZXJDcmVhdGVIb29rID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBpbml0aWFsQmVmb3JlVXNlckNyZWF0ZUhvb2sodXNlciwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0YTogdXNlciB9O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbImVuc3VyZVBhc3N3b3JkU2V0QmVmb3JlVXNlckNyZWF0ZSIsIm9wdGlvbnMiLCJkYXRhYmFzZUhvb2tzIiwidXNlciIsImNyZWF0ZSIsImluaXRpYWxCZWZvcmVVc2VyQ3JlYXRlSG9vayIsImJlZm9yZSIsImN0eCIsInBhc3N3b3JkIiwiYm9keSIsIkFycmF5IiwiZmlsbCIsIm1hcCIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsInNsaWNlIiwiam9pbiIsImRhdGEiXSwibWFwcGluZ3MiOiJBQUVBOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVNBLGtDQUNkQyxPQUFtQztJQUVuQyxJQUFJLE9BQU9BLFFBQVFDLGFBQWEsS0FBSyxVQUFVRCxRQUFRQyxhQUFhLEdBQUcsQ0FBQztJQUN4RSxJQUFJLE9BQU9ELFFBQVFDLGFBQWEsQ0FBQ0MsSUFBSSxLQUFLLFVBQ3hDRixRQUFRQyxhQUFhLENBQUNDLElBQUksR0FBRyxDQUFDO0lBQ2hDLElBQUksT0FBT0YsUUFBUUMsYUFBYSxDQUFDQyxJQUFJLENBQUNDLE1BQU0sS0FBSyxVQUMvQ0gsUUFBUUMsYUFBYSxDQUFDQyxJQUFJLENBQUNDLE1BQU0sR0FBRyxDQUFDO0lBQ3ZDLE1BQU1DLDhCQUNKSixRQUFRQyxhQUFhLENBQUNDLElBQUksQ0FBQ0MsTUFBTSxDQUFDRSxNQUFNLElBQUk7SUFFOUNMLFFBQVFDLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDQyxNQUFNLENBQUNFLE1BQU0sR0FBRyxPQUFPSCxNQUFNSTtRQUN0RCxJQUFJLENBQUMsQUFBQ0osS0FBYUssUUFBUSxFQUFFO1lBQzFCTCxLQUFhSyxRQUFRLEdBQ3BCRCxLQUFLRSxNQUFNRCxZQUNYRSxNQUFNLEdBQ0hDLElBQUksQ0FBQyxHQUNMQyxHQUFHLENBQUMsSUFBTUMsS0FBS0MsTUFBTSxHQUFHQyxRQUFRLENBQUMsSUFBSUMsS0FBSyxDQUFDLElBQzNDQyxJQUFJLENBQUM7UUFDWjtRQUNBLElBQUksT0FBT1osZ0NBQWdDLFlBQVk7WUFDckQsT0FBT0EsNEJBQTRCRixNQUFNSTtRQUMzQztRQUNBLE9BQU87WUFBRVcsTUFBTWY7UUFBSztJQUN0QjtBQUNGIn0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom implementation of password hashing that matches Payload's format
|
|
3
|
-
*
|
|
4
|
-
* Instead of using better-auth's scrypt, this uses pbkdf2 with the same
|
|
5
|
-
* parameters as Payload CMS
|
|
6
|
-
*
|
|
7
|
-
* @param password The password to hash
|
|
8
|
-
* @returns A string in the format {salt}:{hash}
|
|
9
|
-
*/
|
|
10
|
-
export declare const hashPassword: (password: string) => Promise<string>;
|
|
11
|
-
/**
|
|
12
|
-
* Verifies a password against a stored hash
|
|
13
|
-
*
|
|
14
|
-
* This function is flexible and can handle:
|
|
15
|
-
* 1. A combined string in format {salt}:{hash} (for account passwords)
|
|
16
|
-
* 2. When salt and hash need to be combined from user records
|
|
17
|
-
*
|
|
18
|
-
* @param params Object containing the hash and password
|
|
19
|
-
* @returns Boolean indicating if the password matches
|
|
20
|
-
*/
|
|
21
|
-
export declare const verifyPassword: ({ hash, password, salt }: {
|
|
22
|
-
hash: string;
|
|
23
|
-
password: string;
|
|
24
|
-
salt?: string;
|
|
25
|
-
}) => Promise<boolean>;
|
|
26
|
-
//# sourceMappingURL=password.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.ts"],"names":[],"mappings":"AA2BA;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAQnE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAU,0BAIlC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,KAAG,OAAO,CAAC,OAAO,CAyBlB,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import crypto from "crypto";
|
|
2
|
-
/**
|
|
3
|
-
* Mimics Payload's internal password hashing using pbkdf2
|
|
4
|
-
*
|
|
5
|
-
* This generates a hash compatible with Payload's internal auth system
|
|
6
|
-
* so that passwords set via better-auth can be used with Payload admin panel
|
|
7
|
-
*/ function pbkdf2Promisified(password, salt) {
|
|
8
|
-
return new Promise((resolve, reject)=>crypto.pbkdf2(password, salt, 25000, 512, "sha256", (err, hashRaw)=>err ? reject(err) : resolve(hashRaw)));
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Generates random bytes for the salt
|
|
12
|
-
*/ function randomBytes() {
|
|
13
|
-
return new Promise((resolve, reject)=>crypto.randomBytes(32, (err, saltBuffer)=>err ? reject(err) : resolve(saltBuffer)));
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Custom implementation of password hashing that matches Payload's format
|
|
17
|
-
*
|
|
18
|
-
* Instead of using better-auth's scrypt, this uses pbkdf2 with the same
|
|
19
|
-
* parameters as Payload CMS
|
|
20
|
-
*
|
|
21
|
-
* @param password The password to hash
|
|
22
|
-
* @returns A string in the format {salt}:{hash}
|
|
23
|
-
*/ export const hashPassword = async (password)=>{
|
|
24
|
-
const saltBuffer = await randomBytes();
|
|
25
|
-
const salt = saltBuffer.toString("hex");
|
|
26
|
-
const hashRaw = await pbkdf2Promisified(password, salt);
|
|
27
|
-
const hash = hashRaw.toString("hex");
|
|
28
|
-
return `${salt}:${hash}`;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Verifies a password against a stored hash
|
|
32
|
-
*
|
|
33
|
-
* This function is flexible and can handle:
|
|
34
|
-
* 1. A combined string in format {salt}:{hash} (for account passwords)
|
|
35
|
-
* 2. When salt and hash need to be combined from user records
|
|
36
|
-
*
|
|
37
|
-
* @param params Object containing the hash and password
|
|
38
|
-
* @returns Boolean indicating if the password matches
|
|
39
|
-
*/ export const verifyPassword = async ({ hash, password, salt })=>{
|
|
40
|
-
let saltValue;
|
|
41
|
-
let storedHash;
|
|
42
|
-
// If salt is provided separately (from user record), use it with the hash
|
|
43
|
-
if (salt) {
|
|
44
|
-
saltValue = salt;
|
|
45
|
-
storedHash = hash;
|
|
46
|
-
} else {
|
|
47
|
-
// Otherwise, split the combined format (from account.password)
|
|
48
|
-
const parts = hash.split(":");
|
|
49
|
-
if (parts.length !== 2) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
[saltValue, storedHash] = parts;
|
|
53
|
-
}
|
|
54
|
-
if (!saltValue || !storedHash) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
const hashRaw = await pbkdf2Promisified(password, saltValue);
|
|
58
|
-
const computedHash = hashRaw.toString("hex");
|
|
59
|
-
return storedHash === computedHash;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvcGFzc3dvcmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5cbi8qKlxuICogTWltaWNzIFBheWxvYWQncyBpbnRlcm5hbCBwYXNzd29yZCBoYXNoaW5nIHVzaW5nIHBia2RmMlxuICpcbiAqIFRoaXMgZ2VuZXJhdGVzIGEgaGFzaCBjb21wYXRpYmxlIHdpdGggUGF5bG9hZCdzIGludGVybmFsIGF1dGggc3lzdGVtXG4gKiBzbyB0aGF0IHBhc3N3b3JkcyBzZXQgdmlhIGJldHRlci1hdXRoIGNhbiBiZSB1c2VkIHdpdGggUGF5bG9hZCBhZG1pbiBwYW5lbFxuICovXG5mdW5jdGlvbiBwYmtkZjJQcm9taXNpZmllZChwYXNzd29yZDogc3RyaW5nLCBzYWx0OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICBjcnlwdG8ucGJrZGYyKHBhc3N3b3JkLCBzYWx0LCAyNTAwMCwgNTEyLCBcInNoYTI1NlwiLCAoZXJyLCBoYXNoUmF3KSA9PlxuICAgICAgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGhhc2hSYXcpXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyByYW5kb20gYnl0ZXMgZm9yIHRoZSBzYWx0XG4gKi9cbmZ1bmN0aW9uIHJhbmRvbUJ5dGVzKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIGNyeXB0by5yYW5kb21CeXRlcygzMiwgKGVyciwgc2FsdEJ1ZmZlcikgPT5cbiAgICAgIGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShzYWx0QnVmZmVyKVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBDdXN0b20gaW1wbGVtZW50YXRpb24gb2YgcGFzc3dvcmQgaGFzaGluZyB0aGF0IG1hdGNoZXMgUGF5bG9hZCdzIGZvcm1hdFxuICpcbiAqIEluc3RlYWQgb2YgdXNpbmcgYmV0dGVyLWF1dGgncyBzY3J5cHQsIHRoaXMgdXNlcyBwYmtkZjIgd2l0aCB0aGUgc2FtZVxuICogcGFyYW1ldGVycyBhcyBQYXlsb2FkIENNU1xuICpcbiAqIEBwYXJhbSBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdG8gaGFzaFxuICogQHJldHVybnMgQSBzdHJpbmcgaW4gdGhlIGZvcm1hdCB7c2FsdH06e2hhc2h9XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNoUGFzc3dvcmQgPSBhc3luYyAocGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHNhbHRCdWZmZXIgPSBhd2FpdCByYW5kb21CeXRlcygpO1xuICBjb25zdCBzYWx0ID0gc2FsdEJ1ZmZlci50b1N0cmluZyhcImhleFwiKTtcblxuICBjb25zdCBoYXNoUmF3ID0gYXdhaXQgcGJrZGYyUHJvbWlzaWZpZWQocGFzc3dvcmQsIHNhbHQpO1xuICBjb25zdCBoYXNoID0gaGFzaFJhdy50b1N0cmluZyhcImhleFwiKTtcblxuICByZXR1cm4gYCR7c2FsdH06JHtoYXNofWA7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIGEgcGFzc3dvcmQgYWdhaW5zdCBhIHN0b3JlZCBoYXNoXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBmbGV4aWJsZSBhbmQgY2FuIGhhbmRsZTpcbiAqIDEuIEEgY29tYmluZWQgc3RyaW5nIGluIGZvcm1hdCB7c2FsdH06e2hhc2h9IChmb3IgYWNjb3VudCBwYXNzd29yZHMpXG4gKiAyLiBXaGVuIHNhbHQgYW5kIGhhc2ggbmVlZCB0byBiZSBjb21iaW5lZCBmcm9tIHVzZXIgcmVjb3Jkc1xuICpcbiAqIEBwYXJhbSBwYXJhbXMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGhhc2ggYW5kIHBhc3N3b3JkXG4gKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHBhc3N3b3JkIG1hdGNoZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHZlcmlmeVBhc3N3b3JkID0gYXN5bmMgKHtcbiAgaGFzaCxcbiAgcGFzc3dvcmQsXG4gIHNhbHRcbn06IHtcbiAgaGFzaDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBzYWx0Pzogc3RyaW5nO1xufSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBsZXQgc2FsdFZhbHVlOiBzdHJpbmc7XG4gIGxldCBzdG9yZWRIYXNoOiBzdHJpbmc7XG5cbiAgLy8gSWYgc2FsdCBpcyBwcm92aWRlZCBzZXBhcmF0ZWx5IChmcm9tIHVzZXIgcmVjb3JkKSwgdXNlIGl0IHdpdGggdGhlIGhhc2hcbiAgaWYgKHNhbHQpIHtcbiAgICBzYWx0VmFsdWUgPSBzYWx0O1xuICAgIHN0b3JlZEhhc2ggPSBoYXNoO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwgc3BsaXQgdGhlIGNvbWJpbmVkIGZvcm1hdCAoZnJvbSBhY2NvdW50LnBhc3N3b3JkKVxuICAgIGNvbnN0IHBhcnRzID0gaGFzaC5zcGxpdChcIjpcIik7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBbc2FsdFZhbHVlLCBzdG9yZWRIYXNoXSA9IHBhcnRzIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gIH1cblxuICBpZiAoIXNhbHRWYWx1ZSB8fCAhc3RvcmVkSGFzaCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhhc2hSYXcgPSBhd2FpdCBwYmtkZjJQcm9taXNpZmllZChwYXNzd29yZCwgc2FsdFZhbHVlKTtcbiAgY29uc3QgY29tcHV0ZWRIYXNoID0gaGFzaFJhdy50b1N0cmluZyhcImhleFwiKTtcblxuICByZXR1cm4gc3RvcmVkSGFzaCA9PT0gY29tcHV0ZWRIYXNoO1xufTtcbiJdLCJuYW1lcyI6WyJjcnlwdG8iLCJwYmtkZjJQcm9taXNpZmllZCIsInBhc3N3b3JkIiwic2FsdCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicGJrZGYyIiwiZXJyIiwiaGFzaFJhdyIsInJhbmRvbUJ5dGVzIiwic2FsdEJ1ZmZlciIsImhhc2hQYXNzd29yZCIsInRvU3RyaW5nIiwiaGFzaCIsInZlcmlmeVBhc3N3b3JkIiwic2FsdFZhbHVlIiwic3RvcmVkSGFzaCIsInBhcnRzIiwic3BsaXQiLCJsZW5ndGgiLCJjb21wdXRlZEhhc2giXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUU1Qjs7Ozs7Q0FLQyxHQUNELFNBQVNDLGtCQUFrQkMsUUFBZ0IsRUFBRUMsSUFBWTtJQUN2RCxPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0MsU0FDM0JOLE9BQU9PLE1BQU0sQ0FBQ0wsVUFBVUMsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDSyxLQUFLQyxVQUN4REQsTUFBTUYsT0FBT0UsT0FBT0gsUUFBUUk7QUFHbEM7QUFFQTs7Q0FFQyxHQUNELFNBQVNDO0lBQ1AsT0FBTyxJQUFJTixRQUFRLENBQUNDLFNBQVNDLFNBQzNCTixPQUFPVSxXQUFXLENBQUMsSUFBSSxDQUFDRixLQUFLRyxhQUMzQkgsTUFBTUYsT0FBT0UsT0FBT0gsUUFBUU07QUFHbEM7QUFFQTs7Ozs7Ozs7Q0FRQyxHQUNELE9BQU8sTUFBTUMsZUFBZSxPQUFPVjtJQUNqQyxNQUFNUyxhQUFhLE1BQU1EO0lBQ3pCLE1BQU1QLE9BQU9RLFdBQVdFLFFBQVEsQ0FBQztJQUVqQyxNQUFNSixVQUFVLE1BQU1SLGtCQUFrQkMsVUFBVUM7SUFDbEQsTUFBTVcsT0FBT0wsUUFBUUksUUFBUSxDQUFDO0lBRTlCLE9BQU8sR0FBR1YsS0FBSyxDQUFDLEVBQUVXLE1BQU07QUFDMUIsRUFBRTtBQUVGOzs7Ozs7Ozs7Q0FTQyxHQUNELE9BQU8sTUFBTUMsaUJBQWlCLE9BQU8sRUFDbkNELElBQUksRUFDSlosUUFBUSxFQUNSQyxJQUFJLEVBS0w7SUFDQyxJQUFJYTtJQUNKLElBQUlDO0lBRUosMEVBQTBFO0lBQzFFLElBQUlkLE1BQU07UUFDUmEsWUFBWWI7UUFDWmMsYUFBYUg7SUFDZixPQUFPO1FBQ0wsK0RBQStEO1FBQy9ELE1BQU1JLFFBQVFKLEtBQUtLLEtBQUssQ0FBQztRQUN6QixJQUFJRCxNQUFNRSxNQUFNLEtBQUssR0FBRztZQUN0QixPQUFPO1FBQ1Q7UUFDQSxDQUFDSixXQUFXQyxXQUFXLEdBQUdDO0lBQzVCO0lBRUEsSUFBSSxDQUFDRixhQUFhLENBQUNDLFlBQVk7UUFDN0IsT0FBTztJQUNUO0lBRUEsTUFBTVIsVUFBVSxNQUFNUixrQkFBa0JDLFVBQVVjO0lBQ2xELE1BQU1LLGVBQWVaLFFBQVFJLFFBQVEsQ0FBQztJQUV0QyxPQUFPSSxlQUFlSTtBQUN4QixFQUFFIn0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { SanitizedBetterAuthOptions } from "@/better-auth/plugin/types";
|
|
2
|
-
/**
|
|
3
|
-
* Modifies options object and adds a middleware to check for admin invite for sign up
|
|
4
|
-
*/
|
|
5
|
-
export declare const useAdminInviteAfterEmailSignUpMiddleware: ({ options, adminInvitationCollectionSlug, userCollectionSlug }: {
|
|
6
|
-
options: SanitizedBetterAuthOptions;
|
|
7
|
-
adminInvitationCollectionSlug: string;
|
|
8
|
-
userCollectionSlug: string;
|
|
9
|
-
}) => Promise<void>;
|
|
10
|
-
//# sourceMappingURL=use-admin-invite-after-email-sign-up-middleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-admin-invite-after-email-sign-up-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,wCAAwC,GAAU,gEAI5D;IACD,OAAO,EAAE,0BAA0B,CAAC;IACpC,6BAA6B,EAAE,MAAM,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;CAC5B,kBA8DA,CAAC"}
|