@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.
Files changed (413) hide show
  1. package/LICENSE +202 -0
  2. package/dist/better-auth/adapter/__tests__/transform.test.js +213 -0
  3. package/dist/better-auth/adapter/__tests__/transform.test.js.map +1 -0
  4. package/dist/better-auth/adapter/generate-schema/biome.d.js +2 -0
  5. package/dist/better-auth/adapter/generate-schema/biome.d.js.map +1 -0
  6. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +5 -0
  7. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +482 -0
  8. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js.map +1 -0
  9. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +1 -0
  10. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +42 -0
  11. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js.map +1 -0
  12. package/dist/better-auth/adapter/generate-schema/index.d.ts +4 -0
  13. package/dist/better-auth/adapter/generate-schema/index.js +19 -0
  14. package/dist/better-auth/adapter/generate-schema/index.js.map +1 -0
  15. package/dist/better-auth/adapter/generate-schema/utils.d.ts +2 -0
  16. package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
  17. package/dist/better-auth/adapter/generate-schema/utils.js.map +1 -0
  18. package/dist/better-auth/adapter/index.d.ts +15 -0
  19. package/dist/better-auth/adapter/index.js +731 -0
  20. package/dist/better-auth/adapter/index.js.map +1 -0
  21. package/dist/better-auth/adapter/tests/adapter.test.js +174 -0
  22. package/dist/better-auth/adapter/tests/adapter.test.js.map +1 -0
  23. package/dist/better-auth/adapter/tests/base-collections-tests.js +575 -0
  24. package/dist/better-auth/adapter/tests/base-collections-tests.js.map +1 -0
  25. package/dist/better-auth/adapter/tests/dev/index.js +117 -0
  26. package/dist/better-auth/adapter/tests/dev/index.js.map +1 -0
  27. package/dist/better-auth/adapter/tests/dev/migrate.js +26 -0
  28. package/dist/better-auth/adapter/tests/dev/migrate.js.map +1 -0
  29. package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js +218 -0
  30. package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js.map +1 -0
  31. package/dist/better-auth/adapter/tests/dev/schema.js +160 -0
  32. package/dist/better-auth/adapter/tests/dev/schema.js.map +1 -0
  33. package/dist/better-auth/adapter/tests/plugins-tests.js +2 -0
  34. package/dist/better-auth/adapter/tests/plugins-tests.js.map +1 -0
  35. package/dist/better-auth/adapter/transform/index.d.ts +27 -0
  36. package/dist/better-auth/adapter/transform/index.js +664 -0
  37. package/dist/better-auth/adapter/transform/index.js.map +1 -0
  38. package/dist/better-auth/adapter/types.d.ts +10 -0
  39. package/dist/better-auth/adapter/types.js +3 -0
  40. package/dist/better-auth/adapter/types.js.map +1 -0
  41. package/dist/better-auth/generated-types.d.ts +285 -0
  42. package/dist/better-auth/index.d.ts +3 -0
  43. package/dist/better-auth/index.js +5 -0
  44. package/dist/better-auth/index.js.map +1 -0
  45. package/dist/better-auth/plugin/__tests__/plugin.test.js +162 -0
  46. package/dist/better-auth/plugin/__tests__/plugin.test.js.map +1 -0
  47. package/dist/better-auth/plugin/constants.d.ts +220 -0
  48. package/dist/better-auth/plugin/constants.js +249 -0
  49. package/dist/better-auth/plugin/constants.js.map +1 -0
  50. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +12 -0
  51. package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
  52. package/dist/better-auth/plugin/helpers/check-plugin-exists.js.map +1 -0
  53. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +29 -0
  54. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
  55. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js.map +1 -0
  56. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +7 -0
  57. package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
  58. package/dist/better-auth/plugin/helpers/get-admin-access.js.map +1 -0
  59. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +5 -0
  60. package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
  61. package/dist/better-auth/plugin/helpers/get-all-roles.js.map +1 -0
  62. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +18 -0
  63. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +70 -0
  64. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js.map +1 -0
  65. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +5 -0
  66. package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
  67. package/dist/better-auth/plugin/helpers/get-collection-slug.js.map +1 -0
  68. package/dist/better-auth/plugin/helpers/get-collection.d.ts +15 -0
  69. package/dist/better-auth/plugin/helpers/get-collection.js +29 -0
  70. package/dist/better-auth/plugin/helpers/get-collection.js.map +1 -0
  71. package/dist/better-auth/plugin/helpers/get-ip.d.ts +2 -0
  72. package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
  73. package/dist/better-auth/plugin/helpers/get-ip.js.map +1 -0
  74. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +2 -0
  75. package/dist/better-auth/plugin/helpers/get-signed-cookie.js +65 -0
  76. package/dist/better-auth/plugin/helpers/get-signed-cookie.js.map +1 -0
  77. package/dist/better-auth/plugin/helpers/index.d.ts +1 -0
  78. package/dist/better-auth/plugin/helpers/index.js +3 -0
  79. package/dist/better-auth/plugin/helpers/index.js.map +1 -0
  80. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +59 -0
  81. package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
  82. package/dist/better-auth/plugin/helpers/prepare-session-data.js.map +1 -0
  83. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +20 -0
  84. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +67 -0
  85. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js.map +1 -0
  86. package/dist/better-auth/plugin/index.d.ts +11 -0
  87. package/dist/better-auth/plugin/index.js +125 -0
  88. package/dist/better-auth/plugin/index.js.map +1 -0
  89. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +12 -0
  90. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
  91. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js.map +1 -0
  92. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +3 -0
  93. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +60 -0
  94. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js.map +1 -0
  95. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -0
  96. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +154 -0
  97. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js.map +1 -0
  98. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +5 -0
  99. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
  100. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js.map +1 -0
  101. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +2 -0
  102. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
  103. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js.map +1 -0
  104. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +6 -0
  105. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +119 -0
  106. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js.map +1 -0
  107. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -0
  108. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +177 -0
  109. package/dist/better-auth/plugin/lib/build-collections/api-keys.js.map +1 -0
  110. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +3 -0
  111. package/dist/better-auth/plugin/lib/build-collections/device-code.js +50 -0
  112. package/dist/better-auth/plugin/lib/build-collections/device-code.js.map +1 -0
  113. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +10 -0
  114. package/dist/better-auth/plugin/lib/build-collections/index.js +73 -0
  115. package/dist/better-auth/plugin/lib/build-collections/index.js.map +1 -0
  116. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -0
  117. package/dist/better-auth/plugin/lib/build-collections/invitations.js +94 -0
  118. package/dist/better-auth/plugin/lib/build-collections/invitations.js.map +1 -0
  119. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -0
  120. package/dist/better-auth/plugin/lib/build-collections/jwks.js +59 -0
  121. package/dist/better-auth/plugin/lib/build-collections/jwks.js.map +1 -0
  122. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -0
  123. package/dist/better-auth/plugin/lib/build-collections/members.js +73 -0
  124. package/dist/better-auth/plugin/lib/build-collections/members.js.map +1 -0
  125. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -0
  126. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +107 -0
  127. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js.map +1 -0
  128. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -0
  129. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +118 -0
  130. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js.map +1 -0
  131. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -0
  132. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +89 -0
  133. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js.map +1 -0
  134. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -0
  135. package/dist/better-auth/plugin/lib/build-collections/organizations.js +70 -0
  136. package/dist/better-auth/plugin/lib/build-collections/organizations.js.map +1 -0
  137. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -0
  138. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
  139. package/dist/better-auth/plugin/lib/build-collections/passkeys.js.map +1 -0
  140. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -0
  141. package/dist/better-auth/plugin/lib/build-collections/sessions.js +170 -0
  142. package/dist/better-auth/plugin/lib/build-collections/sessions.js.map +1 -0
  143. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -0
  144. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +81 -0
  145. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js.map +1 -0
  146. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +3 -0
  147. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +111 -0
  148. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js.map +1 -0
  149. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +3 -0
  150. package/dist/better-auth/plugin/lib/build-collections/team-members.js +57 -0
  151. package/dist/better-auth/plugin/lib/build-collections/team-members.js.map +1 -0
  152. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -0
  153. package/dist/better-auth/plugin/lib/build-collections/teams.js +76 -0
  154. package/dist/better-auth/plugin/lib/build-collections/teams.js.map +1 -0
  155. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -0
  156. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +67 -0
  157. package/dist/better-auth/plugin/lib/build-collections/two-factors.js.map +1 -0
  158. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +7 -0
  159. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +53 -0
  160. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js.map +1 -0
  161. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +11 -0
  162. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +75 -0
  163. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js.map +1 -0
  164. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +4 -0
  165. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
  166. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js.map +1 -0
  167. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +2 -0
  168. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +115 -0
  169. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js.map +1 -0
  170. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -0
  171. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
  172. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js.map +1 -0
  173. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +3 -0
  174. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +80 -0
  175. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js.map +1 -0
  176. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +6 -0
  177. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +79 -0
  178. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js.map +1 -0
  179. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +2 -0
  180. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +82 -0
  181. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js.map +1 -0
  182. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -0
  183. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
  184. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js.map +1 -0
  185. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +6 -0
  186. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
  187. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js.map +1 -0
  188. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +6 -0
  189. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
  190. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js.map +1 -0
  191. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +2 -0
  192. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
  193. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js.map +1 -0
  194. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +2 -0
  195. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +91 -0
  196. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js.map +1 -0
  197. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -0
  198. package/dist/better-auth/plugin/lib/build-collections/users/index.js +341 -0
  199. package/dist/better-auth/plugin/lib/build-collections/users/index.js.map +1 -0
  200. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +15 -0
  201. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
  202. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js.map +1 -0
  203. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.d.ts +10 -0
  204. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js +67 -0
  205. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js.map +1 -0
  206. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +9 -0
  207. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +94 -0
  208. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js.map +1 -0
  209. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +7 -0
  210. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +35 -0
  211. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js.map +1 -0
  212. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
  213. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +25 -0
  214. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js.map +1 -0
  215. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +14 -0
  216. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +67 -0
  217. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js.map +1 -0
  218. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +20 -0
  219. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +98 -0
  220. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js.map +1 -0
  221. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -0
  222. package/dist/better-auth/plugin/lib/build-collections/verifications.js +87 -0
  223. package/dist/better-auth/plugin/lib/build-collections/verifications.js.map +1 -0
  224. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +5 -0
  225. package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
  226. package/dist/better-auth/plugin/lib/get-payload-auth.js.map +1 -0
  227. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +7 -0
  228. package/dist/better-auth/plugin/lib/init-better-auth.js +46 -0
  229. package/dist/better-auth/plugin/lib/init-better-auth.js.map +1 -0
  230. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +2 -0
  231. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +9 -0
  232. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js.map +1 -0
  233. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -0
  234. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
  235. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js.map +1 -0
  236. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +2 -0
  237. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
  238. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js.map +1 -0
  239. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +10 -0
  240. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +156 -0
  241. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js.map +1 -0
  242. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -0
  243. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
  244. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js.map +1 -0
  245. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -0
  246. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
  247. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js.map +1 -0
  248. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -0
  249. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
  250. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js.map +1 -0
  251. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -0
  252. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
  253. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js.map +1 -0
  254. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -0
  255. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
  256. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js.map +1 -0
  257. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +7 -0
  258. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
  259. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js.map +1 -0
  260. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +25 -0
  261. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
  262. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js.map +1 -0
  263. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +9 -0
  264. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +47 -0
  265. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js.map +1 -0
  266. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +15 -0
  267. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +42 -0
  268. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js.map +1 -0
  269. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +9 -0
  270. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +63 -0
  271. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js.map +1 -0
  272. package/dist/better-auth/plugin/lib/set-login-methods.d.ts +4 -0
  273. package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
  274. package/dist/better-auth/plugin/lib/set-login-methods.js.map +1 -0
  275. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +9 -0
  276. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +143 -0
  277. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js.map +1 -0
  278. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +10 -0
  279. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +219 -0
  280. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js.map +1 -0
  281. package/dist/better-auth/plugin/payload/components/logout-button.d.ts +4 -0
  282. package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
  283. package/dist/better-auth/plugin/payload/components/logout-button.js.map +1 -0
  284. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +8 -0
  285. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +117 -0
  286. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js.map +1 -0
  287. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
  288. package/dist/better-auth/plugin/payload/components/passkeys/client.js +66 -0
  289. package/dist/better-auth/plugin/payload/components/passkeys/client.js.map +1 -0
  290. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +4 -0
  291. package/dist/better-auth/plugin/payload/components/passkeys/index.js +52 -0
  292. package/dist/better-auth/plugin/payload/components/passkeys/index.js.map +1 -0
  293. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +8 -0
  294. package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
  295. package/dist/better-auth/plugin/payload/components/passkeys/list.js.map +1 -0
  296. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +22 -0
  297. package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
  298. package/dist/better-auth/plugin/payload/components/passkeys/types.js.map +1 -0
  299. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +6 -0
  300. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +7 -0
  301. package/dist/better-auth/plugin/payload/components/rsc-redirect.js.map +1 -0
  302. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +15 -0
  303. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +157 -0
  304. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js.map +1 -0
  305. package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
  306. package/dist/better-auth/plugin/payload/components/token-field.js +31 -0
  307. package/dist/better-auth/plugin/payload/components/token-field.js.map +1 -0
  308. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +8 -0
  309. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +300 -0
  310. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js.map +1 -0
  311. package/dist/better-auth/plugin/payload/exports/client.d.ts +6 -0
  312. package/dist/better-auth/plugin/payload/exports/client.js +8 -0
  313. package/dist/better-auth/plugin/payload/exports/client.js.map +1 -0
  314. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +8 -0
  315. package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
  316. package/dist/better-auth/plugin/payload/exports/rsc.js.map +1 -0
  317. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +2 -0
  318. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
  319. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js.map +1 -0
  320. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +1 -0
  321. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
  322. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js.map +1 -0
  323. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +19 -0
  324. package/dist/better-auth/plugin/payload/views/admin-login/client.js +226 -0
  325. package/dist/better-auth/plugin/payload/views/admin-login/client.js.map +1 -0
  326. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +10 -0
  327. package/dist/better-auth/plugin/payload/views/admin-login/index.js +150 -0
  328. package/dist/better-auth/plugin/payload/views/admin-login/index.js.map +1 -0
  329. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +16 -0
  330. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +299 -0
  331. package/dist/better-auth/plugin/payload/views/admin-signup/client.js.map +1 -0
  332. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +9 -0
  333. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +104 -0
  334. package/dist/better-auth/plugin/payload/views/admin-signup/index.js.map +1 -0
  335. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
  336. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +119 -0
  337. package/dist/better-auth/plugin/payload/views/forgot-password/client.js.map +1 -0
  338. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +8 -0
  339. package/dist/better-auth/plugin/payload/views/forgot-password/index.js +78 -0
  340. package/dist/better-auth/plugin/payload/views/forgot-password/index.js.map +1 -0
  341. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +10 -0
  342. package/dist/better-auth/plugin/payload/views/reset-password/client.js +144 -0
  343. package/dist/better-auth/plugin/payload/views/reset-password/client.js.map +1 -0
  344. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +8 -0
  345. package/dist/better-auth/plugin/payload/views/reset-password/index.js +96 -0
  346. package/dist/better-auth/plugin/payload/views/reset-password/index.js.map +1 -0
  347. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +6 -0
  348. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +96 -0
  349. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js.map +1 -0
  350. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +9 -0
  351. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +56 -0
  352. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js.map +1 -0
  353. package/dist/better-auth/plugin/types.d.ts +429 -0
  354. package/dist/better-auth/plugin/types.js +3 -0
  355. package/dist/better-auth/plugin/types.js.map +1 -0
  356. package/dist/better-auth/plugin/utils/set.d.ts +39 -0
  357. package/dist/better-auth/plugin/utils/set.js +103 -0
  358. package/dist/better-auth/plugin/utils/set.js.map +1 -0
  359. package/dist/better-auth/scripts/generate-types.d.ts +1 -0
  360. package/dist/better-auth/scripts/generate-types.js +234 -0
  361. package/dist/better-auth/scripts/generate-types.js.map +1 -0
  362. package/dist/better-auth/types.d.ts +2 -0
  363. package/dist/better-auth/types.js +4 -0
  364. package/dist/better-auth/types.js.map +1 -0
  365. package/dist/index.d.ts +1 -0
  366. package/dist/index.js +4 -0
  367. package/dist/index.js.map +1 -0
  368. package/dist/shared/components/icons.d.ts +7 -0
  369. package/dist/shared/components/icons.js +442 -0
  370. package/dist/shared/components/icons.js.map +1 -0
  371. package/dist/shared/components/logo.d.ts +3 -0
  372. package/dist/shared/components/logo.js +24 -0
  373. package/dist/shared/components/logo.js.map +1 -0
  374. package/dist/shared/form/components/submit.d.ts +7 -0
  375. package/dist/shared/form/components/submit.js +16 -0
  376. package/dist/shared/form/components/submit.js.map +1 -0
  377. package/dist/shared/form/fields/text-field.d.ts +8 -0
  378. package/dist/shared/form/fields/text-field.js +37 -0
  379. package/dist/shared/form/fields/text-field.js.map +1 -0
  380. package/dist/shared/form/index.d.ts +4 -0
  381. package/dist/shared/form/index.js +8 -0
  382. package/dist/shared/form/index.js.map +1 -0
  383. package/dist/shared/form/ui/header/index.d.ts +8 -0
  384. package/dist/shared/form/ui/header/index.js +24 -0
  385. package/dist/shared/form/ui/header/index.js.map +1 -0
  386. package/dist/shared/form/ui/index.d.ts +31 -0
  387. package/dist/shared/form/ui/index.js +57 -0
  388. package/dist/shared/form/ui/index.js.map +1 -0
  389. package/dist/shared/form/validation.d.ts +51 -0
  390. package/dist/shared/form/validation.js +127 -0
  391. package/dist/shared/form/validation.js.map +1 -0
  392. package/dist/shared/index.d.ts +2 -0
  393. package/dist/shared/index.js +4 -0
  394. package/dist/shared/index.js.map +1 -0
  395. package/dist/shared/payload/fields/field-copy-button/index.d.ts +3 -0
  396. package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
  397. package/dist/shared/payload/fields/field-copy-button/index.js.map +1 -0
  398. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +3 -0
  399. package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
  400. package/dist/shared/payload/fields/generate-uuid-button/index.js.map +1 -0
  401. package/dist/shared/payload/fields/index.d.ts +2 -0
  402. package/dist/shared/payload/fields/index.js +4 -0
  403. package/dist/shared/payload/fields/index.js.map +1 -0
  404. package/dist/shared/utils/regex.d.ts +2 -0
  405. package/dist/shared/utils/regex.js +4 -0
  406. package/dist/shared/utils/regex.js.map +1 -0
  407. package/dist/shared/utils/try-catch.d.ts +11 -0
  408. package/dist/shared/utils/try-catch.js +17 -0
  409. package/dist/shared/utils/try-catch.js.map +1 -0
  410. package/dist/shared/utils/value-or-default.d.ts +9 -0
  411. package/dist/shared/utils/value-or-default.js +12 -0
  412. package/dist/shared/utils/value-or-default.js.map +1 -0
  413. package/package.json +122 -0
@@ -0,0 +1,80 @@
1
+ import { adminEndpoints, baseSlugs } from "@/better-auth/plugin/constants";
2
+ import { status as httpStatus } from "http-status";
3
+ import { z } from "zod";
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
+ await req.payload.update({
53
+ collection: userSlug,
54
+ id: session.user.id,
55
+ data: {
56
+ role: role
57
+ },
58
+ overrideAccess: true
59
+ });
60
+ await req.payload.delete({
61
+ collection: pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations,
62
+ where: {
63
+ token: {
64
+ equals: token
65
+ }
66
+ }
67
+ });
68
+ const response = new Response(null, {
69
+ status: 307,
70
+ headers: {
71
+ Location: redirect ?? config.routes.admin
72
+ }
73
+ });
74
+ return response;
75
+ }
76
+ };
77
+ return endpoint;
78
+ };
79
+
80
+ //# sourceMappingURL=set-admin-role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.ts"],"sourcesContent":["import { adminEndpoints, baseSlugs } from '@/better-auth/plugin/constants';\nimport { status as httpStatus } from 'http-status';\nimport { type CollectionSlug, type Endpoint } from 'payload';\nimport { z } from 'zod';\nimport type { BetterAuthPluginOptions } from '../../../../types';\nimport { getPayloadAuth } from '../../../get-payload-auth';\n\nconst setAdminRoleSchema = z.object({\n token: z.string().optional(),\n redirect: z.string().optional(),\n});\n\nexport const getSetAdminRoleEndpoint = (\n pluginOptions: BetterAuthPluginOptions,\n userSlug: string\n): Endpoint => {\n const endpoint: Endpoint = {\n path: adminEndpoints.setAdminRole,\n method: 'get',\n handler: async req => {\n const { config } = req.payload;\n const schema = setAdminRoleSchema.safeParse(req.query);\n if (!schema.success) {\n return Response.json({ message: schema.error.message }, { status: httpStatus.BAD_REQUEST });\n }\n const payloadAuth = await getPayloadAuth(config);\n const session = await payloadAuth.betterAuth.api.getSession({\n headers: req.headers,\n });\n if (!session) {\n return Response.json({ message: 'No session found' }, { status: httpStatus.UNAUTHORIZED });\n }\n const { token, redirect } = schema.data;\n const invite = await req.payload.find({\n collection: (pluginOptions.adminInvitations?.slug ??\n baseSlugs.adminInvitations) as CollectionSlug,\n where: {\n token: { equals: token },\n },\n limit: 1,\n });\n if (invite.docs.length === 0) {\n return Response.json({ message: 'Invalid token' }, { status: httpStatus.UNAUTHORIZED });\n }\n const role = (invite.docs[0] as any)?.role as string;\n await req.payload.update({\n collection: userSlug as CollectionSlug,\n id: session.user.id,\n data: {\n role: role as any,\n } as any,\n overrideAccess: true,\n });\n await req.payload.delete({\n collection: (pluginOptions.adminInvitations?.slug ??\n baseSlugs.adminInvitations) as CollectionSlug,\n where: {\n token: {\n equals: token,\n },\n },\n });\n const response = new Response(null, {\n status: 307,\n headers: {\n Location: redirect ?? config.routes.admin,\n },\n });\n return response;\n },\n };\n\n return endpoint;\n};\n"],"names":["adminEndpoints","baseSlugs","status","httpStatus","z","getPayloadAuth","setAdminRoleSchema","object","token","string","optional","redirect","getSetAdminRoleEndpoint","pluginOptions","userSlug","endpoint","path","setAdminRole","method","handler","req","config","payload","schema","safeParse","query","success","Response","json","message","error","BAD_REQUEST","payloadAuth","session","betterAuth","api","getSession","headers","UNAUTHORIZED","data","invite","find","collection","adminInvitations","slug","where","equals","limit","docs","length","role","update","id","user","overrideAccess","delete","response","Location","routes","admin"],"mappings":"AAAA,SAASA,cAAc,EAAEC,SAAS,QAAQ,iCAAiC;AAC3E,SAASC,UAAUC,UAAU,QAAQ,cAAc;AAEnD,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,cAAc,QAAQ,4BAA4B;AAE3D,MAAMC,qBAAqBF,EAAEG,MAAM,CAAC;IAClCC,OAAOJ,EAAEK,MAAM,GAAGC,QAAQ;IAC1BC,UAAUP,EAAEK,MAAM,GAAGC,QAAQ;AAC/B;AAEA,OAAO,MAAME,0BAA0B,CACrCC,eACAC;IAEA,MAAMC,WAAqB;QACzBC,MAAMhB,eAAeiB,YAAY;QACjCC,QAAQ;QACRC,SAAS,OAAMC;YACb,MAAM,EAAEC,MAAM,EAAE,GAAGD,IAAIE,OAAO;YAC9B,MAAMC,SAASjB,mBAAmBkB,SAAS,CAACJ,IAAIK,KAAK;YACrD,IAAI,CAACF,OAAOG,OAAO,EAAE;gBACnB,OAAOC,SAASC,IAAI,CAAC;oBAAEC,SAASN,OAAOO,KAAK,CAACD,OAAO;gBAAC,GAAG;oBAAE3B,QAAQC,WAAW4B,WAAW;gBAAC;YAC3F;YACA,MAAMC,cAAc,MAAM3B,eAAegB;YACzC,MAAMY,UAAU,MAAMD,YAAYE,UAAU,CAACC,GAAG,CAACC,UAAU,CAAC;gBAC1DC,SAASjB,IAAIiB,OAAO;YACtB;YACA,IAAI,CAACJ,SAAS;gBACZ,OAAON,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAAmB,GAAG;oBAAE3B,QAAQC,WAAWmC,YAAY;gBAAC;YAC1F;YACA,MAAM,EAAE9B,KAAK,EAAEG,QAAQ,EAAE,GAAGY,OAAOgB,IAAI;YACvC,MAAMC,SAAS,MAAMpB,IAAIE,OAAO,CAACmB,IAAI,CAAC;gBACpCC,YAAa7B,cAAc8B,gBAAgB,EAAEC,QAC3C3C,UAAU0C,gBAAgB;gBAC5BE,OAAO;oBACLrC,OAAO;wBAAEsC,QAAQtC;oBAAM;gBACzB;gBACAuC,OAAO;YACT;YACA,IAAIP,OAAOQ,IAAI,CAACC,MAAM,KAAK,GAAG;gBAC5B,OAAOtB,SAASC,IAAI,CAAC;oBAAEC,SAAS;gBAAgB,GAAG;oBAAE3B,QAAQC,WAAWmC,YAAY;gBAAC;YACvF;YACA,MAAMY,OAAQV,OAAOQ,IAAI,CAAC,EAAE,EAAUE;YACtC,MAAM9B,IAAIE,OAAO,CAAC6B,MAAM,CAAC;gBACvBT,YAAY5B;gBACZsC,IAAInB,QAAQoB,IAAI,CAACD,EAAE;gBACnBb,MAAM;oBACJW,MAAMA;gBACR;gBACAI,gBAAgB;YAClB;YACA,MAAMlC,IAAIE,OAAO,CAACiC,MAAM,CAAC;gBACvBb,YAAa7B,cAAc8B,gBAAgB,EAAEC,QAC3C3C,UAAU0C,gBAAgB;gBAC5BE,OAAO;oBACLrC,OAAO;wBACLsC,QAAQtC;oBACV;gBACF;YACF;YACA,MAAMgD,WAAW,IAAI7B,SAAS,MAAM;gBAClCzB,QAAQ;gBACRmC,SAAS;oBACPoB,UAAU9C,YAAYU,OAAOqC,MAAM,CAACC,KAAK;gBAC3C;YACF;YACA,OAAOH;QACT;IACF;IAEA,OAAOzC;AACT,EAAE"}
@@ -0,0 +1,6 @@
1
+ import type { 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;
@@ -0,0 +1,79 @@
1
+ import { baModelKey } from "@/better-auth/plugin/constants";
2
+ import { getCollectionByModelKey } from "@/better-auth/plugin/helpers/get-collection";
3
+ import { getIp } from "@/better-auth/plugin/helpers/get-ip";
4
+ import { prepareSessionData } from "@/better-auth/plugin/helpers/prepare-session-data";
5
+ import { getPayloadAuth } from "@/better-auth/plugin/lib/get-payload-auth";
6
+ import { generateId } from "../../../../..";
7
+ import { createAuthMiddleware } from "better-auth/api";
8
+ import { setSessionCookie } from "better-auth/cookies";
9
+ import { parseSetCookie } from "next/dist/compiled/@edge-runtime/cookies";
10
+ import { cookies } from "next/headers";
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).toISOString()
33
+ },
34
+ req
35
+ });
36
+ const betterAuthHandleRequest = createAuthMiddleware(async (ctx)=>{
37
+ ctx.context = {
38
+ ...authContext,
39
+ user
40
+ };
41
+ await ctx.setSignedCookie(ctx.context.authCookies.sessionToken.name, session.token, ctx.context.secret, ctx.context.authCookies.sessionToken.options);
42
+ const filteredSessionData = await prepareSessionData({
43
+ sessionData: {
44
+ session,
45
+ user
46
+ },
47
+ usersCollection: userCollection,
48
+ sessionsCollection: sessionCollection
49
+ });
50
+ if (filteredSessionData) {
51
+ await setSessionCookie(ctx, filteredSessionData);
52
+ }
53
+ if ('responseHeaders' in ctx) {
54
+ return ctx.responseHeaders;
55
+ }
56
+ return null;
57
+ });
58
+ // Create a modified request object that matches the expected MiddlewareInputContext type
59
+ const modifiedReq = {
60
+ ...req,
61
+ body: undefined
62
+ };
63
+ const responseHeaders = await betterAuthHandleRequest(modifiedReq);
64
+ const responseCookies = responseHeaders?.getSetCookie().map((cookie)=>parseSetCookie(cookie)).filter(Boolean);
65
+ if (responseCookies) {
66
+ for (const cookieData of responseCookies){
67
+ const { name, value, ...options } = cookieData;
68
+ cookieStore.set({
69
+ ...options,
70
+ name,
71
+ value: decodeURIComponent(value)
72
+ });
73
+ }
74
+ }
75
+ };
76
+ return hook;
77
+ }
78
+
79
+ //# sourceMappingURL=after-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/after-login.ts"],"sourcesContent":["import { baModelKey } from '@/better-auth/plugin/constants';\nimport { getCollectionByModelKey } from '@/better-auth/plugin/helpers/get-collection';\nimport { getIp } from '@/better-auth/plugin/helpers/get-ip';\nimport { prepareSessionData } from '@/better-auth/plugin/helpers/prepare-session-data';\nimport { getPayloadAuth } from '@/better-auth/plugin/lib/get-payload-auth';\nimport { type Session, generateId } from 'better-auth';\nimport { createAuthMiddleware } from 'better-auth/api';\nimport { setSessionCookie } from 'better-auth/cookies';\nimport { type ResponseCookie, parseSetCookie } from 'next/dist/compiled/@edge-runtime/cookies';\nimport { cookies } from 'next/headers';\nimport type { CollectionAfterLoginHook, CollectionSlug } from 'payload';\n/**\n * This hook is used to sync the admin login token with better-auth session token\n * It also creates a new session in better-auth\n */\nexport function getAfterLoginHook() {\n const hook: CollectionAfterLoginHook = async ({ req, user }) => {\n const config = req.payload.config;\n const payload = await getPayloadAuth(config);\n const collections = req.payload.collections;\n const userCollection = getCollectionByModelKey(collections, baModelKey.user);\n const sessionCollection = getCollectionByModelKey(collections, baModelKey.session);\n const cookieStore = await cookies();\n const authContext = await payload.betterAuth.$context;\n const sessionExpiration = payload.betterAuth.options.session?.expiresIn ?? 60 * 60 * 24 * 7; // 7 days\n // we can't use internal adapter as we can cause a race condition unless we pass req to the payload.create\n const session = (await payload.create({\n collection: sessionCollection.slug as CollectionSlug,\n data: {\n ipAddress: getIp(req.headers, payload.betterAuth.options) ?? '',\n userAgent: req.headers?.get('user-agent') ?? '',\n user: user.id,\n token: generateId(32),\n expiresAt: new Date(Date.now() + sessionExpiration * 1000).toISOString(),\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 req,\n })) as unknown as Session;\n\n const betterAuthHandleRequest = createAuthMiddleware(async (ctx): Promise<Headers | null> => {\n ctx.context = { ...authContext, user };\n await ctx.setSignedCookie(\n ctx.context.authCookies.sessionToken.name,\n session.token,\n ctx.context.secret,\n ctx.context.authCookies.sessionToken.options\n );\n const filteredSessionData = await prepareSessionData({\n sessionData: { session, user },\n usersCollection: userCollection,\n sessionsCollection: sessionCollection,\n });\n if (filteredSessionData) {\n await setSessionCookie(ctx, filteredSessionData);\n }\n if ('responseHeaders' in ctx) {\n return ctx.responseHeaders as Headers;\n }\n return null;\n });\n\n // Create a modified request object that matches the expected MiddlewareInputContext type\n const modifiedReq = {\n ...req,\n body: undefined, // Explicitly set body to undefined to satisfy type constraint\n };\n\n const responseHeaders = await betterAuthHandleRequest(modifiedReq);\n const responseCookies = responseHeaders\n ?.getSetCookie()\n .map(cookie => parseSetCookie(cookie))\n .filter(Boolean) as ResponseCookie[];\n\n if (responseCookies) {\n for (const cookieData of responseCookies) {\n const { name, value, ...options } = cookieData;\n cookieStore.set({\n ...options,\n name,\n value: decodeURIComponent(value),\n });\n }\n }\n };\n\n return hook as CollectionAfterLoginHook;\n}\n"],"names":["baModelKey","getCollectionByModelKey","getIp","prepareSessionData","getPayloadAuth","generateId","createAuthMiddleware","setSessionCookie","parseSetCookie","cookies","getAfterLoginHook","hook","req","user","config","payload","collections","userCollection","sessionCollection","session","cookieStore","authContext","betterAuth","$context","sessionExpiration","options","expiresIn","create","collection","slug","data","ipAddress","headers","userAgent","get","id","token","expiresAt","Date","now","toISOString","betterAuthHandleRequest","ctx","context","setSignedCookie","authCookies","sessionToken","name","secret","filteredSessionData","sessionData","usersCollection","sessionsCollection","responseHeaders","modifiedReq","body","undefined","responseCookies","getSetCookie","map","cookie","filter","Boolean","cookieData","value","set","decodeURIComponent"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,uBAAuB,QAAQ,8CAA8C;AACtF,SAASC,KAAK,QAAQ,sCAAsC;AAC5D,SAASC,kBAAkB,QAAQ,oDAAoD;AACvF,SAASC,cAAc,QAAQ,4CAA4C;AAC3E,SAAuBC,UAAU,QAAQ,iBAAc;AACvD,SAASC,oBAAoB,QAAQ,kBAAkB;AACvD,SAASC,gBAAgB,QAAQ,sBAAsB;AACvD,SAA8BC,cAAc,QAAQ,2CAA2C;AAC/F,SAASC,OAAO,QAAQ,eAAe;AAEvC;;;CAGC,GACD,OAAO,SAASC;IACd,MAAMC,OAAiC,OAAO,EAAEC,GAAG,EAAEC,IAAI,EAAE;QACzD,MAAMC,SAASF,IAAIG,OAAO,CAACD,MAAM;QACjC,MAAMC,UAAU,MAAMX,eAAeU;QACrC,MAAME,cAAcJ,IAAIG,OAAO,CAACC,WAAW;QAC3C,MAAMC,iBAAiBhB,wBAAwBe,aAAahB,WAAWa,IAAI;QAC3E,MAAMK,oBAAoBjB,wBAAwBe,aAAahB,WAAWmB,OAAO;QACjF,MAAMC,cAAc,MAAMX;QAC1B,MAAMY,cAAc,MAAMN,QAAQO,UAAU,CAACC,QAAQ;QACrD,MAAMC,oBAAoBT,QAAQO,UAAU,CAACG,OAAO,CAACN,OAAO,EAAEO,aAAa,KAAK,KAAK,KAAK,GAAG,SAAS;QACtG,0GAA0G;QAC1G,MAAMP,UAAW,MAAMJ,QAAQY,MAAM,CAAC;YACpCC,YAAYV,kBAAkBW,IAAI;YAClCC,MAAM;gBACJC,WAAW7B,MAAMU,IAAIoB,OAAO,EAAEjB,QAAQO,UAAU,CAACG,OAAO,KAAK;gBAC7DQ,WAAWrB,IAAIoB,OAAO,EAAEE,IAAI,iBAAiB;gBAC7CrB,MAAMA,KAAKsB,EAAE;gBACbC,OAAO/B,WAAW;gBAClBgC,WAAW,IAAIC,KAAKA,KAAKC,GAAG,KAAKf,oBAAoB,MAAMgB,WAAW;YAExE;YAIA5B;QACF;QAEA,MAAM6B,0BAA0BnC,qBAAqB,OAAOoC;YAC1DA,IAAIC,OAAO,GAAG;gBAAE,GAAGtB,WAAW;gBAAER;YAAK;YACrC,MAAM6B,IAAIE,eAAe,CACvBF,IAAIC,OAAO,CAACE,WAAW,CAACC,YAAY,CAACC,IAAI,EACzC5B,QAAQiB,KAAK,EACbM,IAAIC,OAAO,CAACK,MAAM,EAClBN,IAAIC,OAAO,CAACE,WAAW,CAACC,YAAY,CAACrB,OAAO;YAE9C,MAAMwB,sBAAsB,MAAM9C,mBAAmB;gBACnD+C,aAAa;oBAAE/B;oBAASN;gBAAK;gBAC7BsC,iBAAiBlC;gBACjBmC,oBAAoBlC;YACtB;YACA,IAAI+B,qBAAqB;gBACvB,MAAM1C,iBAAiBmC,KAAKO;YAC9B;YACA,IAAI,qBAAqBP,KAAK;gBAC5B,OAAOA,IAAIW,eAAe;YAC5B;YACA,OAAO;QACT;QAEA,yFAAyF;QACzF,MAAMC,cAAc;YAClB,GAAG1C,GAAG;YACN2C,MAAMC;QACR;QAEA,MAAMH,kBAAkB,MAAMZ,wBAAwBa;QACtD,MAAMG,kBAAkBJ,iBACpBK,eACDC,IAAIC,CAAAA,SAAUpD,eAAeoD,SAC7BC,OAAOC;QAEV,IAAIL,iBAAiB;YACnB,KAAK,MAAMM,cAAcN,gBAAiB;gBACxC,MAAM,EAAEV,IAAI,EAAEiB,KAAK,EAAE,GAAGvC,SAAS,GAAGsC;gBACpC3C,YAAY6C,GAAG,CAAC;oBACd,GAAGxC,OAAO;oBACVsB;oBACAiB,OAAOE,mBAAmBF;gBAC5B;YACF;QACF;IACF;IAEA,OAAOrD;AACT"}
@@ -0,0 +1,2 @@
1
+ import type { CollectionAfterLogoutHook } from 'payload';
2
+ export declare function getAfterLogoutHook(): CollectionAfterLogoutHook;
@@ -0,0 +1,82 @@
1
+ import { baModelKey } from "@/better-auth/plugin/constants";
2
+ import { getCollectionByModelKey } from "@/better-auth/plugin/helpers/get-collection";
3
+ import { getPayloadAuth } from "@/better-auth/plugin/lib/get-payload-auth";
4
+ import { cookies } from "next/headers";
5
+ export function getAfterLogoutHook() {
6
+ const hook = async ({ req })=>{
7
+ const store = await cookies();
8
+ const payload = await getPayloadAuth(req.payload.config);
9
+ const { dontRememberToken, sessionData, sessionToken } = (await payload.betterAuth.$context).authCookies;
10
+ const sessionsSlug = getCollectionByModelKey(req.payload.collections, baModelKey.session).slug;
11
+ await deleteSessionFromDb(payload, sessionsSlug, store.get(sessionToken.name)?.value, req);
12
+ const baseNames = [
13
+ sessionToken.name,
14
+ sessionData.name,
15
+ dontRememberToken.name,
16
+ //This is a hacky wat to delete the admin session cookie (BETTER AUTH HARDCODED THIS)
17
+ // see https://github.com/better-auth/better-auth/blob/25e82669eed83ba6da063c167e8ae5b7da84ef9f/packages/better-auth/src/plugins/admin/admin.ts#L917C7-L917C23
18
+ 'admin_session'
19
+ ];
20
+ const multiBase = `${sessionToken.name}_multi`;
21
+ const multiCandidates = store.getAll().filter((c)=>c.name.startsWith(multiBase) || c.name.startsWith(`__Secure-${multiBase}`)).map((c)=>c.name);
22
+ const allNames = [
23
+ ...baseNames.flatMap((n)=>{
24
+ const clean = n.replace(/^__Secure-/, '');
25
+ return [
26
+ clean,
27
+ `__Secure-${clean}`
28
+ ];
29
+ }),
30
+ ...multiCandidates
31
+ ];
32
+ allNames.forEach((n)=>deleteCookie(store, n));
33
+ };
34
+ return hook;
35
+ }
36
+ async function deleteSessionFromDb(payload, slug, rawCookieValue, req) {
37
+ if (!rawCookieValue) return;
38
+ const [token] = rawCookieValue.split('.');
39
+ const { docs } = await payload.find({
40
+ collection: slug,
41
+ limit: 1,
42
+ req,
43
+ where: {
44
+ token: {
45
+ equals: token
46
+ }
47
+ }
48
+ });
49
+ const session = docs.at(0);
50
+ if (!session) return;
51
+ try {
52
+ await payload.delete({
53
+ collection: slug,
54
+ req,
55
+ where: {
56
+ id: {
57
+ equals: session.id
58
+ }
59
+ }
60
+ });
61
+ } catch {
62
+ // Ignore errors during session deletion
63
+ }
64
+ }
65
+ /**
66
+ * Deleting __Secure-* cookies need to set options.secure = true
67
+ */ function deleteCookie(store, name) {
68
+ const cookie = store.get(name);
69
+ if (!cookie) return;
70
+ const isSecure = name.startsWith('__Secure-') || name.startsWith('__Host-');
71
+ // Using Record<string, unknown> because cookie options structure varies by Next.js cookie store implementation
72
+ const options = {
73
+ httpOnly: true,
74
+ maxAge: 0,
75
+ path: '/',
76
+ sameSite: 'lax'
77
+ };
78
+ if (isSecure) options.secure = true;
79
+ store.set(name, '', options);
80
+ }
81
+
82
+ //# sourceMappingURL=after-logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/after-logout.ts"],"sourcesContent":["import { baModelKey } from '@/better-auth/plugin/constants';\nimport { getCollectionByModelKey } from '@/better-auth/plugin/helpers/get-collection';\nimport { getPayloadAuth } from '@/better-auth/plugin/lib/get-payload-auth';\nimport { cookies } from 'next/headers';\n\nimport type { CollectionAfterLogoutHook, CollectionSlug, PayloadRequest } from 'payload';\n\nexport function getAfterLogoutHook() {\n const hook: CollectionAfterLogoutHook = async ({ req }) => {\n const store = await cookies();\n const payload = await getPayloadAuth(req.payload.config);\n\n const { dontRememberToken, sessionData, sessionToken } = (await payload.betterAuth.$context)\n .authCookies;\n\n const sessionsSlug = getCollectionByModelKey(req.payload.collections, baModelKey.session).slug;\n\n await deleteSessionFromDb(payload, sessionsSlug, store.get(sessionToken.name)?.value, req);\n\n const baseNames = [\n sessionToken.name,\n sessionData.name,\n dontRememberToken.name,\n //This is a hacky wat to delete the admin session cookie (BETTER AUTH HARDCODED THIS)\n // see https://github.com/better-auth/better-auth/blob/25e82669eed83ba6da063c167e8ae5b7da84ef9f/packages/better-auth/src/plugins/admin/admin.ts#L917C7-L917C23\n 'admin_session',\n ];\n\n const multiBase = `${sessionToken.name}_multi`;\n const multiCandidates = store\n .getAll()\n .filter(c => c.name.startsWith(multiBase) || c.name.startsWith(`__Secure-${multiBase}`))\n .map(c => c.name);\n\n const allNames = [\n ...baseNames.flatMap(n => {\n const clean = n.replace(/^__Secure-/, '');\n return [clean, `__Secure-${clean}`];\n }),\n ...multiCandidates,\n ];\n\n allNames.forEach(n => deleteCookie(store, n));\n };\n\n return hook;\n}\n\nasync function deleteSessionFromDb(\n payload: Awaited<ReturnType<typeof getPayloadAuth>>,\n slug: string,\n rawCookieValue: string | undefined,\n req: PayloadRequest\n) {\n if (!rawCookieValue) return;\n const [token] = rawCookieValue.split('.');\n const { docs } = await payload.find({\n collection: slug as CollectionSlug,\n limit: 1,\n req,\n where: { token: { equals: token } },\n });\n const session = docs.at(0);\n if (!session) return;\n try {\n await payload.delete({\n collection: slug as CollectionSlug,\n req,\n where: { id: { equals: session.id } },\n });\n } catch {\n // Ignore errors during session deletion\n }\n}\n\n/**\n * Deleting __Secure-* cookies need to set options.secure = true\n */\nfunction deleteCookie(store: Awaited<ReturnType<typeof cookies>>, name: string) {\n const cookie = store.get(name);\n if (!cookie) return;\n\n const isSecure = name.startsWith('__Secure-') || name.startsWith('__Host-');\n\n // Using Record<string, unknown> because cookie options structure varies by Next.js cookie store implementation\n const options: /* Using Record<string, unknown> because cookie options structure varies by Next.js cookie store implementation */ Record<\n string,\n unknown\n > = {\n httpOnly: true,\n maxAge: 0,\n path: '/',\n sameSite: 'lax',\n };\n\n if (isSecure) options.secure = true;\n\n store.set(name, '', options);\n}\n"],"names":["baModelKey","getCollectionByModelKey","getPayloadAuth","cookies","getAfterLogoutHook","hook","req","store","payload","config","dontRememberToken","sessionData","sessionToken","betterAuth","$context","authCookies","sessionsSlug","collections","session","slug","deleteSessionFromDb","get","name","value","baseNames","multiBase","multiCandidates","getAll","filter","c","startsWith","map","allNames","flatMap","n","clean","replace","forEach","deleteCookie","rawCookieValue","token","split","docs","find","collection","limit","where","equals","at","delete","id","cookie","isSecure","options","httpOnly","maxAge","path","sameSite","secure","set"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,uBAAuB,QAAQ,8CAA8C;AACtF,SAASC,cAAc,QAAQ,4CAA4C;AAC3E,SAASC,OAAO,QAAQ,eAAe;AAIvC,OAAO,SAASC;IACd,MAAMC,OAAkC,OAAO,EAAEC,GAAG,EAAE;QACpD,MAAMC,QAAQ,MAAMJ;QACpB,MAAMK,UAAU,MAAMN,eAAeI,IAAIE,OAAO,CAACC,MAAM;QAEvD,MAAM,EAAEC,iBAAiB,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAG,AAAC,CAAA,MAAMJ,QAAQK,UAAU,CAACC,QAAQ,AAAD,EACvFC,WAAW;QAEd,MAAMC,eAAef,wBAAwBK,IAAIE,OAAO,CAACS,WAAW,EAAEjB,WAAWkB,OAAO,EAAEC,IAAI;QAE9F,MAAMC,oBAAoBZ,SAASQ,cAAcT,MAAMc,GAAG,CAACT,aAAaU,IAAI,GAAGC,OAAOjB;QAEtF,MAAMkB,YAAY;YAChBZ,aAAaU,IAAI;YACjBX,YAAYW,IAAI;YAChBZ,kBAAkBY,IAAI;YACtB,qFAAqF;YACrF,8JAA8J;YAC9J;SACD;QAED,MAAMG,YAAY,GAAGb,aAAaU,IAAI,CAAC,MAAM,CAAC;QAC9C,MAAMI,kBAAkBnB,MACrBoB,MAAM,GACNC,MAAM,CAACC,CAAAA,IAAKA,EAAEP,IAAI,CAACQ,UAAU,CAACL,cAAcI,EAAEP,IAAI,CAACQ,UAAU,CAAC,CAAC,SAAS,EAAEL,WAAW,GACrFM,GAAG,CAACF,CAAAA,IAAKA,EAAEP,IAAI;QAElB,MAAMU,WAAW;eACZR,UAAUS,OAAO,CAACC,CAAAA;gBACnB,MAAMC,QAAQD,EAAEE,OAAO,CAAC,cAAc;gBACtC,OAAO;oBAACD;oBAAO,CAAC,SAAS,EAAEA,OAAO;iBAAC;YACrC;eACGT;SACJ;QAEDM,SAASK,OAAO,CAACH,CAAAA,IAAKI,aAAa/B,OAAO2B;IAC5C;IAEA,OAAO7B;AACT;AAEA,eAAee,oBACbZ,OAAmD,EACnDW,IAAY,EACZoB,cAAkC,EAClCjC,GAAmB;IAEnB,IAAI,CAACiC,gBAAgB;IACrB,MAAM,CAACC,MAAM,GAAGD,eAAeE,KAAK,CAAC;IACrC,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMlC,QAAQmC,IAAI,CAAC;QAClCC,YAAYzB;QACZ0B,OAAO;QACPvC;QACAwC,OAAO;YAAEN,OAAO;gBAAEO,QAAQP;YAAM;QAAE;IACpC;IACA,MAAMtB,UAAUwB,KAAKM,EAAE,CAAC;IACxB,IAAI,CAAC9B,SAAS;IACd,IAAI;QACF,MAAMV,QAAQyC,MAAM,CAAC;YACnBL,YAAYzB;YACZb;YACAwC,OAAO;gBAAEI,IAAI;oBAAEH,QAAQ7B,QAAQgC,EAAE;gBAAC;YAAE;QACtC;IACF,EAAE,OAAM;IACN,wCAAwC;IAC1C;AACF;AAEA;;CAEC,GACD,SAASZ,aAAa/B,KAA0C,EAAEe,IAAY;IAC5E,MAAM6B,SAAS5C,MAAMc,GAAG,CAACC;IACzB,IAAI,CAAC6B,QAAQ;IAEb,MAAMC,WAAW9B,KAAKQ,UAAU,CAAC,gBAAgBR,KAAKQ,UAAU,CAAC;IAEjE,+GAA+G;IAC/G,MAAMuB,UAGF;QACFC,UAAU;QACVC,QAAQ;QACRC,MAAM;QACNC,UAAU;IACZ;IAEA,IAAIL,UAAUC,QAAQK,MAAM,GAAG;IAE/BnD,MAAMoD,GAAG,CAACrC,MAAM,IAAI+B;AACtB"}
@@ -0,0 +1,2 @@
1
+ import { type CollectionBeforeDeleteHook } from 'payload';
2
+ export declare function getBeforeDeleteHook(): CollectionBeforeDeleteHook;
@@ -0,0 +1,54 @@
1
+ import { baModelKey } from "@/better-auth/plugin/constants";
2
+ import { getCollectionByModelKey } from "@/better-auth/plugin/helpers/get-collection";
3
+ import { commitTransaction, initTransaction, killTransaction } from "payload";
4
+ export function getBeforeDeleteHook() {
5
+ const hook = async ({ req, id })=>{
6
+ const collections = req.payload.collections;
7
+ const accountsSlug = getCollectionByModelKey(collections, baModelKey.account).slug;
8
+ const sessionsSlug = getCollectionByModelKey(collections, baModelKey.session).slug;
9
+ const verificationsSlug = getCollectionByModelKey(collections, baModelKey.verification).slug;
10
+ try {
11
+ const { payload } = req;
12
+ const userId = id;
13
+ const shouldCommit = await initTransaction(req);
14
+ await payload.delete({
15
+ collection: accountsSlug,
16
+ where: {
17
+ user: {
18
+ equals: userId
19
+ }
20
+ },
21
+ req
22
+ });
23
+ await payload.delete({
24
+ collection: sessionsSlug,
25
+ where: {
26
+ user: {
27
+ equals: userId
28
+ }
29
+ },
30
+ req
31
+ });
32
+ await payload.delete({
33
+ collection: verificationsSlug,
34
+ where: {
35
+ value: {
36
+ like: `"${userId}"`
37
+ }
38
+ },
39
+ req
40
+ });
41
+ if (shouldCommit) {
42
+ await commitTransaction(req);
43
+ }
44
+ return;
45
+ } catch (error) {
46
+ await killTransaction(req);
47
+ console.error('Error in user afterDelete hook:', error);
48
+ return;
49
+ }
50
+ };
51
+ return hook;
52
+ }
53
+
54
+ //# sourceMappingURL=before-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/before-delete.ts"],"sourcesContent":["import { baModelKey } from '@/better-auth/plugin/constants';\nimport { getCollectionByModelKey } from '@/better-auth/plugin/helpers/get-collection';\nimport {\n type CollectionBeforeDeleteHook,\n type CollectionSlug,\n commitTransaction,\n initTransaction,\n killTransaction,\n} from 'payload';\n\nexport function getBeforeDeleteHook(): CollectionBeforeDeleteHook {\n const hook: CollectionBeforeDeleteHook = async ({ req, id }) => {\n const collections = req.payload.collections;\n const accountsSlug = getCollectionByModelKey(collections, baModelKey.account).slug;\n const sessionsSlug = getCollectionByModelKey(collections, baModelKey.session).slug;\n const verificationsSlug = getCollectionByModelKey(collections, baModelKey.verification).slug;\n try {\n const { payload } = req;\n const userId = id;\n\n const shouldCommit = await initTransaction(req);\n\n await payload.delete({\n collection: accountsSlug as CollectionSlug,\n where: {\n user: {\n equals: userId,\n },\n },\n req,\n });\n\n await payload.delete({\n collection: sessionsSlug as CollectionSlug,\n where: {\n user: {\n equals: userId,\n },\n },\n req,\n });\n\n await payload.delete({\n collection: verificationsSlug as CollectionSlug,\n where: {\n value: {\n like: `\"${userId}\"`,\n },\n },\n req,\n });\n\n if (shouldCommit) {\n await commitTransaction(req);\n }\n\n return;\n } catch (error) {\n await killTransaction(req);\n console.error('Error in user afterDelete hook:', error);\n return;\n }\n };\n\n return hook;\n}\n"],"names":["baModelKey","getCollectionByModelKey","commitTransaction","initTransaction","killTransaction","getBeforeDeleteHook","hook","req","id","collections","payload","accountsSlug","account","slug","sessionsSlug","session","verificationsSlug","verification","userId","shouldCommit","delete","collection","where","user","equals","value","like","error","console"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,uBAAuB,QAAQ,8CAA8C;AACtF,SAGEC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,QACV,UAAU;AAEjB,OAAO,SAASC;IACd,MAAMC,OAAmC,OAAO,EAAEC,GAAG,EAAEC,EAAE,EAAE;QACzD,MAAMC,cAAcF,IAAIG,OAAO,CAACD,WAAW;QAC3C,MAAME,eAAeV,wBAAwBQ,aAAaT,WAAWY,OAAO,EAAEC,IAAI;QAClF,MAAMC,eAAeb,wBAAwBQ,aAAaT,WAAWe,OAAO,EAAEF,IAAI;QAClF,MAAMG,oBAAoBf,wBAAwBQ,aAAaT,WAAWiB,YAAY,EAAEJ,IAAI;QAC5F,IAAI;YACF,MAAM,EAAEH,OAAO,EAAE,GAAGH;YACpB,MAAMW,SAASV;YAEf,MAAMW,eAAe,MAAMhB,gBAAgBI;YAE3C,MAAMG,QAAQU,MAAM,CAAC;gBACnBC,YAAYV;gBACZW,OAAO;oBACLC,MAAM;wBACJC,QAAQN;oBACV;gBACF;gBACAX;YACF;YAEA,MAAMG,QAAQU,MAAM,CAAC;gBACnBC,YAAYP;gBACZQ,OAAO;oBACLC,MAAM;wBACJC,QAAQN;oBACV;gBACF;gBACAX;YACF;YAEA,MAAMG,QAAQU,MAAM,CAAC;gBACnBC,YAAYL;gBACZM,OAAO;oBACLG,OAAO;wBACLC,MAAM,CAAC,CAAC,EAAER,OAAO,CAAC,CAAC;oBACrB;gBACF;gBACAX;YACF;YAEA,IAAIY,cAAc;gBAChB,MAAMjB,kBAAkBK;YAC1B;YAEA;QACF,EAAE,OAAOoB,OAAO;YACd,MAAMvB,gBAAgBG;YACtBqB,QAAQD,KAAK,CAAC,mCAAmCA;YACjD;QACF;IACF;IAEA,OAAOrB;AACT"}
@@ -0,0 +1,6 @@
1
+ import type { BetterAuthOptions } from '@/better-auth/plugin/types';
2
+ import { type CollectionBeforeLoginHook } from 'payload';
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;
@@ -0,0 +1,15 @@
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=before-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/before-login.ts"],"sourcesContent":["import type { BetterAuthOptions } from '@/better-auth/plugin/types';\nimport { APIError, type CollectionBeforeLoginHook } from 'payload';\n/**\n * This hook blocks login attempts if email verification is required and the user's email is not verified\n */\nexport function getBeforeLoginHook(betterAuthOptions: BetterAuthOptions) {\n const hook: CollectionBeforeLoginHook = async ({ user }) => {\n const requireEmailVerification =\n betterAuthOptions.emailAndPassword?.requireEmailVerification ?? false;\n\n if (requireEmailVerification && !user.emailVerified) {\n throw new APIError(\n 'Email verification required. Please verify your email before logging in.',\n 403\n );\n }\n\n return user;\n };\n\n return hook;\n}\n"],"names":["APIError","getBeforeLoginHook","betterAuthOptions","hook","user","requireEmailVerification","emailAndPassword","emailVerified"],"mappings":"AACA,SAASA,QAAQ,QAAwC,UAAU;AACnE;;CAEC,GACD,OAAO,SAASC,mBAAmBC,iBAAoC;IACrE,MAAMC,OAAkC,OAAO,EAAEC,IAAI,EAAE;QACrD,MAAMC,2BACJH,kBAAkBI,gBAAgB,EAAED,4BAA4B;QAElE,IAAIA,4BAA4B,CAACD,KAAKG,aAAa,EAAE;YACnD,MAAM,IAAIP,SACR,4EACA;QAEJ;QAEA,OAAOI;IACT;IAEA,OAAOD;AACT"}
@@ -0,0 +1,6 @@
1
+ export * from './after-login';
2
+ export * from './after-logout';
3
+ export * from './before-delete';
4
+ export * from './before-login';
5
+ export * from './on-verified-change';
6
+ export * from './sync-account';
@@ -0,0 +1,8 @@
1
+ export * from "./after-login";
2
+ export * from "./after-logout";
3
+ export * from "./before-delete";
4
+ export * from "./before-login";
5
+ export * from "./on-verified-change";
6
+ export * from "./sync-account";
7
+
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/index.ts"],"sourcesContent":["export * from './after-login';\nexport * from './after-logout';\nexport * from './before-delete';\nexport * from './before-login';\nexport * from './on-verified-change';\nexport * from './sync-account';\n"],"names":[],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAC/B,cAAc,uBAAuB;AACrC,cAAc,iBAAiB"}
@@ -0,0 +1,2 @@
1
+ import type { CollectionBeforeChangeHook } from 'payload';
2
+ export declare function getOnVerifiedChangeHook(): CollectionBeforeChangeHook;
@@ -0,0 +1,17 @@
1
+ export function getOnVerifiedChangeHook() {
2
+ const hook = async ({ data, originalDoc })=>{
3
+ const isVerifiedChangingToTrue = !!data._verified && !originalDoc?._verified;
4
+ const isEmailVerifiedChangingToTrue = !!data.emailVerified && !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=on-verified-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.ts"],"sourcesContent":["import type { CollectionBeforeChangeHook } from 'payload';\n\nexport function getOnVerifiedChangeHook() {\n const hook: CollectionBeforeChangeHook = async ({ data, originalDoc }) => {\n const isVerifiedChangingToTrue = !!data._verified && !originalDoc?._verified;\n const isEmailVerifiedChangingToTrue = !!data.emailVerified && !originalDoc?.emailVerified;\n\n if (!isVerifiedChangingToTrue && !isEmailVerifiedChangingToTrue) {\n return data;\n }\n\n return {\n ...data,\n _verified: true,\n emailVerified: true,\n } as typeof data;\n };\n\n return hook;\n}\n"],"names":["getOnVerifiedChangeHook","hook","data","originalDoc","isVerifiedChangingToTrue","_verified","isEmailVerifiedChangingToTrue","emailVerified"],"mappings":"AAEA,OAAO,SAASA;IACd,MAAMC,OAAmC,OAAO,EAAEC,IAAI,EAAEC,WAAW,EAAE;QACnE,MAAMC,2BAA2B,CAAC,CAACF,KAAKG,SAAS,IAAI,CAACF,aAAaE;QACnE,MAAMC,gCAAgC,CAAC,CAACJ,KAAKK,aAAa,IAAI,CAACJ,aAAaI;QAE5E,IAAI,CAACH,4BAA4B,CAACE,+BAA+B;YAC/D,OAAOJ;QACT;QAEA,OAAO;YACL,GAAGA,IAAI;YACPG,WAAW;YACXE,eAAe;QACjB;IACF;IAEA,OAAON;AACT"}
@@ -0,0 +1,2 @@
1
+ import type { CollectionAfterChangeHook } from 'payload';
2
+ export declare function getSyncAccountHook(): CollectionAfterChangeHook;
@@ -0,0 +1,91 @@
1
+ import { BETTER_AUTH_CONTEXT_KEY } from "@/better-auth/adapter";
2
+ import { baModelKey } from "@/better-auth/plugin/constants";
3
+ import { getCollectionByModelKey, getCollectionFieldNameByFieldKey } from "@/better-auth/plugin/helpers/get-collection";
4
+ export function getSyncAccountHook() {
5
+ const hook = async ({ context, doc, operation, req })=>{
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
+ depth: 0,
18
+ id: doc.id,
19
+ req,
20
+ showHiddenFields: true
21
+ });
22
+ const userAny = user;
23
+ if (!userAny || !userAny.hash || !userAny.salt) return doc;
24
+ const passwordValue = `${userAny.salt}:${userAny.hash}`;
25
+ if (operation === 'create' && !(BETTER_AUTH_CONTEXT_KEY in context)) {
26
+ try {
27
+ await req.payload.create({
28
+ collection: accountCollection.slug,
29
+ context: {
30
+ syncAccountHook: true
31
+ },
32
+ data: {
33
+ [accountIdFieldName]: doc.id.toString(),
34
+ [passwordFieldName]: passwordValue,
35
+ [providerIdFieldName]: 'credential',
36
+ [userIdFieldName]: doc.id
37
+ },
38
+ req
39
+ });
40
+ } catch (error) {
41
+ console.error('Failed to create account for user:', error);
42
+ }
43
+ }
44
+ if (operation === 'update') {
45
+ try {
46
+ const accounts = await req.payload.find({
47
+ collection: accountCollection.slug,
48
+ context: {
49
+ syncAccountHook: true
50
+ },
51
+ depth: 0,
52
+ req,
53
+ where: {
54
+ and: [
55
+ {
56
+ [userIdFieldName]: {
57
+ equals: doc.id
58
+ }
59
+ },
60
+ {
61
+ [providerIdFieldName]: {
62
+ equals: 'credential'
63
+ }
64
+ }
65
+ ]
66
+ }
67
+ });
68
+ const account = accounts.docs.at(0);
69
+ if (account) {
70
+ await req.payload.update({
71
+ collection: accountCollection.slug,
72
+ context: {
73
+ syncAccountHook: true
74
+ },
75
+ data: {
76
+ [passwordFieldName]: passwordValue
77
+ },
78
+ id: account.id,
79
+ req
80
+ });
81
+ }
82
+ } catch (error) {
83
+ console.error('Failed to sync hash/salt to account:', error);
84
+ }
85
+ }
86
+ return doc;
87
+ };
88
+ return hook;
89
+ }
90
+
91
+ //# sourceMappingURL=sync-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/hooks/sync-account.ts"],"sourcesContent":["import { BETTER_AUTH_CONTEXT_KEY } from '@/better-auth/adapter';\nimport { baModelKey } from '@/better-auth/plugin/constants';\nimport {\n getCollectionByModelKey,\n getCollectionFieldNameByFieldKey,\n} from '@/better-auth/plugin/helpers/get-collection';\n\nimport type { CollectionAfterChangeHook, CollectionSlug } from 'payload';\n\nexport function getSyncAccountHook(): CollectionAfterChangeHook {\n const hook: CollectionAfterChangeHook = async ({ context, doc, operation, req }) => {\n if (context?.syncPasswordToUser) return doc;\n\n if (operation !== 'create' && operation !== 'update') return doc;\n\n const collections = req.payload.collections;\n const userCollection = getCollectionByModelKey(collections, baModelKey.user);\n const accountCollection = getCollectionByModelKey(collections, baModelKey.account);\n\n const userIdFieldName = getCollectionFieldNameByFieldKey(\n accountCollection,\n baModelKey.account,\n 'userId'\n );\n const accountIdFieldName = getCollectionFieldNameByFieldKey(\n accountCollection,\n baModelKey.account,\n 'accountId'\n );\n const providerIdFieldName = getCollectionFieldNameByFieldKey(\n accountCollection,\n baModelKey.account,\n 'providerId'\n );\n const passwordFieldName = getCollectionFieldNameByFieldKey(\n accountCollection,\n baModelKey.account,\n 'password'\n );\n\n const user = await req.payload.findByID({\n collection: userCollection.slug as unknown as CollectionSlug,\n depth: 0,\n id: doc.id,\n req,\n showHiddenFields: true,\n });\n\n const userAny = user as any;\n if (!userAny || !userAny.hash || !userAny.salt) return doc;\n\n const passwordValue = `${userAny.salt}:${userAny.hash}`;\n\n if (operation === 'create' && !(BETTER_AUTH_CONTEXT_KEY in context)) {\n try {\n await req.payload.create({\n collection: accountCollection.slug as unknown as CollectionSlug,\n context: { syncAccountHook: true },\n data: {\n [accountIdFieldName]: doc.id.toString(),\n [passwordFieldName]: passwordValue,\n [providerIdFieldName]: 'credential',\n [userIdFieldName]: doc.id,\n },\n req,\n });\n } catch (error) {\n console.error('Failed to create account for user:', error);\n }\n }\n\n if (operation === 'update') {\n try {\n const accounts = await req.payload.find({\n collection: accountCollection.slug as unknown as CollectionSlug,\n context: { syncAccountHook: true },\n depth: 0,\n req,\n where: {\n and: [\n { [userIdFieldName]: { equals: doc.id } },\n { [providerIdFieldName]: { equals: 'credential' } },\n ],\n },\n });\n\n const account = accounts.docs.at(0);\n if (account) {\n await req.payload.update({\n collection: accountCollection.slug as unknown as CollectionSlug,\n context: { syncAccountHook: true },\n data: {\n [passwordFieldName]: passwordValue,\n },\n id: account.id,\n req,\n });\n }\n } catch (error) {\n console.error('Failed to sync hash/salt to account:', error);\n }\n }\n\n return doc;\n };\n\n return hook as CollectionAfterChangeHook;\n}\n"],"names":["BETTER_AUTH_CONTEXT_KEY","baModelKey","getCollectionByModelKey","getCollectionFieldNameByFieldKey","getSyncAccountHook","hook","context","doc","operation","req","syncPasswordToUser","collections","payload","userCollection","user","accountCollection","account","userIdFieldName","accountIdFieldName","providerIdFieldName","passwordFieldName","findByID","collection","slug","depth","id","showHiddenFields","userAny","hash","salt","passwordValue","create","syncAccountHook","data","toString","error","console","accounts","find","where","and","equals","docs","at","update"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,wBAAwB;AAChE,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SACEC,uBAAuB,EACvBC,gCAAgC,QAC3B,8CAA8C;AAIrD,OAAO,SAASC;IACd,MAAMC,OAAkC,OAAO,EAAEC,OAAO,EAAEC,GAAG,EAAEC,SAAS,EAAEC,GAAG,EAAE;QAC7E,IAAIH,SAASI,oBAAoB,OAAOH;QAExC,IAAIC,cAAc,YAAYA,cAAc,UAAU,OAAOD;QAE7D,MAAMI,cAAcF,IAAIG,OAAO,CAACD,WAAW;QAC3C,MAAME,iBAAiBX,wBAAwBS,aAAaV,WAAWa,IAAI;QAC3E,MAAMC,oBAAoBb,wBAAwBS,aAAaV,WAAWe,OAAO;QAEjF,MAAMC,kBAAkBd,iCACtBY,mBACAd,WAAWe,OAAO,EAClB;QAEF,MAAME,qBAAqBf,iCACzBY,mBACAd,WAAWe,OAAO,EAClB;QAEF,MAAMG,sBAAsBhB,iCAC1BY,mBACAd,WAAWe,OAAO,EAClB;QAEF,MAAMI,oBAAoBjB,iCACxBY,mBACAd,WAAWe,OAAO,EAClB;QAGF,MAAMF,OAAO,MAAML,IAAIG,OAAO,CAACS,QAAQ,CAAC;YACtCC,YAAYT,eAAeU,IAAI;YAC/BC,OAAO;YACPC,IAAIlB,IAAIkB,EAAE;YACVhB;YACAiB,kBAAkB;QACpB;QAEA,MAAMC,UAAUb;QAChB,IAAI,CAACa,WAAW,CAACA,QAAQC,IAAI,IAAI,CAACD,QAAQE,IAAI,EAAE,OAAOtB;QAEvD,MAAMuB,gBAAgB,GAAGH,QAAQE,IAAI,CAAC,CAAC,EAAEF,QAAQC,IAAI,EAAE;QAEvD,IAAIpB,cAAc,YAAY,CAAER,CAAAA,2BAA2BM,OAAM,GAAI;YACnE,IAAI;gBACF,MAAMG,IAAIG,OAAO,CAACmB,MAAM,CAAC;oBACvBT,YAAYP,kBAAkBQ,IAAI;oBAClCjB,SAAS;wBAAE0B,iBAAiB;oBAAK;oBACjCC,MAAM;wBACJ,CAACf,mBAAmB,EAAEX,IAAIkB,EAAE,CAACS,QAAQ;wBACrC,CAACd,kBAAkB,EAAEU;wBACrB,CAACX,oBAAoB,EAAE;wBACvB,CAACF,gBAAgB,EAAEV,IAAIkB,EAAE;oBAC3B;oBACAhB;gBACF;YACF,EAAE,OAAO0B,OAAO;gBACdC,QAAQD,KAAK,CAAC,sCAAsCA;YACtD;QACF;QAEA,IAAI3B,cAAc,UAAU;YAC1B,IAAI;gBACF,MAAM6B,WAAW,MAAM5B,IAAIG,OAAO,CAAC0B,IAAI,CAAC;oBACtChB,YAAYP,kBAAkBQ,IAAI;oBAClCjB,SAAS;wBAAE0B,iBAAiB;oBAAK;oBACjCR,OAAO;oBACPf;oBACA8B,OAAO;wBACLC,KAAK;4BACH;gCAAE,CAACvB,gBAAgB,EAAE;oCAAEwB,QAAQlC,IAAIkB,EAAE;gCAAC;4BAAE;4BACxC;gCAAE,CAACN,oBAAoB,EAAE;oCAAEsB,QAAQ;gCAAa;4BAAE;yBACnD;oBACH;gBACF;gBAEA,MAAMzB,UAAUqB,SAASK,IAAI,CAACC,EAAE,CAAC;gBACjC,IAAI3B,SAAS;oBACX,MAAMP,IAAIG,OAAO,CAACgC,MAAM,CAAC;wBACvBtB,YAAYP,kBAAkBQ,IAAI;wBAClCjB,SAAS;4BAAE0B,iBAAiB;wBAAK;wBACjCC,MAAM;4BACJ,CAACb,kBAAkB,EAAEU;wBACvB;wBACAL,IAAIT,QAAQS,EAAE;wBACdhB;oBACF;gBACF;YACF,EAAE,OAAO0B,OAAO;gBACdC,QAAQD,KAAK,CAAC,wCAAwCA;YACxD;QACF;QAEA,OAAO5B;IACT;IAEA,OAAOF;AACT"}
@@ -0,0 +1,3 @@
1
+ import type { CollectionConfig } from 'payload';
2
+ import type { BuildCollectionProps } from '../../../types';
3
+ export declare function buildUsersCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;