@luochuanyuewu/payload-auth 1.8.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 (424) hide show
  1. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +24 -0
  2. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -0
  3. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +317 -0
  4. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +2 -0
  5. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -0
  6. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +23 -0
  7. package/dist/better-auth/adapter/generate-schema/index.d.ts +5 -0
  8. package/dist/better-auth/adapter/generate-schema/index.d.ts.map +1 -0
  9. package/dist/better-auth/adapter/generate-schema/index.js +19 -0
  10. package/dist/better-auth/adapter/generate-schema/utils.d.ts +3 -0
  11. package/dist/better-auth/adapter/generate-schema/utils.d.ts.map +1 -0
  12. package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
  13. package/dist/better-auth/adapter/index.d.ts +16 -0
  14. package/dist/better-auth/adapter/index.d.ts.map +1 -0
  15. package/dist/better-auth/adapter/index.js +717 -0
  16. package/dist/better-auth/adapter/transform/index.d.ts +31 -0
  17. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -0
  18. package/dist/better-auth/adapter/transform/index.js +729 -0
  19. package/dist/better-auth/adapter/types.d.ts +11 -0
  20. package/dist/better-auth/adapter/types.d.ts.map +1 -0
  21. package/dist/better-auth/adapter/types.js +3 -0
  22. package/dist/better-auth/generated-types.d.ts +329 -0
  23. package/dist/better-auth/generated-types.d.ts.map +1 -0
  24. package/dist/better-auth/generated-types.js +4 -0
  25. package/dist/better-auth/index.d.ts +4 -0
  26. package/dist/better-auth/index.d.ts.map +1 -0
  27. package/dist/better-auth/index.js +5 -0
  28. package/dist/better-auth/plugin/constants.d.ts +231 -0
  29. package/dist/better-auth/plugin/constants.d.ts.map +1 -0
  30. package/dist/better-auth/plugin/constants.js +259 -0
  31. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +13 -0
  32. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts.map +1 -0
  33. package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
  34. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +30 -0
  35. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -0
  36. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
  37. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +8 -0
  38. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -0
  39. package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
  40. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +6 -0
  41. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -0
  42. package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
  43. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +19 -0
  44. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts.map +1 -0
  45. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +75 -0
  46. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +6 -0
  47. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts.map +1 -0
  48. package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
  49. package/dist/better-auth/plugin/helpers/get-collection.d.ts +28 -0
  50. package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -0
  51. package/dist/better-auth/plugin/helpers/get-collection.js +49 -0
  52. package/dist/better-auth/plugin/helpers/get-ip.d.ts +3 -0
  53. package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -0
  54. package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
  55. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +3 -0
  56. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts.map +1 -0
  57. package/dist/better-auth/plugin/helpers/get-signed-cookie.js +63 -0
  58. package/dist/better-auth/plugin/helpers/index.d.ts +2 -0
  59. package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -0
  60. package/dist/better-auth/plugin/helpers/index.js +3 -0
  61. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +60 -0
  62. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -0
  63. package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
  64. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +21 -0
  65. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts.map +1 -0
  66. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +63 -0
  67. package/dist/better-auth/plugin/index.d.ts +8 -0
  68. package/dist/better-auth/plugin/index.d.ts.map +1 -0
  69. package/dist/better-auth/plugin/index.js +103 -0
  70. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +13 -0
  71. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts.map +1 -0
  72. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
  73. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +4 -0
  74. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -0
  75. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +51 -0
  76. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +4 -0
  77. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -0
  78. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +150 -0
  79. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +6 -0
  80. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -0
  81. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
  82. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +3 -0
  83. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -0
  84. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
  85. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +7 -0
  86. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -0
  87. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +117 -0
  88. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +4 -0
  89. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -0
  90. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +174 -0
  91. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +4 -0
  92. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts.map +1 -0
  93. package/dist/better-auth/plugin/lib/build-collections/device-code.js +49 -0
  94. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +11 -0
  95. package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -0
  96. package/dist/better-auth/plugin/lib/build-collections/index.js +79 -0
  97. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +4 -0
  98. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -0
  99. package/dist/better-auth/plugin/lib/build-collections/invitations.js +93 -0
  100. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +4 -0
  101. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -0
  102. package/dist/better-auth/plugin/lib/build-collections/jwks.js +58 -0
  103. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +4 -0
  104. package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -0
  105. package/dist/better-auth/plugin/lib/build-collections/members.js +72 -0
  106. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +4 -0
  107. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -0
  108. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +105 -0
  109. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +4 -0
  110. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -0
  111. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +117 -0
  112. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +4 -0
  113. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -0
  114. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +87 -0
  115. package/dist/better-auth/plugin/lib/build-collections/organization-roles.d.ts +4 -0
  116. package/dist/better-auth/plugin/lib/build-collections/organization-roles.d.ts.map +1 -0
  117. package/dist/better-auth/plugin/lib/build-collections/organization-roles.js +65 -0
  118. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +4 -0
  119. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -0
  120. package/dist/better-auth/plugin/lib/build-collections/organizations.js +106 -0
  121. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +4 -0
  122. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -0
  123. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
  124. package/dist/better-auth/plugin/lib/build-collections/rate-limit.d.ts +4 -0
  125. package/dist/better-auth/plugin/lib/build-collections/rate-limit.d.ts.map +1 -0
  126. package/dist/better-auth/plugin/lib/build-collections/rate-limit.js +54 -0
  127. package/dist/better-auth/plugin/lib/build-collections/scim-provider.d.ts +4 -0
  128. package/dist/better-auth/plugin/lib/build-collections/scim-provider.d.ts.map +1 -0
  129. package/dist/better-auth/plugin/lib/build-collections/scim-provider.js +65 -0
  130. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +4 -0
  131. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -0
  132. package/dist/better-auth/plugin/lib/build-collections/sessions.js +140 -0
  133. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +4 -0
  134. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -0
  135. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +80 -0
  136. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +4 -0
  137. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -0
  138. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +110 -0
  139. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +4 -0
  140. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts.map +1 -0
  141. package/dist/better-auth/plugin/lib/build-collections/team-members.js +63 -0
  142. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +4 -0
  143. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -0
  144. package/dist/better-auth/plugin/lib/build-collections/teams.js +74 -0
  145. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +4 -0
  146. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -0
  147. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +66 -0
  148. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +8 -0
  149. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -0
  150. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +52 -0
  151. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +12 -0
  152. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -0
  153. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +68 -0
  154. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +5 -0
  155. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts.map +1 -0
  156. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
  157. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +3 -0
  158. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -0
  159. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +114 -0
  160. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +4 -0
  161. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -0
  162. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
  163. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +4 -0
  164. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -0
  165. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +90 -0
  166. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +7 -0
  167. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -0
  168. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +80 -0
  169. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +3 -0
  170. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -0
  171. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +79 -0
  172. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +3 -0
  173. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -0
  174. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
  175. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +7 -0
  176. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +1 -0
  177. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
  178. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +7 -0
  179. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts.map +1 -0
  180. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
  181. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +3 -0
  182. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -0
  183. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
  184. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +3 -0
  185. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -0
  186. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +90 -0
  187. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +4 -0
  188. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -0
  189. package/dist/better-auth/plugin/lib/build-collections/users/index.js +333 -0
  190. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +16 -0
  191. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts.map +1 -0
  192. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
  193. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +11 -0
  194. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts.map +1 -0
  195. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +112 -0
  196. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +8 -0
  197. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -0
  198. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +31 -0
  199. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
  200. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts.map +1 -0
  201. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +26 -0
  202. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +18 -0
  203. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -0
  204. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +84 -0
  205. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +21 -0
  206. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -0
  207. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +95 -0
  208. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +4 -0
  209. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -0
  210. package/dist/better-auth/plugin/lib/build-collections/verifications.js +82 -0
  211. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +6 -0
  212. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -0
  213. package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
  214. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +8 -0
  215. package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -0
  216. package/dist/better-auth/plugin/lib/init-better-auth.js +16 -0
  217. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +3 -0
  218. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -0
  219. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +12 -0
  220. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +3 -0
  221. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -0
  222. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
  223. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +3 -0
  224. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts.map +1 -0
  225. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
  226. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +12 -0
  227. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -0
  228. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +146 -0
  229. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +3 -0
  230. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -0
  231. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
  232. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +3 -0
  233. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -0
  234. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
  235. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +3 -0
  236. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts.map +1 -0
  237. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
  238. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +3 -0
  239. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -0
  240. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
  241. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +3 -0
  242. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts.map +1 -0
  243. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
  244. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts +8 -0
  245. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts.map +1 -0
  246. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.js +20 -0
  247. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts +8 -0
  248. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts.map +1 -0
  249. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.js +20 -0
  250. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts +14 -0
  251. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts.map +1 -0
  252. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.js +38 -0
  253. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +8 -0
  254. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +1 -0
  255. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
  256. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +26 -0
  257. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -0
  258. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
  259. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +10 -0
  260. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts.map +1 -0
  261. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +42 -0
  262. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +10 -0
  263. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts.map +1 -0
  264. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +62 -0
  265. package/dist/better-auth/plugin/lib/set-login-methods.d.ts +5 -0
  266. package/dist/better-auth/plugin/lib/set-login-methods.d.ts.map +1 -0
  267. package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
  268. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +10 -0
  269. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -0
  270. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +116 -0
  271. package/dist/better-auth/plugin/payload/components/admin-buttons/index.scss +36 -0
  272. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +11 -0
  273. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -0
  274. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +213 -0
  275. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +136 -0
  276. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts +4 -0
  277. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts.map +1 -0
  278. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.js +197 -0
  279. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts +49 -0
  280. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts.map +1 -0
  281. package/dist/better-auth/plugin/payload/components/login-form/context.js +94 -0
  282. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts +4 -0
  283. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts.map +1 -0
  284. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.js +167 -0
  285. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts +5 -0
  286. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts.map +1 -0
  287. package/dist/better-auth/plugin/payload/components/login-form/index.js +6 -0
  288. package/dist/better-auth/plugin/payload/components/login-form/index.scss +58 -0
  289. package/dist/better-auth/plugin/payload/components/logout-button.d.ts +5 -0
  290. package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -0
  291. package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
  292. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +9 -0
  293. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts.map +1 -0
  294. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +122 -0
  295. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
  296. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts.map +1 -0
  297. package/dist/better-auth/plugin/payload/components/passkeys/client.js +61 -0
  298. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +5 -0
  299. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts.map +1 -0
  300. package/dist/better-auth/plugin/payload/components/passkeys/index.js +42 -0
  301. package/dist/better-auth/plugin/payload/components/passkeys/index.scss +98 -0
  302. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +9 -0
  303. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts.map +1 -0
  304. package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
  305. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +23 -0
  306. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts.map +1 -0
  307. package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
  308. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +7 -0
  309. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -0
  310. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +13 -0
  311. package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
  312. package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -0
  313. package/dist/better-auth/plugin/payload/components/token-field.js +29 -0
  314. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +9 -0
  315. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts.map +1 -0
  316. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +347 -0
  317. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.scss +116 -0
  318. package/dist/better-auth/plugin/payload/exports/client.d.ts +7 -0
  319. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -0
  320. package/dist/better-auth/plugin/payload/exports/client.js +8 -0
  321. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +9 -0
  322. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -0
  323. package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
  324. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +3 -0
  325. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -0
  326. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
  327. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +2 -0
  328. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -0
  329. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
  330. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +23 -0
  331. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -0
  332. package/dist/better-auth/plugin/payload/views/admin-login/client.js +24 -0
  333. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +11 -0
  334. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -0
  335. package/dist/better-auth/plugin/payload/views/admin-login/index.js +143 -0
  336. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +23 -0
  337. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -0
  338. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +185 -0
  339. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +10 -0
  340. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -0
  341. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +92 -0
  342. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
  343. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -0
  344. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +104 -0
  345. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +9 -0
  346. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -0
  347. package/dist/better-auth/plugin/payload/views/forgot-password/index.js +61 -0
  348. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +11 -0
  349. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -0
  350. package/dist/better-auth/plugin/payload/views/reset-password/client.js +111 -0
  351. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +9 -0
  352. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -0
  353. package/dist/better-auth/plugin/payload/views/reset-password/index.js +78 -0
  354. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +9 -0
  355. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts.map +1 -0
  356. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +79 -0
  357. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +10 -0
  358. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -0
  359. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +49 -0
  360. package/dist/better-auth/plugin/types.d.ts +448 -0
  361. package/dist/better-auth/plugin/types.d.ts.map +1 -0
  362. package/dist/better-auth/plugin/types.js +3 -0
  363. package/dist/better-auth/plugin/utils/set.d.ts +40 -0
  364. package/dist/better-auth/plugin/utils/set.d.ts.map +1 -0
  365. package/dist/better-auth/plugin/utils/set.js +84 -0
  366. package/dist/better-auth/scripts/generate-types.d.ts +2 -0
  367. package/dist/better-auth/scripts/generate-types.d.ts.map +1 -0
  368. package/dist/better-auth/scripts/generate-types.js +225 -0
  369. package/dist/better-auth/types.d.ts +3 -0
  370. package/dist/better-auth/types.d.ts.map +1 -0
  371. package/dist/better-auth/types.js +4 -0
  372. package/dist/index.d.ts +2 -0
  373. package/dist/index.d.ts.map +1 -0
  374. package/dist/index.js +4 -0
  375. package/dist/shared/components/icons.d.ts +8 -0
  376. package/dist/shared/components/icons.d.ts.map +1 -0
  377. package/dist/shared/components/icons.js +436 -0
  378. package/dist/shared/components/logo.d.ts +3 -0
  379. package/dist/shared/components/logo.d.ts.map +1 -0
  380. package/dist/shared/components/logo.js +24 -0
  381. package/dist/shared/form/components/submit.d.ts +8 -0
  382. package/dist/shared/form/components/submit.d.ts.map +1 -0
  383. package/dist/shared/form/components/submit.js +23 -0
  384. package/dist/shared/form/fields/text-field.d.ts +9 -0
  385. package/dist/shared/form/fields/text-field.d.ts.map +1 -0
  386. package/dist/shared/form/fields/text-field.js +44 -0
  387. package/dist/shared/form/index.d.ts +28 -0
  388. package/dist/shared/form/index.d.ts.map +1 -0
  389. package/dist/shared/form/index.js +17 -0
  390. package/dist/shared/form/ui/header/index.d.ts +9 -0
  391. package/dist/shared/form/ui/header/index.d.ts.map +1 -0
  392. package/dist/shared/form/ui/header/index.js +23 -0
  393. package/dist/shared/form/ui/header/index.scss +8 -0
  394. package/dist/shared/form/ui/index.d.ts +34 -0
  395. package/dist/shared/form/ui/index.d.ts.map +1 -0
  396. package/dist/shared/form/ui/index.js +70 -0
  397. package/dist/shared/form/ui/index.scss +27 -0
  398. package/dist/shared/form/validation.d.ts +65 -0
  399. package/dist/shared/form/validation.d.ts.map +1 -0
  400. package/dist/shared/form/validation.js +108 -0
  401. package/dist/shared/index.d.ts +3 -0
  402. package/dist/shared/index.d.ts.map +1 -0
  403. package/dist/shared/index.js +4 -0
  404. package/dist/shared/payload/fields/field-copy-button/index.css +47 -0
  405. package/dist/shared/payload/fields/field-copy-button/index.d.ts +4 -0
  406. package/dist/shared/payload/fields/field-copy-button/index.d.ts.map +1 -0
  407. package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
  408. package/dist/shared/payload/fields/generate-uuid-button/index.css +14 -0
  409. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +4 -0
  410. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts.map +1 -0
  411. package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
  412. package/dist/shared/payload/fields/index.d.ts +3 -0
  413. package/dist/shared/payload/fields/index.d.ts.map +1 -0
  414. package/dist/shared/payload/fields/index.js +4 -0
  415. package/dist/shared/utils/regex.d.ts +3 -0
  416. package/dist/shared/utils/regex.d.ts.map +1 -0
  417. package/dist/shared/utils/regex.js +4 -0
  418. package/dist/shared/utils/try-catch.d.ts +12 -0
  419. package/dist/shared/utils/try-catch.d.ts.map +1 -0
  420. package/dist/shared/utils/try-catch.js +17 -0
  421. package/dist/shared/utils/value-or-default.d.ts +10 -0
  422. package/dist/shared/utils/value-or-default.d.ts.map +1 -0
  423. package/dist/shared/utils/value-or-default.js +12 -0
  424. package/package.json +124 -0
@@ -0,0 +1,347 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import "./index.scss";
4
+ import { Button, Modal, toast, useField, useFormFields, useModal, useTranslation } from "@payloadcms/ui";
5
+ import { twoFactorClient } from "better-auth/client/plugins";
6
+ import { createAuthClient } from "better-auth/react";
7
+ import { Copy, XIcon } from "lucide-react";
8
+ import { QRCodeSVG } from "qrcode.react";
9
+ import React, { useMemo, useState } from "react";
10
+ import { z } from "zod";
11
+ import { useAppForm } from "../../../../../shared/form";
12
+ import { Form, FormInputWrap } from "../../../../../shared/form/ui";
13
+ import { passwordField } from "../../../../../shared/form/validation";
14
+ const baseClass = "two-factor-auth-modal";
15
+ export function TwoFactorAuth({ baseURL, basePath }) {
16
+ const [totpURI, setTotpURI] = useState("");
17
+ const [backupCodes, setBackupCodes] = useState(null);
18
+ const [formState, setFormState] = useState("enable");
19
+ const { openModal, closeModal } = useModal();
20
+ const { t } = useTranslation();
21
+ const twoFactorEnabledField = useFormFields(([fields])=>fields.twoFactorEnabled);
22
+ const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);
23
+ const { setValue: setTwoFactorEnabled } = useField({
24
+ path: "twoFactorEnabled"
25
+ });
26
+ const authClient = useMemo(()=>createAuthClient({
27
+ baseURL,
28
+ basePath,
29
+ plugins: [
30
+ twoFactorClient()
31
+ ]
32
+ }), []);
33
+ const copyURI = async ()=>{
34
+ if (!totpURI) return;
35
+ try {
36
+ await navigator.clipboard.writeText(totpURI);
37
+ toast.success("Copied");
38
+ } catch {
39
+ toast.error("Failed to copy");
40
+ }
41
+ };
42
+ // Form Schemas
43
+ const passwordSchema = z.object({
44
+ password: passwordField({
45
+ t
46
+ })
47
+ });
48
+ const otpSchema = z.object({
49
+ otp: z.string().length(6, "Code must be 6 digits").refine((val)=>/^\d{6}$/.test(val), "Code must be numeric")
50
+ });
51
+ const EnableForm = ()=>{
52
+ const [isLoading, setIsLoading] = useState(false);
53
+ const form = useAppForm({
54
+ defaultValues: {
55
+ password: ""
56
+ },
57
+ onSubmit: async ({ value })=>{
58
+ setIsLoading(true);
59
+ const { data, error } = await authClient.twoFactor.enable({
60
+ password: value.password
61
+ });
62
+ setIsLoading(false);
63
+ if (error) {
64
+ toast.error(error.message);
65
+ return;
66
+ }
67
+ setTotpURI(data.totpURI);
68
+ if (data && "backupCodes" in data && data.backupCodes) {
69
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
70
+ } else {
71
+ setBackupCodes(null);
72
+ }
73
+ setFormState("verify");
74
+ },
75
+ validators: {
76
+ onSubmit: passwordSchema
77
+ }
78
+ });
79
+ return /*#__PURE__*/ _jsxs(Form, {
80
+ onSubmit: (e)=>{
81
+ e.preventDefault();
82
+ void form.handleSubmit();
83
+ },
84
+ className: "two-factor-enable-form",
85
+ children: [
86
+ /*#__PURE__*/ _jsx(FormInputWrap, {
87
+ className: "two-factor-enable-form__inputWrap",
88
+ children: /*#__PURE__*/ _jsx(form.AppField, {
89
+ name: "password",
90
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
91
+ type: "password",
92
+ className: "password",
93
+ label: "Password",
94
+ required: true
95
+ })
96
+ })
97
+ }),
98
+ /*#__PURE__*/ _jsx(form.AppForm, {
99
+ children: /*#__PURE__*/ _jsx(form.Submit, {
100
+ label: "Enable",
101
+ loadingLabel: "Enabling"
102
+ })
103
+ })
104
+ ]
105
+ });
106
+ };
107
+ const VerifyForm = ()=>{
108
+ const [isLoading, setIsLoading] = useState(false);
109
+ const form = useAppForm({
110
+ defaultValues: {
111
+ otp: ""
112
+ },
113
+ onSubmit: async ({ value })=>{
114
+ setIsLoading(true);
115
+ const { data, error } = await authClient.twoFactor.verifyTotp({
116
+ code: value.otp
117
+ });
118
+ setIsLoading(false);
119
+ if (error) {
120
+ toast.error(error.message);
121
+ return;
122
+ }
123
+ if (data && "backupCodes" in data && data.backupCodes) {
124
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
125
+ }
126
+ toast.success("Two‑factor verified & enabled");
127
+ setTwoFactorEnabled(true);
128
+ setFormState("backupCodes");
129
+ },
130
+ validators: {
131
+ onSubmit: otpSchema
132
+ }
133
+ });
134
+ return /*#__PURE__*/ _jsxs(Form, {
135
+ onSubmit: (e)=>{
136
+ e.preventDefault();
137
+ void form.handleSubmit();
138
+ },
139
+ className: "two-factor-verify-form",
140
+ children: [
141
+ /*#__PURE__*/ _jsx(FormInputWrap, {
142
+ className: "tf__inputWrap",
143
+ children: /*#__PURE__*/ _jsx(form.AppField, {
144
+ name: "otp",
145
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
146
+ type: "text",
147
+ className: "text otp",
148
+ label: "6‑digit Code",
149
+ required: true
150
+ })
151
+ })
152
+ }),
153
+ /*#__PURE__*/ _jsx(form.AppForm, {
154
+ children: /*#__PURE__*/ _jsx(form.Submit, {
155
+ label: "Verify",
156
+ loadingLabel: "Verifying"
157
+ })
158
+ })
159
+ ]
160
+ });
161
+ };
162
+ const DisableForm = ()=>{
163
+ const form = useAppForm({
164
+ defaultValues: {
165
+ password: ""
166
+ },
167
+ onSubmit: async ({ value })=>{
168
+ await authClient.twoFactor.disable({
169
+ password: value.password
170
+ }, {
171
+ onSuccess () {
172
+ toast.success("Two‑factor disabled");
173
+ setTwoFactorEnabled(false);
174
+ closeModal("two-factor-auth-modal");
175
+ return undefined;
176
+ },
177
+ onError (ctx) {
178
+ toast.error(ctx.error.message);
179
+ }
180
+ });
181
+ },
182
+ validators: {
183
+ onSubmit: passwordSchema
184
+ }
185
+ });
186
+ return /*#__PURE__*/ _jsxs(Form, {
187
+ onSubmit: (e)=>{
188
+ e.preventDefault();
189
+ void form.handleSubmit();
190
+ },
191
+ className: "two-factor-disable-form mt-4",
192
+ children: [
193
+ /*#__PURE__*/ _jsx(FormInputWrap, {
194
+ className: "two-factor-disable-form__inputWrap",
195
+ children: /*#__PURE__*/ _jsx(form.AppField, {
196
+ name: "password",
197
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
198
+ type: "password",
199
+ className: "password",
200
+ label: "Password",
201
+ required: true
202
+ })
203
+ })
204
+ }),
205
+ /*#__PURE__*/ _jsx(form.AppForm, {
206
+ children: /*#__PURE__*/ _jsx(form.Submit, {
207
+ label: "Disable Two‑Factor",
208
+ loadingLabel: "Disabling"
209
+ })
210
+ })
211
+ ]
212
+ });
213
+ };
214
+ return /*#__PURE__*/ _jsxs("div", {
215
+ className: "two-factor-auth-field",
216
+ children: [
217
+ twoFactorEnabled ? /*#__PURE__*/ _jsx(Button, {
218
+ onClick: ()=>{
219
+ setFormState("disable");
220
+ openModal("two-factor-auth-modal");
221
+ },
222
+ size: "medium",
223
+ buttonStyle: "pill",
224
+ children: "Disable Two-Factor"
225
+ }) : /*#__PURE__*/ _jsx(Button, {
226
+ onClick: ()=>{
227
+ setFormState("enable");
228
+ openModal("two-factor-auth-modal");
229
+ },
230
+ size: "medium",
231
+ buttonStyle: "pill",
232
+ children: "Enable Two-Factor"
233
+ }),
234
+ /*#__PURE__*/ _jsx(Modal, {
235
+ slug: "two-factor-auth-modal",
236
+ className: baseClass,
237
+ closeOnBlur: true,
238
+ children: /*#__PURE__*/ _jsxs("div", {
239
+ className: `${baseClass}__wrapper`,
240
+ children: [
241
+ /*#__PURE__*/ _jsx(Button, {
242
+ onClick: ()=>closeModal("two-factor-auth-modal"),
243
+ buttonStyle: "icon-label",
244
+ size: "small",
245
+ className: `${baseClass}__close-button`,
246
+ children: /*#__PURE__*/ _jsx(XIcon, {
247
+ size: 24
248
+ })
249
+ }),
250
+ /*#__PURE__*/ _jsxs("div", {
251
+ className: `${baseClass}__content`,
252
+ style: {
253
+ maxWidth: "38rem"
254
+ },
255
+ children: [
256
+ formState === "enable" && /*#__PURE__*/ _jsxs(_Fragment, {
257
+ children: [
258
+ /*#__PURE__*/ _jsx("h2", {
259
+ children: "Enable Two‑Factor"
260
+ }),
261
+ /*#__PURE__*/ _jsx(EnableForm, {})
262
+ ]
263
+ }),
264
+ formState === "verify" && /*#__PURE__*/ _jsxs(_Fragment, {
265
+ children: [
266
+ /*#__PURE__*/ _jsx("h2", {
267
+ children: "Verify Two‑Factor"
268
+ }),
269
+ /*#__PURE__*/ _jsxs("div", {
270
+ className: "two-factor-auth-modal__verify-block",
271
+ children: [
272
+ /*#__PURE__*/ _jsx("p", {
273
+ children: "Scan the QR code with your authenticator app or copy the URI."
274
+ }),
275
+ /*#__PURE__*/ _jsx("div", {
276
+ className: "two-factor-auth-modal__qrcode",
277
+ children: /*#__PURE__*/ _jsx(QRCodeSVG, {
278
+ value: totpURI,
279
+ size: 200
280
+ })
281
+ }),
282
+ /*#__PURE__*/ _jsxs(Button, {
283
+ size: "small",
284
+ buttonStyle: "transparent",
285
+ onClick: copyURI,
286
+ className: "two-factor-auth-modal__copy-btn",
287
+ children: [
288
+ /*#__PURE__*/ _jsx(Copy, {
289
+ size: 18,
290
+ className: "two-factor-auth-modal__copy-icon"
291
+ }),
292
+ " ",
293
+ "Copy URI"
294
+ ]
295
+ }),
296
+ /*#__PURE__*/ _jsx(VerifyForm, {})
297
+ ]
298
+ })
299
+ ]
300
+ }),
301
+ formState === "backupCodes" && backupCodes && /*#__PURE__*/ _jsxs(_Fragment, {
302
+ children: [
303
+ /*#__PURE__*/ _jsx("h2", {
304
+ children: "Backup Codes"
305
+ }),
306
+ /*#__PURE__*/ _jsxs("div", {
307
+ className: "two-factor-auth-modal__backup-codes",
308
+ children: [
309
+ /*#__PURE__*/ _jsx("ul", {
310
+ children: backupCodes.map((code, i)=>/*#__PURE__*/ _jsx("li", {
311
+ className: "two-factor-auth-modal__backup-code",
312
+ children: code
313
+ }, i))
314
+ }),
315
+ /*#__PURE__*/ _jsx("p", {
316
+ className: "two-factor-auth-modal__backup-desc",
317
+ children: "Store these codes in a safe place. Each code can be used once if you lose access to your authenticator."
318
+ })
319
+ ]
320
+ }),
321
+ /*#__PURE__*/ _jsx(Button, {
322
+ onClick: ()=>closeModal("two-factor-auth-modal"),
323
+ buttonStyle: "primary",
324
+ size: "large",
325
+ className: "two-factor-auth-modal__backup-codes-close-button",
326
+ children: "Saved them!"
327
+ })
328
+ ]
329
+ }),
330
+ formState === "disable" && /*#__PURE__*/ _jsxs(_Fragment, {
331
+ children: [
332
+ /*#__PURE__*/ _jsx("h2", {
333
+ children: "Two‑Factor Authentication"
334
+ }),
335
+ /*#__PURE__*/ _jsx(DisableForm, {})
336
+ ]
337
+ })
338
+ ]
339
+ })
340
+ ]
341
+ })
342
+ })
343
+ ]
344
+ });
345
+ }
346
+
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3R3by1mYWN0b3ItYXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBcIi4vaW5kZXguc2Nzc1wiO1xuXG5pbXBvcnQge1xuICBCdXR0b24sXG4gIE1vZGFsLFxuICB0b2FzdCxcbiAgdXNlRmllbGQsXG4gIHVzZUZvcm1GaWVsZHMsXG4gIHVzZU1vZGFsLFxuICB1c2VUcmFuc2xhdGlvblxufSBmcm9tIFwiQHBheWxvYWRjbXMvdWlcIjtcbmltcG9ydCB7IHR3b0ZhY3RvckNsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2luc1wiO1xuaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gXCJiZXR0ZXItYXV0aC9yZWFjdFwiO1xuaW1wb3J0IHsgQ29weSwgWEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBRUkNvZGVTVkcgfSBmcm9tIFwicXJjb2RlLnJlYWN0XCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyB1c2VBcHBGb3JtIH0gZnJvbSBcIkAvc2hhcmVkL2Zvcm1cIjtcbmltcG9ydCB7IEZvcm0sIEZvcm1JbnB1dFdyYXAgfSBmcm9tIFwiQC9zaGFyZWQvZm9ybS91aVwiO1xuaW1wb3J0IHsgcGFzc3dvcmRGaWVsZCB9IGZyb20gXCJAL3NoYXJlZC9mb3JtL3ZhbGlkYXRpb25cIjtcblxuY29uc3QgYmFzZUNsYXNzID0gXCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxcIjtcblxuaW50ZXJmYWNlIFR3b0ZhY3RvckF1dGhQcm9wcyB7XG4gIGJhc2VVUkw/OiBzdHJpbmc7XG4gIGJhc2VQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVHdvRmFjdG9yQXV0aCh7IGJhc2VVUkwsIGJhc2VQYXRoIH06IFR3b0ZhY3RvckF1dGhQcm9wcykge1xuICBjb25zdCBbdG90cFVSSSwgc2V0VG90cFVSSV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2JhY2t1cENvZGVzLCBzZXRCYWNrdXBDb2Rlc10gPSB1c2VTdGF0ZTxzdHJpbmdbXSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZm9ybVN0YXRlLCBzZXRGb3JtU3RhdGVdID0gdXNlU3RhdGU8XG4gICAgXCJlbmFibGVcIiB8IFwidmVyaWZ5XCIgfCBcImJhY2t1cENvZGVzXCIgfCBcImRpc2FibGVcIlxuICA+KFwiZW5hYmxlXCIpO1xuICBjb25zdCB7IG9wZW5Nb2RhbCwgY2xvc2VNb2RhbCB9ID0gdXNlTW9kYWwoKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0d29GYWN0b3JFbmFibGVkRmllbGQgPSB1c2VGb3JtRmllbGRzKFxuICAgIChbZmllbGRzXSkgPT4gZmllbGRzLnR3b0ZhY3RvckVuYWJsZWRcbiAgKTtcbiAgY29uc3QgdHdvRmFjdG9yRW5hYmxlZCA9IEJvb2xlYW4odHdvRmFjdG9yRW5hYmxlZEZpZWxkPy52YWx1ZSk7XG4gIGNvbnN0IHsgc2V0VmFsdWU6IHNldFR3b0ZhY3RvckVuYWJsZWQgfSA9IHVzZUZpZWxkKHtcbiAgICBwYXRoOiBcInR3b0ZhY3RvckVuYWJsZWRcIlxuICB9KTtcblxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgYmFzZVVSTCwgYmFzZVBhdGgsIHBsdWdpbnM6IFt0d29GYWN0b3JDbGllbnQoKV0gfSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBjb3B5VVJJID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghdG90cFVSSSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0b3RwVVJJKTtcbiAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJDb3BpZWRcIik7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0b2FzdC5lcnJvcihcIkZhaWxlZCB0byBjb3B5XCIpO1xuICAgIH1cbiAgfTtcblxuICAvLyBGb3JtIFNjaGVtYXNcbiAgY29uc3QgcGFzc3dvcmRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgcGFzc3dvcmQ6IHBhc3N3b3JkRmllbGQoeyB0IH0pXG4gIH0pO1xuXG4gIGNvbnN0IG90cFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBvdHA6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmxlbmd0aCg2LCBcIkNvZGUgbXVzdCBiZSA2IGRpZ2l0c1wiKVxuICAgICAgLnJlZmluZSgodmFsKSA9PiAvXlxcZHs2fSQvLnRlc3QodmFsKSwgXCJDb2RlIG11c3QgYmUgbnVtZXJpY1wiKVxuICB9KTtcblxuICBjb25zdCBFbmFibGVGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogXCJcIiB9LFxuICAgICAgb25TdWJtaXQ6IGFzeW5jICh7IHZhbHVlIH06IHsgdmFsdWU6IHsgcGFzc3dvcmQ6IHN0cmluZyB9IH0pID0+IHtcbiAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBhdXRoQ2xpZW50LnR3b0ZhY3Rvci5lbmFibGUoe1xuICAgICAgICAgIHBhc3N3b3JkOiB2YWx1ZS5wYXNzd29yZFxuICAgICAgICB9KTtcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFRvdHBVUkkoZGF0YS50b3RwVVJJKTtcbiAgICAgICAgaWYgKGRhdGEgJiYgXCJiYWNrdXBDb2Rlc1wiIGluIGRhdGEgJiYgZGF0YS5iYWNrdXBDb2Rlcykge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShkYXRhLmJhY2t1cENvZGVzKVxuICAgICAgICAgICAgICA/IGRhdGEuYmFja3VwQ29kZXNcbiAgICAgICAgICAgICAgOiBTdHJpbmcoZGF0YS5iYWNrdXBDb2Rlcykuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHNldEZvcm1TdGF0ZShcInZlcmlmeVwiKTtcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBwYXNzd29yZFNjaGVtYSB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKTtcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1lbmFibGUtZm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZW5hYmxlLWZvcm1fX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZDogYW55KSA9PiAoXG4gICAgICAgICAgICAgIDxmaWVsZC5UZXh0RmllbGRcbiAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxmb3JtLkFwcEZvcm1cbiAgICAgICAgICBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiRW5hYmxlXCIgbG9hZGluZ0xhYmVsPVwiRW5hYmxpbmdcIiAvPn1cbiAgICAgICAgLz5cbiAgICAgIDwvRm9ybT5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IFZlcmlmeUZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgICBkZWZhdWx0VmFsdWVzOiB7IG90cDogXCJcIiB9LFxuICAgICAgb25TdWJtaXQ6IGFzeW5jICh7IHZhbHVlIH06IHsgdmFsdWU6IHsgb3RwOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgYXV0aENsaWVudC50d29GYWN0b3IudmVyaWZ5VG90cCh7XG4gICAgICAgICAgY29kZTogdmFsdWUub3RwXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEgJiYgXCJiYWNrdXBDb2Rlc1wiIGluIGRhdGEgJiYgZGF0YS5iYWNrdXBDb2Rlcykge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShkYXRhLmJhY2t1cENvZGVzKVxuICAgICAgICAgICAgICA/IGRhdGEuYmFja3VwQ29kZXNcbiAgICAgICAgICAgICAgOiBTdHJpbmcoZGF0YS5iYWNrdXBDb2Rlcykuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJUd2/igJFmYWN0b3IgdmVyaWZpZWQgJiBlbmFibGVkXCIpO1xuICAgICAgICBzZXRUd29GYWN0b3JFbmFibGVkKHRydWUpO1xuICAgICAgICBzZXRGb3JtU3RhdGUoXCJiYWNrdXBDb2Rlc1wiKTtcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBvdHBTY2hlbWEgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB2b2lkIGZvcm0uaGFuZGxlU3VibWl0KCk7XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItdmVyaWZ5LWZvcm1cIlxuICAgICAgPlxuICAgICAgICA8Rm9ybUlucHV0V3JhcCBjbGFzc05hbWU9XCJ0Zl9faW5wdXRXcmFwXCI+XG4gICAgICAgICAgPGZvcm0uQXBwRmllbGRcbiAgICAgICAgICAgIG5hbWU9XCJvdHBcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZDogYW55KSA9PiAoXG4gICAgICAgICAgICAgIDxmaWVsZC5UZXh0RmllbGRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dCBvdHBcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiNuKAkWRpZ2l0IENvZGVcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybVxuICAgICAgICAgIGNoaWxkcmVuPXs8Zm9ybS5TdWJtaXQgbGFiZWw9XCJWZXJpZnlcIiBsb2FkaW5nTGFiZWw9XCJWZXJpZnlpbmdcIiAvPn1cbiAgICAgICAgLz5cbiAgICAgIDwvRm9ybT5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IERpc2FibGVGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IGZvcm0gPSB1c2VBcHBGb3JtKHtcbiAgICAgIGRlZmF1bHRWYWx1ZXM6IHsgcGFzc3dvcmQ6IFwiXCIgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIGF3YWl0IGF1dGhDbGllbnQudHdvRmFjdG9yLmRpc2FibGUoXG4gICAgICAgICAgeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJUd2/igJFmYWN0b3IgZGlzYWJsZWRcIik7XG4gICAgICAgICAgICAgIHNldFR3b0ZhY3RvckVuYWJsZWQoZmFsc2UpO1xuICAgICAgICAgICAgICBjbG9zZU1vZGFsKFwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRXJyb3IoY3R4OiBhbnkpIHtcbiAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoY3R4LmVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBwYXNzd29yZFNjaGVtYSB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKTtcbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1kaXNhYmxlLWZvcm0gbXQtNFwiXG4gICAgICA+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZGlzYWJsZS1mb3JtX19pbnB1dFdyYXBcIj5cbiAgICAgICAgICA8Zm9ybS5BcHBGaWVsZFxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gKFxuICAgICAgICAgICAgICA8ZmllbGQuVGV4dEZpZWxkXG4gICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Gb3JtSW5wdXRXcmFwPlxuICAgICAgICA8Zm9ybS5BcHBGb3JtXG4gICAgICAgICAgY2hpbGRyZW49e1xuICAgICAgICAgICAgPGZvcm0uU3VibWl0IGxhYmVsPVwiRGlzYWJsZSBUd2/igJFGYWN0b3JcIiBsb2FkaW5nTGFiZWw9XCJEaXNhYmxpbmdcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgIDwvRm9ybT5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtZmllbGRcIj5cbiAgICAgIHt0d29GYWN0b3JFbmFibGVkID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0Rm9ybVN0YXRlKFwiZGlzYWJsZVwiKTtcbiAgICAgICAgICAgIG9wZW5Nb2RhbChcInR3by1mYWN0b3ItYXV0aC1tb2RhbFwiKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGJ1dHRvblN0eWxlPVwicGlsbFwiXG4gICAgICAgID5cbiAgICAgICAgICBEaXNhYmxlIFR3by1GYWN0b3JcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0Rm9ybVN0YXRlKFwiZW5hYmxlXCIpO1xuICAgICAgICAgICAgb3Blbk1vZGFsKFwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgYnV0dG9uU3R5bGU9XCJwaWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIEVuYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxNb2RhbCBzbHVnPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IGNsb3NlT25CbHVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlTW9kYWwoXCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxcIil9XG4gICAgICAgICAgICBidXR0b25TdHlsZT1cImljb24tbGFiZWxcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY2xvc2UtYnV0dG9uYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8WEljb24gc2l6ZT17MjR9IC8+XG4gICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfVxuICAgICAgICAgICAgc3R5bGU9e3sgbWF4V2lkdGg6IFwiMzhyZW1cIiB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtmb3JtU3RhdGUgPT09IFwiZW5hYmxlXCIgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoMj5FbmFibGUgVHdv4oCRRmFjdG9yPC9oMj5cbiAgICAgICAgICAgICAgICA8RW5hYmxlRm9ybSAvPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Zm9ybVN0YXRlID09PSBcInZlcmlmeVwiICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+VmVyaWZ5IFR3b+KAkUZhY3RvcjwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX3ZlcmlmeS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgIFNjYW4gdGhlIFFSIGNvZGUgd2l0aCB5b3VyIGF1dGhlbnRpY2F0b3IgYXBwIG9yIGNvcHkgdGhlXG4gICAgICAgICAgICAgICAgICAgIFVSSS5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19xcmNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPFFSQ29kZVNWRyB2YWx1ZT17dG90cFVSSX0gc2l6ZT17MjAwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjb3B5VVJJfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX2NvcHktYnRuXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENvcHlcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX2NvcHktaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICBDb3B5IFVSSVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8VmVyaWZ5Rm9ybSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Zm9ybVN0YXRlID09PSBcImJhY2t1cENvZGVzXCIgJiYgYmFja3VwQ29kZXMgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoMj5CYWNrdXAgQ29kZXM8L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZXNcIj5cbiAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAge2JhY2t1cENvZGVzLm1hcCgoY29kZSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICBTdG9yZSB0aGVzZSBjb2RlcyBpbiBhIHNhZmUgcGxhY2UuIEVhY2ggY29kZSBjYW4gYmUgdXNlZFxuICAgICAgICAgICAgICAgICAgICBvbmNlIGlmIHlvdSBsb3NlIGFjY2VzcyB0byB5b3VyIGF1dGhlbnRpY2F0b3IuXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbChcInR3by1mYWN0b3ItYXV0aC1tb2RhbFwiKX1cbiAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZXMtY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBTYXZlZCB0aGVtIVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Zm9ybVN0YXRlID09PSBcImRpc2FibGVcIiAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGgyPlR3b+KAkUZhY3RvciBBdXRoZW50aWNhdGlvbjwvaDI+XG4gICAgICAgICAgICAgICAgPERpc2FibGVGb3JtIC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L01vZGFsPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbIkJ1dHRvbiIsIk1vZGFsIiwidG9hc3QiLCJ1c2VGaWVsZCIsInVzZUZvcm1GaWVsZHMiLCJ1c2VNb2RhbCIsInVzZVRyYW5zbGF0aW9uIiwidHdvRmFjdG9yQ2xpZW50IiwiY3JlYXRlQXV0aENsaWVudCIsIkNvcHkiLCJYSWNvbiIsIlFSQ29kZVNWRyIsIlJlYWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwieiIsInVzZUFwcEZvcm0iLCJGb3JtIiwiRm9ybUlucHV0V3JhcCIsInBhc3N3b3JkRmllbGQiLCJiYXNlQ2xhc3MiLCJUd29GYWN0b3JBdXRoIiwiYmFzZVVSTCIsImJhc2VQYXRoIiwidG90cFVSSSIsInNldFRvdHBVUkkiLCJiYWNrdXBDb2RlcyIsInNldEJhY2t1cENvZGVzIiwiZm9ybVN0YXRlIiwic2V0Rm9ybVN0YXRlIiwib3Blbk1vZGFsIiwiY2xvc2VNb2RhbCIsInQiLCJ0d29GYWN0b3JFbmFibGVkRmllbGQiLCJmaWVsZHMiLCJ0d29GYWN0b3JFbmFibGVkIiwiQm9vbGVhbiIsInZhbHVlIiwic2V0VmFsdWUiLCJzZXRUd29GYWN0b3JFbmFibGVkIiwicGF0aCIsImF1dGhDbGllbnQiLCJwbHVnaW5zIiwiY29weVVSSSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInN1Y2Nlc3MiLCJlcnJvciIsInBhc3N3b3JkU2NoZW1hIiwib2JqZWN0IiwicGFzc3dvcmQiLCJvdHBTY2hlbWEiLCJvdHAiLCJzdHJpbmciLCJsZW5ndGgiLCJyZWZpbmUiLCJ2YWwiLCJ0ZXN0IiwiRW5hYmxlRm9ybSIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsImZvcm0iLCJkZWZhdWx0VmFsdWVzIiwib25TdWJtaXQiLCJkYXRhIiwidHdvRmFjdG9yIiwiZW5hYmxlIiwibWVzc2FnZSIsIkFycmF5IiwiaXNBcnJheSIsIlN0cmluZyIsInNwbGl0IiwiZmlsdGVyIiwidmFsaWRhdG9ycyIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVN1Ym1pdCIsImNsYXNzTmFtZSIsIkFwcEZpZWxkIiwibmFtZSIsImNoaWxkcmVuIiwiZmllbGQiLCJUZXh0RmllbGQiLCJ0eXBlIiwibGFiZWwiLCJyZXF1aXJlZCIsIkFwcEZvcm0iLCJTdWJtaXQiLCJsb2FkaW5nTGFiZWwiLCJWZXJpZnlGb3JtIiwidmVyaWZ5VG90cCIsImNvZGUiLCJEaXNhYmxlRm9ybSIsImRpc2FibGUiLCJvblN1Y2Nlc3MiLCJ1bmRlZmluZWQiLCJvbkVycm9yIiwiY3R4IiwiZGl2Iiwib25DbGljayIsInNpemUiLCJidXR0b25TdHlsZSIsInNsdWciLCJjbG9zZU9uQmx1ciIsInN0eWxlIiwibWF4V2lkdGgiLCJoMiIsInAiLCJ1bCIsIm1hcCIsImkiLCJsaSJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsT0FBTyxlQUFlO0FBRXRCLFNBQ0VBLE1BQU0sRUFDTkMsS0FBSyxFQUNMQyxLQUFLLEVBQ0xDLFFBQVEsRUFDUkMsYUFBYSxFQUNiQyxRQUFRLEVBQ1JDLGNBQWMsUUFDVCxpQkFBaUI7QUFDeEIsU0FBU0MsZUFBZSxRQUFRLDZCQUE2QjtBQUM3RCxTQUFTQyxnQkFBZ0IsUUFBUSxvQkFBb0I7QUFDckQsU0FBU0MsSUFBSSxFQUFFQyxLQUFLLFFBQVEsZUFBZTtBQUMzQyxTQUFTQyxTQUFTLFFBQVEsZUFBZTtBQUN6QyxPQUFPQyxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxRQUFRO0FBQ2pELFNBQVNDLENBQUMsUUFBUSxNQUFNO0FBQ3hCLFNBQVNDLFVBQVUsUUFBUSw2QkFBZ0I7QUFDM0MsU0FBU0MsSUFBSSxFQUFFQyxhQUFhLFFBQVEsZ0NBQW1CO0FBQ3ZELFNBQVNDLGFBQWEsUUFBUSx3Q0FBMkI7QUFFekQsTUFBTUMsWUFBWTtBQU9s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
@@ -0,0 +1,116 @@
1
+ @layer payload-default {
2
+ .two-factor-auth-modal {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: 1000;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: 100%;
10
+
11
+ &:before {
12
+ content: '';
13
+ position: absolute;
14
+ inset: 0;
15
+ background: rgba(0, 0, 0, 0.8);
16
+ z-index: 0;
17
+ }
18
+
19
+ &__wrapper {
20
+ z-index: 1;
21
+ position: relative;
22
+ display: flex;
23
+ flex-direction: column;
24
+ gap: 16px;
25
+ border-radius: 3px;
26
+ border: 1px solid var(--theme-border-color);
27
+ background-color: var(--theme-elevation-50);
28
+ min-width: 340px;
29
+ max-width: 90vw;
30
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
31
+ }
32
+
33
+ &__close-button {
34
+ position: absolute;
35
+ top: 0;
36
+ right: 0;
37
+ margin-block: 0 !important;
38
+ padding: 10px !important;
39
+
40
+ svg {
41
+ width: 24px;
42
+ height: 24px;
43
+ }
44
+ }
45
+
46
+ &__content {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 1.5rem;
50
+ padding: 1.5rem 1.5rem 1rem 1.5rem;
51
+
52
+ h2 {
53
+ font-size: 1.5rem;
54
+ font-weight: 600;
55
+ margin: 0;
56
+ }
57
+
58
+ p {
59
+ margin: 0;
60
+ color: var(--theme-elevation-500);
61
+ }
62
+ }
63
+
64
+ &__verify-block {
65
+ display: flex;
66
+ flex-direction: column;
67
+ gap: 1.5rem;
68
+ margin-top: 1.5rem;
69
+ }
70
+
71
+ &__backup-codes {
72
+ >ul {
73
+ padding: 1rem;
74
+ background-color: var(--theme-elevation-50);
75
+ border: 1px solid var(--theme-elevation-100);
76
+ border-radius: 4px;
77
+ columns: 2;
78
+ font-family: monospace;
79
+ margin-bottom: 1rem;
80
+ list-style: none;
81
+ text-align: center;
82
+ }
83
+ }
84
+
85
+ &__qrcode {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ margin-bottom: 0.5rem;
90
+ }
91
+
92
+ &__uri {
93
+ display: flex;
94
+ align-items: center;
95
+ gap: 0.5rem;
96
+ border-radius: 3px;
97
+ background: var(--theme-elevation-100, #f3f3f3);
98
+ padding: 0.5rem 1rem;
99
+ font-size: 0.95em;
100
+ word-break: break-all;
101
+ }
102
+
103
+ &__copy-btn {
104
+ margin-block: 0.5rem;
105
+ margin-inline: auto;
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 0.5rem;
109
+ }
110
+
111
+ &__copy-icon {
112
+ margin-right: 0.25rem;
113
+ vertical-align: middle;
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,7 @@
1
+ import { AdminButtons } from "../components/admin-buttons";
2
+ import { AdminInviteButton } from "../components/admin-invite-button";
3
+ import { AlternativeMethods, CredentialsForm, LoginFormProvider, useLoginForm } from "../components/login-form";
4
+ import { LogoutButton } from "../components/logout-button";
5
+ import { TwoFactorAuth } from "../components/two-factor-auth";
6
+ export { AdminButtons, AdminInviteButton, AlternativeMethods, CredentialsForm, LoginFormProvider, LogoutButton, TwoFactorAuth, useLoginForm };
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,YAAY,EACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AdminButtons } from "../components/admin-buttons";
2
+ import { AdminInviteButton } from "../components/admin-invite-button";
3
+ import { AlternativeMethods, CredentialsForm, LoginFormProvider, useLoginForm } from "../components/login-form";
4
+ import { LogoutButton } from "../components/logout-button";
5
+ import { TwoFactorAuth } from "../components/two-factor-auth";
6
+ export { AdminButtons, AdminInviteButton, AlternativeMethods, CredentialsForm, LoginFormProvider, LogoutButton, TwoFactorAuth, useLoginForm };
7
+
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL2NsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZG1pbkJ1dHRvbnMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9hZG1pbi1idXR0b25zXCI7XG5pbXBvcnQgeyBBZG1pbkludml0ZUJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL2FkbWluLWludml0ZS1idXR0b25cIjtcbmltcG9ydCB7XG4gIEFsdGVybmF0aXZlTWV0aG9kcyxcbiAgQ3JlZGVudGlhbHNGb3JtLFxuICBMb2dpbkZvcm1Qcm92aWRlcixcbiAgdXNlTG9naW5Gb3JtXG59IGZyb20gXCIuLi9jb21wb25lbnRzL2xvZ2luLWZvcm1cIjtcbmltcG9ydCB7IExvZ291dEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL2xvZ291dC1idXR0b25cIjtcbmltcG9ydCB7IFR3b0ZhY3RvckF1dGggfSBmcm9tIFwiLi4vY29tcG9uZW50cy90d28tZmFjdG9yLWF1dGhcIjtcblxuZXhwb3J0IHtcbiAgQWRtaW5CdXR0b25zLFxuICBBZG1pbkludml0ZUJ1dHRvbixcbiAgQWx0ZXJuYXRpdmVNZXRob2RzLFxuICBDcmVkZW50aWFsc0Zvcm0sXG4gIExvZ2luRm9ybVByb3ZpZGVyLFxuICBMb2dvdXRCdXR0b24sXG4gIFR3b0ZhY3RvckF1dGgsXG4gIHVzZUxvZ2luRm9ybVxufTtcbiJdLCJuYW1lcyI6WyJBZG1pbkJ1dHRvbnMiLCJBZG1pbkludml0ZUJ1dHRvbiIsIkFsdGVybmF0aXZlTWV0aG9kcyIsIkNyZWRlbnRpYWxzRm9ybSIsIkxvZ2luRm9ybVByb3ZpZGVyIiwidXNlTG9naW5Gb3JtIiwiTG9nb3V0QnV0dG9uIiwiVHdvRmFjdG9yQXV0aCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLDhCQUE4QjtBQUMzRCxTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBb0M7QUFDdEUsU0FDRUMsa0JBQWtCLEVBQ2xCQyxlQUFlLEVBQ2ZDLGlCQUFpQixFQUNqQkMsWUFBWSxRQUNQLDJCQUEyQjtBQUNsQyxTQUFTQyxZQUFZLFFBQVEsOEJBQThCO0FBQzNELFNBQVNDLGFBQWEsUUFBUSxnQ0FBZ0M7QUFFOUQsU0FDRVAsWUFBWSxFQUNaQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJFLFlBQVksRUFDWkMsYUFBYSxFQUNiRixZQUFZLEdBQ1oifQ==
@@ -0,0 +1,9 @@
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 { AdminLogin, AdminSignup, ForgotPassword, Passkeys, ResetPassword, RSCRedirect, TwoFactorVerify };
9
+ //# sourceMappingURL=rsc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,cAAc,MAAM,0BAA0B,CAAC;AACtD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EAChB,CAAC"}
@@ -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 { AdminLogin, AdminSignup, ForgotPassword, Passkeys, ResetPassword, RSCRedirect, TwoFactorVerify };
9
+
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL3JzYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXNza2V5cyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3Bhc3NrZXlzXCI7XG5pbXBvcnQgUlNDUmVkaXJlY3QgZnJvbSBcIi4uL2NvbXBvbmVudHMvcnNjLXJlZGlyZWN0XCI7XG5pbXBvcnQgQWRtaW5Mb2dpbiBmcm9tIFwiLi4vdmlld3MvYWRtaW4tbG9naW5cIjtcbmltcG9ydCBBZG1pblNpZ251cCBmcm9tIFwiLi4vdmlld3MvYWRtaW4tc2lnbnVwXCI7XG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSBcIi4uL3ZpZXdzL2ZvcmdvdC1wYXNzd29yZFwiO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSBcIi4uL3ZpZXdzL3Jlc2V0LXBhc3N3b3JkXCI7XG5pbXBvcnQgVHdvRmFjdG9yVmVyaWZ5IGZyb20gXCIuLi92aWV3cy90d28tZmFjdG9yLXZlcmlmeVwiO1xuXG5leHBvcnQge1xuICBBZG1pbkxvZ2luLFxuICBBZG1pblNpZ251cCxcbiAgRm9yZ290UGFzc3dvcmQsXG4gIFBhc3NrZXlzLFxuICBSZXNldFBhc3N3b3JkLFxuICBSU0NSZWRpcmVjdCxcbiAgVHdvRmFjdG9yVmVyaWZ5XG59O1xuIl0sIm5hbWVzIjpbIlBhc3NrZXlzIiwiUlNDUmVkaXJlY3QiLCJBZG1pbkxvZ2luIiwiQWRtaW5TaWdudXAiLCJGb3Jnb3RQYXNzd29yZCIsIlJlc2V0UGFzc3dvcmQiLCJUd29GYWN0b3JWZXJpZnkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsT0FBT0MsaUJBQWlCLDZCQUE2QjtBQUNyRCxPQUFPQyxnQkFBZ0IsdUJBQXVCO0FBQzlDLE9BQU9DLGlCQUFpQix3QkFBd0I7QUFDaEQsT0FBT0Msb0JBQW9CLDJCQUEyQjtBQUN0RCxPQUFPQyxtQkFBbUIsMEJBQTBCO0FBQ3BELE9BQU9DLHFCQUFxQiw2QkFBNkI7QUFFekQsU0FDRUosVUFBVSxFQUNWQyxXQUFXLEVBQ1hDLGNBQWMsRUFDZEosUUFBUSxFQUNSSyxhQUFhLEVBQ2JKLFdBQVcsRUFDWEssZUFBZSxHQUNmIn0=
@@ -0,0 +1,3 @@
1
+ import type { GenerateAdminInviteUrlFn } from "@/better-auth/plugin/types";
2
+ export declare const generateAdminInviteUrl: GenerateAdminInviteUrlFn;
3
+ //# sourceMappingURL=generate-admin-invite-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-admin-invite-url.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/generate-admin-invite-url.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,eAAO,MAAM,sBAAsB,EAAE,wBAUpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { adminRoutes } from "../../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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZW5lcmF0ZS1hZG1pbi1pbnZpdGUtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkbWluUm91dGVzIH0gZnJvbSBcIkAvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZUFkbWluSW52aXRlVXJsRm4gfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQWRtaW5JbnZpdGVVcmw6IEdlbmVyYXRlQWRtaW5JbnZpdGVVcmxGbiA9ICh7XG4gIHBheWxvYWQsXG4gIHRva2VuXG59KSA9PiB7XG4gIGlmICghcGF5bG9hZD8uY29uZmlnPy5zZXJ2ZXJVUkwpIHtcbiAgICBwYXlsb2FkLmxvZ2dlci53YXJuKFxuICAgICAgXCJwYXlsb2FkLmNvbmZpZy5zZXJ2ZXJVUkwgaXMgbm90IHNldC4gU2V0IGl0IHRvIGdlbmVyYXRlIGEgZnVsbCBVUkwgZm9yIHRoZSBhZG1pbiBpbnZpdGUgbGluay5cIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGAke3BheWxvYWQuZ2V0QWRtaW5VUkwoKX0ke2FkbWluUm91dGVzLmFkbWluU2lnbnVwfT90b2tlbj0ke3Rva2VufWA7XG59O1xuIl0sIm5hbWVzIjpbImFkbWluUm91dGVzIiwiZ2VuZXJhdGVBZG1pbkludml0ZVVybCIsInBheWxvYWQiLCJ0b2tlbiIsImNvbmZpZyIsInNlcnZlclVSTCIsImxvZ2dlciIsIndhcm4iLCJnZXRBZG1pblVSTCIsImFkbWluU2lnbnVwIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFXLFFBQVEsa0JBQWlDO0FBRzdELE9BQU8sTUFBTUMseUJBQW1ELENBQUMsRUFDL0RDLE9BQU8sRUFDUEMsS0FBSyxFQUNOO0lBQ0MsSUFBSSxDQUFDRCxTQUFTRSxRQUFRQyxXQUFXO1FBQy9CSCxRQUFRSSxNQUFNLENBQUNDLElBQUksQ0FDakI7SUFFSjtJQUNBLE9BQU8sR0FBR0wsUUFBUU0sV0FBVyxLQUFLUixZQUFZUyxXQUFXLENBQUMsT0FBTyxFQUFFTixPQUFPO0FBQzVFLEVBQUUifQ==
@@ -0,0 +1,2 @@
1
+ export declare const getSafeRedirect: (redirectParam: string | string[], fallback?: string) => string;
2
+ //# sourceMappingURL=get-safe-redirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-safe-redirect.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/utils/get-safe-redirect.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,GAAG,MAAM,EAAE,EAChC,WAAU,MAAY,KACrB,MA8BF,CAAC"}
@@ -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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZXQtc2FmZS1yZWRpcmVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ2V0U2FmZVJlZGlyZWN0ID0gKFxuICByZWRpcmVjdFBhcmFtOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgZmFsbGJhY2s6IHN0cmluZyA9IFwiL1wiXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIHJlZGlyZWN0UGFyYW0gIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgYW5kIGRlY29kZSB0aGUgcGF0aFxuICBsZXQgcmVkaXJlY3RQYXRoOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgcmVkaXJlY3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0UGFyYW0udHJpbSgpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrOyAvLyBpbnZhbGlkIGVuY29kaW5nXG4gIH1cblxuICBjb25zdCBpc1NhZmVSZWRpcmVjdCA9XG4gICAgLy8gTXVzdCBzdGFydCB3aXRoIGEgc2luZ2xlIGZvcndhcmQgc2xhc2ggKGUuZy4sIFwiL2FkbWluXCIpXG4gICAgcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpICYmXG4gICAgLy8gUHJldmVudCBwcm90b2NvbC1yZWxhdGl2ZSBVUkxzIChlLmcuLCBcIi8vZXhhbXBsZS5jb21cIilcbiAgICAhcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoXCIvL1wiKSAmJlxuICAgIC8vIFByZXZlbnQgZW5jb2RlZCBzbGFzaGVzIHRoYXQgY291bGQgcmVzb2x2ZSB0byBwcm90b2NvbC1yZWxhdGl2ZVxuICAgICFyZWRpcmVjdFBhdGguc3RhcnRzV2l0aChcIi8lMkZcIikgJiZcbiAgICAvLyBQcmV2ZW50IGJhY2tzbGFzaC1iYXNlZCBlc2NhcGUgYXR0ZW1wdHMgKGUuZy4sIFwiL1xcXFwvZXhhbXBsZS5jb21cIiwgXCIvXFxcXFxcXFxleGFtcGxlLmNvbVwiLCBcIi9cXFxcZXhhbXBsZS5jb21cIilcbiAgICAhcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoXCIvXFxcXC9cIikgJiZcbiAgICAhcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoXCIvXFxcXFxcXFxcIikgJiZcbiAgICAhcmVkaXJlY3RQYXRoLnN0YXJ0c1dpdGgoXCIvXFxcXFwiKSAmJlxuICAgIC8vIFByZXZlbnQgamF2YXNjcmlwdC1iYXNlZCBzY2hlbWVzIChlLmcuLCBcIi9qYXZhc2NyaXB0OmFsZXJ0KDEpXCIpXG4gICAgIXJlZGlyZWN0UGF0aC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCIvamF2YXNjcmlwdDpcIikgJiZcbiAgICAvLyBQcmV2ZW50IGF0dGVtcHRzIHRvIHJlZGlyZWN0IHRvIGZ1bGwgVVJMcyB1c2luZyBcIi9odHRwOlwiIG9yIFwiL2h0dHBzOlwiXG4gICAgIXJlZGlyZWN0UGF0aC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCIvaHR0cFwiKTtcblxuICByZXR1cm4gaXNTYWZlUmVkaXJlY3QgPyByZWRpcmVjdFBhdGggOiBmYWxsYmFjaztcbn07XG4iXSwibmFtZXMiOlsiZ2V0U2FmZVJlZGlyZWN0IiwicmVkaXJlY3RQYXJhbSIsImZhbGxiYWNrIiwicmVkaXJlY3RQYXRoIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidHJpbSIsImlzU2FmZVJlZGlyZWN0Iiwic3RhcnRzV2l0aCIsInRvTG93ZXJDYXNlIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLGtCQUFrQixDQUM3QkMsZUFDQUMsV0FBbUIsR0FBRztJQUV0QixJQUFJLE9BQU9ELGtCQUFrQixVQUFVO1FBQ3JDLE9BQU9DO0lBQ1Q7SUFFQSxnQ0FBZ0M7SUFDaEMsSUFBSUM7SUFDSixJQUFJO1FBQ0ZBLGVBQWVDLG1CQUFtQkgsY0FBY0ksSUFBSTtJQUN0RCxFQUFFLE9BQU07UUFDTixPQUFPSCxVQUFVLG1CQUFtQjtJQUN0QztJQUVBLE1BQU1JLGlCQUNKLDBEQUEwRDtJQUMxREgsYUFBYUksVUFBVSxDQUFDLFFBQ3hCLHlEQUF5RDtJQUN6RCxDQUFDSixhQUFhSSxVQUFVLENBQUMsU0FDekIsa0VBQWtFO0lBQ2xFLENBQUNKLGFBQWFJLFVBQVUsQ0FBQyxXQUN6QiwwR0FBMEc7SUFDMUcsQ0FBQ0osYUFBYUksVUFBVSxDQUFDLFdBQ3pCLENBQUNKLGFBQWFJLFVBQVUsQ0FBQyxZQUN6QixDQUFDSixhQUFhSSxVQUFVLENBQUMsVUFDekIsa0VBQWtFO0lBQ2xFLENBQUNKLGFBQWFLLFdBQVcsR0FBR0QsVUFBVSxDQUFDLG1CQUN2Qyx3RUFBd0U7SUFDeEUsQ0FBQ0osYUFBYUssV0FBVyxHQUFHRCxVQUFVLENBQUM7SUFFekMsT0FBT0QsaUJBQWlCSCxlQUFlRDtBQUN6QyxFQUFFIn0=
@@ -0,0 +1,23 @@
1
+ import type { LoginMethod } from "@/better-auth/plugin/types";
2
+ interface AdminLoginClientProps {
3
+ loginMethods: LoginMethod[];
4
+ plugins?: {
5
+ username?: boolean;
6
+ passkey?: boolean;
7
+ magicLink?: boolean;
8
+ };
9
+ loginIdentifiers: ("email" | "username")[];
10
+ prefill?: {
11
+ email?: string;
12
+ password?: string;
13
+ username?: string;
14
+ };
15
+ searchParams: {
16
+ [key: string]: string | string[] | undefined;
17
+ };
18
+ baseURL?: string;
19
+ basePath?: string;
20
+ }
21
+ export declare function AdminLoginClient({ loginMethods, searchParams, loginIdentifiers, baseURL, basePath, plugins, prefill }: AdminLoginClientProps): import("react").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,UAAU,qBAAqB;IAC7B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,gBAAgB,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACR,EAAE,qBAAqB,+BAqBvB"}