@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,4 @@
1
+ import type { TextFieldClientProps } from 'payload';
2
+ import type React from 'react';
3
+ declare const AdminInviteTokenField: React.FC<TextFieldClientProps>;
4
+ export default AdminInviteTokenField;
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, TextInput, useField, useFormFields } from "@payloadcms/ui";
4
+ const AdminInviteTokenField = (props)=>{
5
+ const { path } = props;
6
+ const { setValue } = useField({
7
+ path
8
+ });
9
+ // Using any because PayloadCMS useFormFields returns dynamic field structures that vary by form
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const token = useFormFields(([fields])=>fields.token);
12
+ const value = token.value ?? '';
13
+ return /*#__PURE__*/ _jsxs("div", {
14
+ children: [
15
+ /*#__PURE__*/ _jsx(Button, {
16
+ onClick: ()=>setValue(crypto.randomUUID()),
17
+ children: "Generate Token"
18
+ }),
19
+ /*#__PURE__*/ _jsx(TextInput, {
20
+ path: path,
21
+ readOnly: true,
22
+ label: "Token",
23
+ placeholder: "Click 'Generate Token' to create a token",
24
+ value: value
25
+ })
26
+ ]
27
+ });
28
+ };
29
+ export default AdminInviteTokenField;
30
+
31
+ //# sourceMappingURL=token-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/payload/components/token-field.tsx"],"sourcesContent":["'use client';\n\nimport { Button, TextInput, useField, useFormFields } from '@payloadcms/ui';\nimport type { TextFieldClientProps } from 'payload';\nimport type React from 'react';\n\nconst AdminInviteTokenField: React.FC<TextFieldClientProps> = props => {\n const { path } = props;\n const { setValue } = useField({ path });\n // Using any because PayloadCMS useFormFields returns dynamic field structures that vary by form\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const token = useFormFields(([fields]) => (fields as any).token);\n const value = (token.value as string) ?? '';\n\n return (\n <div>\n <Button onClick={() => setValue(crypto.randomUUID())}>Generate Token</Button>\n <TextInput\n path={path}\n readOnly\n label='Token'\n placeholder=\"Click 'Generate Token' to create a token\"\n value={value}\n />\n </div>\n );\n};\n\nexport default AdminInviteTokenField;\n"],"names":["Button","TextInput","useField","useFormFields","AdminInviteTokenField","props","path","setValue","token","fields","value","div","onClick","crypto","randomUUID","readOnly","label","placeholder"],"mappings":"AAAA;;AAEA,SAASA,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,iBAAiB;AAI5E,MAAMC,wBAAwDC,CAAAA;IAC5D,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,MAAM,EAAEE,QAAQ,EAAE,GAAGL,SAAS;QAAEI;IAAK;IACrC,gGAAgG;IAChG,8DAA8D;IAC9D,MAAME,QAAQL,cAAc,CAAC,CAACM,OAAO,GAAK,AAACA,OAAeD,KAAK;IAC/D,MAAME,QAAQ,AAACF,MAAME,KAAK,IAAe;IAEzC,qBACE,MAACC;;0BACC,KAACX;gBAAOY,SAAS,IAAML,SAASM,OAAOC,UAAU;0BAAK;;0BACtD,KAACb;gBACCK,MAAMA;gBACNS,QAAQ;gBACRC,OAAM;gBACNC,aAAY;gBACZP,OAAOA;;;;AAIf;AAEA,eAAeN,sBAAsB"}
@@ -0,0 +1,8 @@
1
+ import './index.scss';
2
+ import React from 'react';
3
+ type TwoFactorAuthProps = {
4
+ baseURL?: string;
5
+ basePath?: string;
6
+ };
7
+ export declare const TwoFactorAuth: React.FC<TwoFactorAuthProps>;
8
+ export {};
@@ -0,0 +1,300 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import "./index.scss";
4
+ import { zodResolver } from "@hookform/resolvers/zod";
5
+ import { Button, Modal, toast, useField, useFormFields, useModal } from "@payloadcms/ui";
6
+ import { twoFactorClient } from "better-auth/client/plugins";
7
+ import { createAuthClient } from "better-auth/react";
8
+ import { Copy, X as XIcon } from "lucide-react";
9
+ import dynamic from "next/dynamic";
10
+ import { FormProvider, useForm } from "react-hook-form";
11
+ const QRCodeSVG = dynamic(()=>import("qrcode.react").then((m)=>m.QRCodeSVG), {
12
+ ssr: false
13
+ });
14
+ import React, { useMemo, useState } from "react";
15
+ import { z } from "zod";
16
+ const baseClass = 'two-factor-auth-modal';
17
+ export const TwoFactorAuth = ({ baseURL, basePath })=>{
18
+ const [totpURI, setTotpURI] = useState('');
19
+ const [backupCodes, setBackupCodes] = useState(null);
20
+ const [formState, setFormState] = useState('enable');
21
+ const { openModal, closeModal } = useModal();
22
+ const twoFactorEnabledField = useFormFields(([fields])=>fields.twoFactorEnabled);
23
+ const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);
24
+ const { setValue: setTwoFactorEnabled } = useField({
25
+ path: 'twoFactorEnabled'
26
+ });
27
+ const authClient = useMemo(()=>{
28
+ const options = {
29
+ plugins: [
30
+ twoFactorClient()
31
+ ]
32
+ };
33
+ if (baseURL) options.baseURL = baseURL;
34
+ if (basePath) options.basePath = basePath;
35
+ return createAuthClient(options);
36
+ }, []);
37
+ const copyURI = async ()=>{
38
+ if (!totpURI) return;
39
+ try {
40
+ await navigator.clipboard.writeText(totpURI);
41
+ toast.success('Copied');
42
+ } catch {
43
+ toast.error('Failed to copy');
44
+ }
45
+ };
46
+ // Form Schemas
47
+ const passwordSchema = z.object({
48
+ password: z.string().min(1, 'Required')
49
+ });
50
+ const otpSchema = z.object({
51
+ otp: z.string().length(6, 'Code must be 6 digits').refine((val)=>/^\d{6}$/.test(val), 'Code must be numeric')
52
+ });
53
+ const EnableForm = ()=>{
54
+ const methods = useForm({
55
+ defaultValues: {
56
+ password: ''
57
+ },
58
+ resolver: zodResolver(passwordSchema),
59
+ mode: 'onSubmit'
60
+ });
61
+ const onSubmit = async (value)=>{
62
+ const { data, error } = await authClient.twoFactor.enable({
63
+ password: value.password
64
+ });
65
+ if (error) {
66
+ toast.error(error.message);
67
+ return;
68
+ }
69
+ setTotpURI(data.totpURI);
70
+ if (data && 'backupCodes' in data && data.backupCodes) {
71
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
72
+ } else {
73
+ setBackupCodes(null);
74
+ }
75
+ setFormState('verify');
76
+ };
77
+ return /*#__PURE__*/ _jsx(FormProvider, {
78
+ ...methods,
79
+ children: /*#__PURE__*/ _jsx("form", {
80
+ onSubmit: methods.handleSubmit(onSubmit),
81
+ className: "two-factor-enable-form",
82
+ children: /*#__PURE__*/ _jsx("div", {
83
+ className: "two-factor-enable-form__inputWrap",
84
+ children: /*#__PURE__*/ _jsx(Button, {
85
+ type: "submit",
86
+ children: "Enable"
87
+ })
88
+ })
89
+ })
90
+ });
91
+ };
92
+ const VerifyForm = ()=>{
93
+ const methods = useForm({
94
+ defaultValues: {
95
+ otp: ''
96
+ },
97
+ resolver: zodResolver(otpSchema),
98
+ mode: 'onSubmit'
99
+ });
100
+ const onSubmit = async (value)=>{
101
+ const { data, error } = await authClient.twoFactor.verifyTotp({
102
+ code: value.otp
103
+ });
104
+ if (error) {
105
+ toast.error(error.message);
106
+ return;
107
+ }
108
+ if (data && 'backupCodes' in data && data.backupCodes) {
109
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
110
+ }
111
+ toast.success('Two‑factor verified & enabled');
112
+ setTwoFactorEnabled(true);
113
+ setFormState('backupCodes');
114
+ };
115
+ return /*#__PURE__*/ _jsx(FormProvider, {
116
+ ...methods,
117
+ children: /*#__PURE__*/ _jsx("form", {
118
+ onSubmit: methods.handleSubmit(onSubmit),
119
+ className: "two-factor-verify-form",
120
+ children: /*#__PURE__*/ _jsx("div", {
121
+ className: "tf__inputWrap",
122
+ children: /*#__PURE__*/ _jsx(Button, {
123
+ type: "submit",
124
+ children: "Verify"
125
+ })
126
+ })
127
+ })
128
+ });
129
+ };
130
+ const DisableForm = ()=>{
131
+ const methods = useForm({
132
+ defaultValues: {
133
+ password: ''
134
+ },
135
+ resolver: zodResolver(passwordSchema),
136
+ mode: 'onSubmit'
137
+ });
138
+ const onSubmit = async (value)=>{
139
+ await authClient.twoFactor.disable({
140
+ password: value.password
141
+ }, {
142
+ onSuccess () {
143
+ toast.success('Two‑factor disabled');
144
+ setTwoFactorEnabled(false);
145
+ closeModal('two-factor-auth-modal');
146
+ return undefined;
147
+ },
148
+ onError (ctx) {
149
+ toast.error(ctx.error.message);
150
+ }
151
+ });
152
+ };
153
+ return /*#__PURE__*/ _jsx(FormProvider, {
154
+ ...methods,
155
+ children: /*#__PURE__*/ _jsx("form", {
156
+ onSubmit: methods.handleSubmit(onSubmit),
157
+ className: "two-factor-disable-form mt-4",
158
+ children: /*#__PURE__*/ _jsx("div", {
159
+ className: "two-factor-disable-form__inputWrap",
160
+ children: /*#__PURE__*/ _jsx(Button, {
161
+ type: "submit",
162
+ children: "Disable Two‑Factor"
163
+ })
164
+ })
165
+ })
166
+ });
167
+ };
168
+ return /*#__PURE__*/ _jsxs("div", {
169
+ className: "two-factor-auth-field",
170
+ children: [
171
+ twoFactorEnabled ? /*#__PURE__*/ _jsx(Button, {
172
+ onClick: ()=>{
173
+ setFormState('disable');
174
+ openModal('two-factor-auth-modal');
175
+ },
176
+ size: "medium",
177
+ buttonStyle: "pill",
178
+ children: "Disable Two-Factor"
179
+ }) : /*#__PURE__*/ _jsx(Button, {
180
+ onClick: ()=>{
181
+ setFormState('enable');
182
+ openModal('two-factor-auth-modal');
183
+ },
184
+ size: "medium",
185
+ buttonStyle: "pill",
186
+ children: "Enable Two-Factor"
187
+ }),
188
+ /*#__PURE__*/ _jsx(Modal, {
189
+ slug: "two-factor-auth-modal",
190
+ className: baseClass,
191
+ closeOnBlur: true,
192
+ children: /*#__PURE__*/ _jsxs("div", {
193
+ className: `${baseClass}__wrapper`,
194
+ children: [
195
+ /*#__PURE__*/ _jsx(Button, {
196
+ onClick: ()=>closeModal('two-factor-auth-modal'),
197
+ buttonStyle: "icon-label",
198
+ size: "small",
199
+ className: `${baseClass}__close-button`,
200
+ children: /*#__PURE__*/ _jsx(XIcon, {
201
+ size: 24
202
+ })
203
+ }),
204
+ /*#__PURE__*/ _jsxs("div", {
205
+ className: `${baseClass}__content`,
206
+ style: {
207
+ maxWidth: '38rem'
208
+ },
209
+ children: [
210
+ formState === 'enable' && /*#__PURE__*/ _jsxs(_Fragment, {
211
+ children: [
212
+ /*#__PURE__*/ _jsx("h2", {
213
+ children: "Enable Two‑Factor"
214
+ }),
215
+ /*#__PURE__*/ _jsx(EnableForm, {})
216
+ ]
217
+ }),
218
+ formState === 'verify' && /*#__PURE__*/ _jsxs(_Fragment, {
219
+ children: [
220
+ /*#__PURE__*/ _jsx("h2", {
221
+ children: "Verify Two‑Factor"
222
+ }),
223
+ /*#__PURE__*/ _jsxs("div", {
224
+ className: "two-factor-auth-modal__verify-block",
225
+ children: [
226
+ /*#__PURE__*/ _jsx("p", {
227
+ children: "Scan the QR code with your authenticator app or copy the URI."
228
+ }),
229
+ /*#__PURE__*/ _jsx("div", {
230
+ className: "two-factor-auth-modal__qrcode",
231
+ children: /*#__PURE__*/ _jsx(QRCodeSVG, {
232
+ value: totpURI,
233
+ size: 200
234
+ })
235
+ }),
236
+ /*#__PURE__*/ _jsxs(Button, {
237
+ size: "small",
238
+ buttonStyle: "transparent",
239
+ onClick: copyURI,
240
+ className: "two-factor-auth-modal__copy-btn",
241
+ children: [
242
+ /*#__PURE__*/ _jsx(Copy, {
243
+ size: 18,
244
+ className: "two-factor-auth-modal__copy-icon"
245
+ }),
246
+ " Copy URI"
247
+ ]
248
+ }),
249
+ /*#__PURE__*/ _jsx(VerifyForm, {})
250
+ ]
251
+ })
252
+ ]
253
+ }),
254
+ formState === 'backupCodes' && backupCodes && /*#__PURE__*/ _jsxs(_Fragment, {
255
+ children: [
256
+ /*#__PURE__*/ _jsx("h2", {
257
+ children: "Backup Codes"
258
+ }),
259
+ /*#__PURE__*/ _jsxs("div", {
260
+ className: "two-factor-auth-modal__backup-codes",
261
+ children: [
262
+ /*#__PURE__*/ _jsx("ul", {
263
+ children: backupCodes.map((code, i)=>/*#__PURE__*/ _jsx("li", {
264
+ className: "two-factor-auth-modal__backup-code",
265
+ children: code
266
+ }, `backup-code-${i}-${code}`))
267
+ }),
268
+ /*#__PURE__*/ _jsx("p", {
269
+ className: "two-factor-auth-modal__backup-desc",
270
+ children: "Store these codes in a safe place. Each code can be used once if you lose access to your authenticator."
271
+ })
272
+ ]
273
+ }),
274
+ /*#__PURE__*/ _jsx(Button, {
275
+ onClick: ()=>closeModal('two-factor-auth-modal'),
276
+ buttonStyle: "primary",
277
+ size: "large",
278
+ className: "two-factor-auth-modal__backup-codes-close-button",
279
+ children: "Saved them!"
280
+ })
281
+ ]
282
+ }),
283
+ formState === 'disable' && /*#__PURE__*/ _jsxs(_Fragment, {
284
+ children: [
285
+ /*#__PURE__*/ _jsx("h2", {
286
+ children: "Two‑Factor Authentication"
287
+ }),
288
+ /*#__PURE__*/ _jsx(DisableForm, {})
289
+ ]
290
+ })
291
+ ]
292
+ })
293
+ ]
294
+ })
295
+ })
296
+ ]
297
+ });
298
+ };
299
+
300
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/better-auth/plugin/payload/components/two-factor-auth/index.tsx"],"sourcesContent":["'use client';\n\nimport './index.scss';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Button, Modal, toast, useField, useFormFields, useModal } from '@payloadcms/ui';\nimport { twoFactorClient } from 'better-auth/client/plugins';\nimport { createAuthClient } from 'better-auth/react';\nimport { Copy, X as XIcon } from 'lucide-react';\nimport dynamic from 'next/dynamic';\nimport { FormProvider, useForm } from 'react-hook-form';\nconst QRCodeSVG = dynamic(() => import('qrcode.react').then(m => m.QRCodeSVG), {\n ssr: false,\n});\nimport React, { useMemo, useState } from 'react';\nimport { z } from 'zod';\n\nconst baseClass = 'two-factor-auth-modal';\n\ntype TwoFactorAuthProps = {\n baseURL?: string;\n basePath?: string;\n};\n\nexport const TwoFactorAuth: React.FC<TwoFactorAuthProps> = ({ baseURL, basePath }) => {\n const [totpURI, setTotpURI] = useState('');\n const [backupCodes, setBackupCodes] = useState<string[] | null>(null);\n const [formState, setFormState] = useState<'enable' | 'verify' | 'backupCodes' | 'disable'>(\n 'enable'\n );\n const { openModal, closeModal } = useModal();\n const twoFactorEnabledField = useFormFields(([fields]) => (fields as any).twoFactorEnabled);\n const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);\n const { setValue: setTwoFactorEnabled } = useField({ path: 'twoFactorEnabled' });\n\n const authClient = useMemo(() => {\n const options: any = { plugins: [twoFactorClient() as any] };\n if (baseURL) options.baseURL = baseURL;\n if (basePath) options.basePath = basePath;\n return createAuthClient(options);\n }, []);\n\n const copyURI = async () => {\n if (!totpURI) return;\n try {\n await navigator.clipboard.writeText(totpURI);\n toast.success('Copied');\n } catch {\n toast.error('Failed to copy');\n }\n };\n\n // Form Schemas\n const passwordSchema = z.object({\n password: z.string().min(1, 'Required'), // simple required validation\n });\n\n const otpSchema = z.object({\n otp: z\n .string()\n .length(6, 'Code must be 6 digits')\n .refine(val => /^\\d{6}$/.test(val), 'Code must be numeric'),\n });\n\n const EnableForm = () => {\n const methods = useForm({\n defaultValues: { password: '' },\n resolver: zodResolver(passwordSchema),\n mode: 'onSubmit',\n });\n\n const onSubmit = async (value: { password: string }) => {\n const { data, error } = await (authClient as any).twoFactor.enable({\n password: value.password,\n });\n if (error) {\n toast.error(error.message);\n return;\n }\n setTotpURI(data.totpURI);\n if (data && 'backupCodes' in data && data.backupCodes) {\n setBackupCodes(\n Array.isArray(data.backupCodes)\n ? data.backupCodes\n : String(data.backupCodes).split(/\\s+/).filter(Boolean)\n );\n } else {\n setBackupCodes(null);\n }\n setFormState('verify');\n };\n\n return (\n <FormProvider {...methods}>\n <form onSubmit={methods.handleSubmit(onSubmit)} className='two-factor-enable-form'>\n <div className='two-factor-enable-form__inputWrap'>\n <Button type='submit'>Enable</Button>\n </div>\n </form>\n </FormProvider>\n );\n };\n\n const VerifyForm = () => {\n const methods = useForm({\n defaultValues: { otp: '' },\n resolver: zodResolver(otpSchema),\n mode: 'onSubmit',\n });\n\n const onSubmit = async (value: { otp: string }) => {\n const { data, error } = await (authClient as any).twoFactor.verifyTotp({ code: value.otp });\n if (error) {\n toast.error(error.message);\n return;\n }\n if (data && 'backupCodes' in data && data.backupCodes) {\n setBackupCodes(\n Array.isArray(data.backupCodes)\n ? data.backupCodes\n : String(data.backupCodes).split(/\\s+/).filter(Boolean)\n );\n }\n toast.success('Two‑factor verified & enabled');\n setTwoFactorEnabled(true);\n setFormState('backupCodes');\n };\n\n return (\n <FormProvider {...methods}>\n <form onSubmit={methods.handleSubmit(onSubmit)} className='two-factor-verify-form'>\n <div className='tf__inputWrap'>\n <Button type='submit'>Verify</Button>\n </div>\n </form>\n </FormProvider>\n );\n };\n\n const DisableForm = () => {\n const methods = useForm({\n defaultValues: { password: '' },\n resolver: zodResolver(passwordSchema),\n mode: 'onSubmit',\n });\n\n const onSubmit = async (value: { password: string }) => {\n await (authClient as any).twoFactor.disable(\n { password: value.password },\n {\n onSuccess() {\n toast.success('Two‑factor disabled');\n setTwoFactorEnabled(false);\n closeModal('two-factor-auth-modal');\n return undefined;\n },\n onError(ctx: any) {\n toast.error(ctx.error.message);\n },\n }\n );\n };\n\n return (\n <FormProvider {...methods}>\n <form onSubmit={methods.handleSubmit(onSubmit)} className='two-factor-disable-form mt-4'>\n <div className='two-factor-disable-form__inputWrap'>\n <Button type='submit'>Disable Two‑Factor</Button>\n </div>\n </form>\n </FormProvider>\n );\n };\n\n return (\n <div className='two-factor-auth-field'>\n {twoFactorEnabled ? (\n <Button\n onClick={() => {\n setFormState('disable');\n openModal('two-factor-auth-modal');\n }}\n size='medium'\n buttonStyle='pill'\n >\n Disable Two-Factor\n </Button>\n ) : (\n <Button\n onClick={() => {\n setFormState('enable');\n openModal('two-factor-auth-modal');\n }}\n size='medium'\n buttonStyle='pill'\n >\n Enable Two-Factor\n </Button>\n )}\n <Modal slug='two-factor-auth-modal' className={baseClass} closeOnBlur>\n <div className={`${baseClass}__wrapper`}>\n <Button\n onClick={() => closeModal('two-factor-auth-modal')}\n buttonStyle='icon-label'\n size='small'\n className={`${baseClass}__close-button`}\n >\n <XIcon size={24} />\n </Button>\n\n <div className={`${baseClass}__content`} style={{ maxWidth: '38rem' }}>\n {formState === 'enable' && (\n <>\n <h2>Enable Two‑Factor</h2>\n <EnableForm />\n </>\n )}\n {formState === 'verify' && (\n <>\n <h2>Verify Two‑Factor</h2>\n <div className='two-factor-auth-modal__verify-block'>\n <p>Scan the QR code with your authenticator app or copy the URI.</p>\n <div className='two-factor-auth-modal__qrcode'>\n <QRCodeSVG value={totpURI} size={200} />\n </div>\n <Button\n size='small'\n buttonStyle='transparent'\n onClick={copyURI}\n className='two-factor-auth-modal__copy-btn'\n >\n <Copy size={18} className='two-factor-auth-modal__copy-icon' /> Copy URI\n </Button>\n <VerifyForm />\n </div>\n </>\n )}\n {formState === 'backupCodes' && backupCodes && (\n <>\n <h2>Backup Codes</h2>\n <div className='two-factor-auth-modal__backup-codes'>\n <ul>\n {backupCodes.map((code, i) => (\n <li\n key={`backup-code-${i}-${code}`}\n className='two-factor-auth-modal__backup-code'\n >\n {code}\n </li>\n ))}\n </ul>\n <p className='two-factor-auth-modal__backup-desc'>\n Store these codes in a safe place. Each code can be used once if you lose access\n to your authenticator.\n </p>\n </div>\n <Button\n onClick={() => closeModal('two-factor-auth-modal')}\n buttonStyle='primary'\n size='large'\n className='two-factor-auth-modal__backup-codes-close-button'\n >\n Saved them!\n </Button>\n </>\n )}\n {formState === 'disable' && (\n <>\n <h2>Two‑Factor Authentication</h2>\n <DisableForm />\n </>\n )}\n </div>\n </div>\n </Modal>\n </div>\n );\n};\n"],"names":["zodResolver","Button","Modal","toast","useField","useFormFields","useModal","twoFactorClient","createAuthClient","Copy","X","XIcon","dynamic","FormProvider","useForm","QRCodeSVG","then","m","ssr","React","useMemo","useState","z","baseClass","TwoFactorAuth","baseURL","basePath","totpURI","setTotpURI","backupCodes","setBackupCodes","formState","setFormState","openModal","closeModal","twoFactorEnabledField","fields","twoFactorEnabled","Boolean","value","setValue","setTwoFactorEnabled","path","authClient","options","plugins","copyURI","navigator","clipboard","writeText","success","error","passwordSchema","object","password","string","min","otpSchema","otp","length","refine","val","test","EnableForm","methods","defaultValues","resolver","mode","onSubmit","data","twoFactor","enable","message","Array","isArray","String","split","filter","form","handleSubmit","className","div","type","VerifyForm","verifyTotp","code","DisableForm","disable","onSuccess","undefined","onError","ctx","onClick","size","buttonStyle","slug","closeOnBlur","style","maxWidth","h2","p","ul","map","i","li"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { AdminButtons } from '../components/admin-buttons';
2
+ import { AdminInviteButton } from '../components/admin-invite-button';
3
+ import { LogoutButton } from '../components/logout-button';
4
+ import { AdminSocialProviderButtons } from '../components/social-provider-buttons';
5
+ import { TwoFactorAuth } from '../components/two-factor-auth';
6
+ export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons, TwoFactorAuth };
@@ -0,0 +1,8 @@
1
+ import { AdminButtons } from "../components/admin-buttons";
2
+ import { AdminInviteButton } from "../components/admin-invite-button";
3
+ import { LogoutButton } from "../components/logout-button";
4
+ import { AdminSocialProviderButtons } from "../components/social-provider-buttons";
5
+ import { TwoFactorAuth } from "../components/two-factor-auth";
6
+ export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons, TwoFactorAuth };
7
+
8
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"sourcesContent":["import { AdminButtons } from '../components/admin-buttons';\nimport { AdminInviteButton } from '../components/admin-invite-button';\nimport { LogoutButton } from '../components/logout-button';\nimport { AdminSocialProviderButtons } from '../components/social-provider-buttons';\nimport { TwoFactorAuth } from '../components/two-factor-auth';\n\nexport { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons, TwoFactorAuth };\n"],"names":["AdminButtons","AdminInviteButton","LogoutButton","AdminSocialProviderButtons","TwoFactorAuth"],"mappings":"AAAA,SAASA,YAAY,QAAQ,8BAA8B;AAC3D,SAASC,iBAAiB,QAAQ,oCAAoC;AACtE,SAASC,YAAY,QAAQ,8BAA8B;AAC3D,SAASC,0BAA0B,QAAQ,wCAAwC;AACnF,SAASC,aAAa,QAAQ,gCAAgC;AAE9D,SAASJ,YAAY,EAAEC,iBAAiB,EAAEC,YAAY,EAAEC,0BAA0B,EAAEC,aAAa,GAAG"}
@@ -0,0 +1,8 @@
1
+ import { Passkeys } from '../components/passkeys';
2
+ import RSCRedirect from '../components/rsc-redirect';
3
+ import AdminLogin from '../views/admin-login';
4
+ import AdminSignup from '../views/admin-signup';
5
+ import ForgotPassword from '../views/forgot-password';
6
+ import ResetPassword from '../views/reset-password';
7
+ import TwoFactorVerify from '../views/two-factor-verify';
8
+ export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect, TwoFactorVerify, Passkeys, };
@@ -0,0 +1,10 @@
1
+ import { Passkeys } from "../components/passkeys";
2
+ import RSCRedirect from "../components/rsc-redirect";
3
+ import AdminLogin from "../views/admin-login";
4
+ import AdminSignup from "../views/admin-signup";
5
+ import ForgotPassword from "../views/forgot-password";
6
+ import ResetPassword from "../views/reset-password";
7
+ import TwoFactorVerify from "../views/two-factor-verify";
8
+ export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect, TwoFactorVerify, Passkeys };
9
+
10
+ //# sourceMappingURL=rsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/payload/exports/rsc.ts"],"sourcesContent":["import { Passkeys } from '../components/passkeys';\nimport RSCRedirect from '../components/rsc-redirect';\nimport AdminLogin from '../views/admin-login';\nimport AdminSignup from '../views/admin-signup';\nimport ForgotPassword from '../views/forgot-password';\nimport ResetPassword from '../views/reset-password';\nimport TwoFactorVerify from '../views/two-factor-verify';\n\nexport {\n AdminSignup,\n AdminLogin,\n ForgotPassword,\n ResetPassword,\n RSCRedirect,\n TwoFactorVerify,\n Passkeys,\n};\n"],"names":["Passkeys","RSCRedirect","AdminLogin","AdminSignup","ForgotPassword","ResetPassword","TwoFactorVerify"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,yBAAyB;AAClD,OAAOC,iBAAiB,6BAA6B;AACrD,OAAOC,gBAAgB,uBAAuB;AAC9C,OAAOC,iBAAiB,wBAAwB;AAChD,OAAOC,oBAAoB,2BAA2B;AACtD,OAAOC,mBAAmB,0BAA0B;AACpD,OAAOC,qBAAqB,6BAA6B;AAEzD,SACEH,WAAW,EACXD,UAAU,EACVE,cAAc,EACdC,aAAa,EACbJ,WAAW,EACXK,eAAe,EACfN,QAAQ,GACR"}
@@ -0,0 +1,2 @@
1
+ import type { GenerateAdminInviteUrlFn } from '@/better-auth/plugin/types';
2
+ export declare const generateAdminInviteUrl: GenerateAdminInviteUrlFn;
@@ -0,0 +1,9 @@
1
+ import { adminRoutes } from "@/better-auth/plugin/constants";
2
+ export const generateAdminInviteUrl = ({ payload, token })=>{
3
+ if (!payload?.config?.serverURL) {
4
+ payload.logger.warn('payload.config.serverURL is not set. Set it to generate a full URL for the admin invite link.');
5
+ }
6
+ return `${payload.getAdminURL()}${adminRoutes.adminSignup}?token=${token}`;
7
+ };
8
+
9
+ //# sourceMappingURL=generate-admin-invite-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/payload/utils/generate-admin-invite-url.ts"],"sourcesContent":["import { adminRoutes } from '@/better-auth/plugin/constants';\nimport type { GenerateAdminInviteUrlFn } from '@/better-auth/plugin/types';\n\nexport const generateAdminInviteUrl: GenerateAdminInviteUrlFn = ({ payload, token }) => {\n if (!payload?.config?.serverURL) {\n payload.logger.warn(\n 'payload.config.serverURL is not set. Set it to generate a full URL for the admin invite link.'\n );\n }\n return `${payload.getAdminURL()}${adminRoutes.adminSignup}?token=${token}`;\n};\n"],"names":["adminRoutes","generateAdminInviteUrl","payload","token","config","serverURL","logger","warn","getAdminURL","adminSignup"],"mappings":"AAAA,SAASA,WAAW,QAAQ,iCAAiC;AAG7D,OAAO,MAAMC,yBAAmD,CAAC,EAAEC,OAAO,EAAEC,KAAK,EAAE;IACjF,IAAI,CAACD,SAASE,QAAQC,WAAW;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CACjB;IAEJ;IACA,OAAO,GAAGL,QAAQM,WAAW,KAAKR,YAAYS,WAAW,CAAC,OAAO,EAAEN,OAAO;AAC5E,EAAE"}
@@ -0,0 +1 @@
1
+ export declare const getSafeRedirect: (redirectParam: string | string[], fallback?: string) => string;
@@ -0,0 +1,22 @@
1
+ export const getSafeRedirect = (redirectParam, fallback = '/')=>{
2
+ if (typeof redirectParam !== 'string') {
3
+ return fallback;
4
+ }
5
+ // Normalize and decode the path
6
+ let redirectPath;
7
+ try {
8
+ redirectPath = decodeURIComponent(redirectParam.trim());
9
+ } catch {
10
+ return fallback; // invalid encoding
11
+ }
12
+ const isSafeRedirect = // Must start with a single forward slash (e.g., "/admin")
13
+ redirectPath.startsWith('/') && // Prevent protocol-relative URLs (e.g., "//example.com")
14
+ !redirectPath.startsWith('//') && // Prevent encoded slashes that could resolve to protocol-relative
15
+ !redirectPath.startsWith('/%2F') && // Prevent backslash-based escape attempts (e.g., "/\\/example.com", "/\\\\example.com", "/\\example.com")
16
+ !redirectPath.startsWith('/\\/') && !redirectPath.startsWith('/\\\\') && !redirectPath.startsWith('/\\') && // Prevent javascript-based schemes (e.g., "/javascript:alert(1)")
17
+ !redirectPath.toLowerCase().startsWith('/javascript:') && // Prevent attempts to redirect to full URLs using "/http:" or "/https:"
18
+ !redirectPath.toLowerCase().startsWith('/http');
19
+ return isSafeRedirect ? redirectPath : fallback;
20
+ };
21
+
22
+ //# sourceMappingURL=get-safe-redirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/payload/utils/get-safe-redirect.ts"],"sourcesContent":["export const getSafeRedirect = (\n redirectParam: string | string[],\n fallback: string = '/'\n): string => {\n if (typeof redirectParam !== 'string') {\n return fallback;\n }\n\n // Normalize and decode the path\n let redirectPath: string;\n try {\n redirectPath = decodeURIComponent(redirectParam.trim());\n } catch {\n return fallback; // invalid encoding\n }\n\n const isSafeRedirect =\n // Must start with a single forward slash (e.g., \"/admin\")\n redirectPath.startsWith('/') &&\n // Prevent protocol-relative URLs (e.g., \"//example.com\")\n !redirectPath.startsWith('//') &&\n // Prevent encoded slashes that could resolve to protocol-relative\n !redirectPath.startsWith('/%2F') &&\n // Prevent backslash-based escape attempts (e.g., \"/\\\\/example.com\", \"/\\\\\\\\example.com\", \"/\\\\example.com\")\n !redirectPath.startsWith('/\\\\/') &&\n !redirectPath.startsWith('/\\\\\\\\') &&\n !redirectPath.startsWith('/\\\\') &&\n // Prevent javascript-based schemes (e.g., \"/javascript:alert(1)\")\n !redirectPath.toLowerCase().startsWith('/javascript:') &&\n // Prevent attempts to redirect to full URLs using \"/http:\" or \"/https:\"\n !redirectPath.toLowerCase().startsWith('/http');\n\n return isSafeRedirect ? redirectPath : fallback;\n};\n"],"names":["getSafeRedirect","redirectParam","fallback","redirectPath","decodeURIComponent","trim","isSafeRedirect","startsWith","toLowerCase"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,CAC7BC,eACAC,WAAmB,GAAG;IAEtB,IAAI,OAAOD,kBAAkB,UAAU;QACrC,OAAOC;IACT;IAEA,gCAAgC;IAChC,IAAIC;IACJ,IAAI;QACFA,eAAeC,mBAAmBH,cAAcI,IAAI;IACtD,EAAE,OAAM;QACN,OAAOH,UAAU,mBAAmB;IACtC;IAEA,MAAMI,iBACJ,0DAA0D;IAC1DH,aAAaI,UAAU,CAAC,QACxB,yDAAyD;IACzD,CAACJ,aAAaI,UAAU,CAAC,SACzB,kEAAkE;IAClE,CAACJ,aAAaI,UAAU,CAAC,WACzB,0GAA0G;IAC1G,CAACJ,aAAaI,UAAU,CAAC,WACzB,CAACJ,aAAaI,UAAU,CAAC,YACzB,CAACJ,aAAaI,UAAU,CAAC,UACzB,kEAAkE;IAClE,CAACJ,aAAaK,WAAW,GAAGD,UAAU,CAAC,mBACvC,wEAAwE;IACxE,CAACJ,aAAaK,WAAW,GAAGD,UAAU,CAAC;IAEzC,OAAOD,iBAAiBH,eAAeD;AACzC,EAAE"}
@@ -0,0 +1,19 @@
1
+ import type { LoginMethod } from '@/better-auth/plugin/types';
2
+ import type { LoginWithUsernameOptions } from 'payload';
3
+ import React from 'react';
4
+ type AdminLoginClientProps = {
5
+ loginMethods: LoginMethod[];
6
+ hasUsernamePlugin: boolean;
7
+ hasPasskeyPlugin: boolean;
8
+ prefillEmail?: string;
9
+ prefillPassword?: string;
10
+ prefillUsername?: string;
11
+ searchParams: {
12
+ [key: string]: string | string[] | undefined;
13
+ };
14
+ loginWithUsername: false | LoginWithUsernameOptions;
15
+ baseURL?: string;
16
+ basePath?: string;
17
+ };
18
+ export declare const AdminLoginClient: React.FC<AdminLoginClientProps>;
19
+ export {};