@baseplate-dev/plugin-auth 0.6.17 → 0.6.18

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 (197) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/admin-crud-manage-roles-action.generator.d.ts +12 -0
  3. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/index.d.ts +12 -0
  4. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/template-renderers.d.ts +6 -0
  5. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/typed-templates.d.ts +6 -0
  6. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/admin-crud-reset-password-action.generator.d.ts +12 -0
  7. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/index.d.ts +12 -0
  8. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/template-renderers.d.ts +6 -0
  9. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/typed-templates.d.ts +12 -0
  10. package/dist/better-auth/admin/generators/admin-crud-roles-column/admin-crud-roles-column.generator.d.ts +6 -0
  11. package/dist/better-auth/generators/react/better-auth-pages/better-auth-pages.generator.d.ts +6 -0
  12. package/dist/better-auth/generators/react/better-auth-pages/generated/index.d.ts +36 -0
  13. package/dist/better-auth/generators/react/better-auth-pages/generated/template-renderers.d.ts +6 -0
  14. package/dist/better-auth/generators/react/better-auth-pages/generated/typed-templates.d.ts +60 -0
  15. package/dist/better-auth/generators/react/react-better-auth/generated/index.d.ts +12 -0
  16. package/dist/better-auth/generators/react/react-better-auth/generated/template-renderers.d.ts +6 -0
  17. package/dist/better-auth/generators/react/react-better-auth/generated/typed-templates.d.ts +6 -0
  18. package/dist/better-auth/generators/react/react-better-auth/react-better-auth.generator.d.ts +6 -0
  19. package/dist/local-auth/admin/common.js +6 -0
  20. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/admin-crud-invite-user-action.generator.d.ts +531 -0
  21. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/admin-crud-invite-user-action.generator.js +119 -0
  22. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/index.d.ts +540 -0
  23. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/index.js +11 -0
  24. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/template-paths.d.ts +12 -0
  25. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/template-paths.js +24 -0
  26. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/template-renderers.d.ts +276 -0
  27. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/template-renderers.js +45 -0
  28. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/typed-templates.d.ts +263 -0
  29. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/typed-templates.js +21 -0
  30. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/index.d.ts +2 -0
  31. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/index.js +2 -0
  32. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/templates/routes/-components/invite-user-dialog.d.ts +21 -0
  33. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/templates/routes/-components/invite-user-dialog.js +69 -0
  34. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/templates/routes/-components/invite-user-dialog.tsx +122 -0
  35. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/admin-crud-manage-roles-action.generator.d.ts +12 -0
  36. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/index.d.ts +12 -0
  37. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/template-renderers.d.ts +6 -0
  38. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/typed-templates.d.ts +6 -0
  39. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/admin-crud-reset-password-action.generator.d.ts +12 -0
  40. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/index.d.ts +12 -0
  41. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/template-renderers.d.ts +6 -0
  42. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/typed-templates.d.ts +12 -0
  43. package/dist/local-auth/admin/generators/admin-crud-roles-column/admin-crud-roles-column.generator.d.ts +6 -0
  44. package/dist/local-auth/admin/node.js +13 -0
  45. package/dist/local-auth/admin/schema/invite-user-action.d.ts +12 -0
  46. package/dist/local-auth/admin/schema/invite-user-action.js +6 -0
  47. package/dist/local-auth/admin/web.js +8 -0
  48. package/dist/local-auth/core/common.js +7 -2
  49. package/dist/local-auth/core/components/local-auth-definition-editor.js +2 -1
  50. package/dist/local-auth/core/components/local-auth-web-app-settings-form.d.ts +9 -0
  51. package/dist/local-auth/core/components/local-auth-web-app-settings-form.js +11 -0
  52. package/dist/local-auth/core/generators/auth-email-password/auth-email-password.generator.d.ts +6 -0
  53. package/dist/local-auth/core/generators/auth-email-password/auth-email-password.generator.js +66 -6
  54. package/dist/local-auth/core/generators/auth-email-password/generated/index.d.ts +188 -0
  55. package/dist/local-auth/core/generators/auth-email-password/generated/template-paths.d.ts +5 -0
  56. package/dist/local-auth/core/generators/auth-email-password/generated/template-paths.js +5 -0
  57. package/dist/local-auth/core/generators/auth-email-password/generated/template-renderers.d.ts +18 -0
  58. package/dist/local-auth/core/generators/auth-email-password/generated/template-renderers.js +66 -0
  59. package/dist/local-auth/core/generators/auth-email-password/generated/typed-templates.d.ts +192 -0
  60. package/dist/local-auth/core/generators/auth-email-password/generated/typed-templates.js +82 -1
  61. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/otp.constants.d.ts +19 -0
  62. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/otp.constants.js +20 -0
  63. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/otp.constants.ts +22 -0
  64. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/password.constants.d.ts +12 -0
  65. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/password.constants.js +12 -0
  66. package/dist/local-auth/core/generators/auth-email-password/templates/module/constants/password.constants.ts +14 -0
  67. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/email-otp.mutations.d.ts +2 -0
  68. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/email-otp.mutations.js +30 -0
  69. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/email-otp.mutations.ts +38 -0
  70. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/invite.mutations.d.ts +2 -0
  71. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/invite.mutations.js +42 -0
  72. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/invite.mutations.ts +54 -0
  73. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/user-password.mutations.js +2 -19
  74. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/user-password.mutations.ts +1 -22
  75. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/email-otp.service.d.ts +37 -0
  76. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/email-otp.service.js +225 -0
  77. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/email-otp.service.ts +333 -0
  78. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/invite.service.d.ts +39 -0
  79. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/invite.service.js +138 -0
  80. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/invite.service.ts +209 -0
  81. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.js +3 -3
  82. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts +3 -2
  83. package/dist/local-auth/core/generators/auth-email-templates/auth-email-templates.generator.d.ts +3 -1
  84. package/dist/local-auth/core/generators/auth-email-templates/auth-email-templates.generator.js +18 -3
  85. package/dist/local-auth/core/generators/auth-email-templates/generated/index.d.ts +40 -0
  86. package/dist/local-auth/core/generators/auth-email-templates/generated/template-paths.d.ts +2 -0
  87. package/dist/local-auth/core/generators/auth-email-templates/generated/template-paths.js +2 -0
  88. package/dist/local-auth/core/generators/auth-email-templates/generated/template-renderers.d.ts +6 -0
  89. package/dist/local-auth/core/generators/auth-email-templates/generated/template-renderers.js +20 -0
  90. package/dist/local-auth/core/generators/auth-email-templates/generated/typed-templates.d.ts +40 -0
  91. package/dist/local-auth/core/generators/auth-email-templates/generated/typed-templates.js +24 -0
  92. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/email-otp.email.d.ts +3 -0
  93. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/email-otp.email.js +18 -0
  94. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/email-otp.email.tsx +57 -0
  95. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/invite.email.d.ts +3 -0
  96. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/invite.email.js +14 -0
  97. package/dist/local-auth/core/generators/auth-email-templates/templates/src/emails/auth/invite.email.tsx +47 -0
  98. package/dist/local-auth/core/generators/auth-module/auth-module.generator.d.ts +4 -0
  99. package/dist/local-auth/core/generators/auth-module/auth-module.generator.js +5 -1
  100. package/dist/local-auth/core/generators/auth-module/generated/index.d.ts +20 -0
  101. package/dist/local-auth/core/generators/auth-module/generated/template-paths.d.ts +1 -0
  102. package/dist/local-auth/core/generators/auth-module/generated/template-paths.js +1 -0
  103. package/dist/local-auth/core/generators/auth-module/generated/template-renderers.d.ts +3 -0
  104. package/dist/local-auth/core/generators/auth-module/generated/template-renderers.js +13 -0
  105. package/dist/local-auth/core/generators/auth-module/generated/ts-import-providers.d.ts +9 -0
  106. package/dist/local-auth/core/generators/auth-module/generated/ts-import-providers.js +6 -0
  107. package/dist/local-auth/core/generators/auth-module/generated/typed-templates.d.ts +17 -0
  108. package/dist/local-auth/core/generators/auth-module/generated/typed-templates.js +20 -0
  109. package/dist/local-auth/core/generators/auth-module/templates/module/services/auth-verification.service.d.ts +4 -0
  110. package/dist/local-auth/core/generators/auth-module/templates/module/services/auth-verification.service.js +1 -1
  111. package/dist/local-auth/core/generators/auth-module/templates/module/services/auth-verification.service.ts +1 -1
  112. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.d.ts +66 -0
  113. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.js +134 -0
  114. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.ts +184 -0
  115. package/dist/local-auth/core/generators/auth-routes/auth-routes.generator.d.ts +8 -0
  116. package/dist/local-auth/core/generators/auth-routes/auth-routes.generator.js +38 -5
  117. package/dist/local-auth/core/generators/auth-routes/generated/index.d.ts +840 -268
  118. package/dist/local-auth/core/generators/auth-routes/generated/template-paths.d.ts +3 -0
  119. package/dist/local-auth/core/generators/auth-routes/generated/template-paths.js +3 -0
  120. package/dist/local-auth/core/generators/auth-routes/generated/template-renderers.d.ts +18 -0
  121. package/dist/local-auth/core/generators/auth-routes/generated/template-renderers.js +51 -0
  122. package/dist/local-auth/core/generators/auth-routes/generated/typed-templates.d.ts +608 -283
  123. package/dist/local-auth/core/generators/auth-routes/generated/typed-templates.js +69 -23
  124. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/-otp-constants.d.ts +9 -0
  125. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/-otp-constants.js +10 -0
  126. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/-otp-constants.ts +11 -0
  127. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/accept-invite.d.ts +7 -0
  128. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/accept-invite.js +148 -0
  129. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/accept-invite.tsx +264 -0
  130. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login-otp.d.ts +7 -0
  131. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login-otp.js +184 -0
  132. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login-otp.tsx +311 -0
  133. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.js +1 -1
  134. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.tsx +2 -9
  135. package/dist/local-auth/core/generators/react-session/generated/index.d.ts +12 -0
  136. package/dist/local-auth/core/generators/react-session/generated/template-renderers.d.ts +6 -0
  137. package/dist/local-auth/core/generators/react-session/generated/typed-templates.d.ts +12 -0
  138. package/dist/local-auth/core/generators/react-session/react-session.generator.d.ts +6 -0
  139. package/dist/local-auth/core/node.js +24 -6
  140. package/dist/local-auth/core/schema/migrations.d.ts +3 -0
  141. package/dist/local-auth/core/schema/migrations.js +36 -0
  142. package/dist/local-auth/core/schema/models.js +8 -0
  143. package/dist/local-auth/core/schema/plugin-definition.d.ts +1 -0
  144. package/dist/local-auth/core/schema/plugin-definition.js +1 -0
  145. package/dist/local-auth/core/schema/web-app-schema.d.ts +15 -0
  146. package/dist/local-auth/core/schema/web-app-schema.js +16 -0
  147. package/dist/local-auth/core/web.js +8 -1
  148. package/dist/web/assets/{_virtual_mf-localSharedImportMap___mfe_internal__plugin_mf_2_auth-ChkXxpXe.js → _virtual_mf-localSharedImportMap___mfe_internal__plugin_mf_2_auth__mf_owner__1-CKKmnLep.js} +42 -34
  149. package/dist/web/assets/{dist-DY7ZXvq4.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-Cx7TvZ_H.js} +16717 -373
  150. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib_mf_1_web__loadShare__.js-37vlYRxk.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib_mf_1_web__loadShare__.js-D3Nvasea.js} +90 -38
  151. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-DRSNXPPo.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js} +1645 -921
  152. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-DfiQqvVC.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-CiccpWjh.js} +212 -57
  153. package/dist/web/assets/auth-CsHp2bQi.js +1 -0
  154. package/dist/web/assets/common-BGTuTgx7.js +43 -0
  155. package/dist/web/assets/common-C8_sC5pp.js +70 -0
  156. package/dist/web/assets/{common-ByxS61u8.js → common-Co5lW_TK.js} +10 -10
  157. package/dist/web/assets/{common-iHaemino.js → common-CoLuMS7U.js} +6 -6
  158. package/dist/web/assets/common-Dueu_1NG.js +36 -0
  159. package/dist/web/assets/{common-TDf_PrjX.js → common-N3skPbzk.js} +10 -10
  160. package/dist/web/assets/{dist-CrLSslv6.js → dist-DQd1TAJX.js} +273 -132
  161. package/dist/web/assets/{get-auth-plugin-definition-kDCtXq_6.js → get-auth-plugin-definition-DyokUVjX.js} +3 -3
  162. package/dist/web/assets/{hostInit-Cruek6c6.js → hostInit-BCYmw0H5.js} +32 -5
  163. package/dist/web/assets/{mf-entry-bootstrap-0-dfed0275.js → mf-entry-bootstrap-0-3ede9334.js} +2 -1
  164. package/dist/web/assets/{mf-entry-bootstrap-1-5275674a.js → mf-entry-bootstrap-1-3da85eea.js} +3 -2
  165. package/dist/web/assets/{mf-entry-bootstrap-2-39fb9255.js → mf-entry-bootstrap-2-32e24e11.js} +3 -2
  166. package/dist/web/assets/{mf-entry-bootstrap-3-49e64336.js → mf-entry-bootstrap-3-a3cfea9d.js} +3 -2
  167. package/dist/web/assets/{models-DSvs_3bA.js → models-BcPOQC5p.js} +4 -5
  168. package/dist/web/assets/{models-BZmCbizK.js → models-BcUgOGGn.js} +11 -6
  169. package/dist/web/assets/{plugin-definition-CYj29S3q.js → plugin-definition-D1EImXIf.js} +9 -10
  170. package/dist/web/assets/plugin-definition-lw-gB4hU.js +10 -0
  171. package/dist/web/assets/{styles-yjbHBTlw.js → styles-EOyEbGA4.js} +9 -10
  172. package/dist/web/assets/{virtualExposes-CbPBmicF.js → virtualExposes-DWORnjyA.js} +1 -1
  173. package/dist/web/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__plugin-auth__remoteEntry_js-t-KnBiUh.js +747 -0
  174. package/dist/web/assets/{virtual_mf-exposes___mfe_internal__plugin-auth__remoteEntry_js-B6BXIeF1.js → virtual_mf-exposes___mfe_internal__plugin-auth__remoteEntry_js-DZfE3QCR.js} +13 -13
  175. package/dist/web/assets/{web-VqBA3jxZ.js → web-CBVepebK.js} +22 -22
  176. package/dist/web/assets/{web-D0MSKfyv.js → web-Dgb85jhs.js} +47 -47
  177. package/dist/web/assets/{web-CXAHKjIY.js → web-EDeSquSP.js} +28 -28
  178. package/dist/web/assets/{web-1eTcxMhf.js → web-PqAcfBSy.js} +9 -9
  179. package/dist/web/assets/{web-CDAKPPK9.js → web-RhChfBw_.js} +21 -21
  180. package/dist/web/assets/web-kaD9AzNS.js +59 -0
  181. package/dist/web/assets/web-xJ-GnSkC.js +148 -0
  182. package/dist/web/index.html +5 -5
  183. package/dist/web/remoteEntry.js +1 -1
  184. package/package.json +14 -14
  185. package/dist/web/assets/_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-CO5Pvo0y.js +0 -384
  186. package/dist/web/assets/_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare__zod__loadShare__.js-BEZ7A-cz.js +0 -13566
  187. package/dist/web/assets/auth-BxAE0rgh.js +0 -1
  188. package/dist/web/assets/common-CKl_XlvH.js +0 -37
  189. package/dist/web/assets/common-UpVCKZeW.js +0 -41
  190. package/dist/web/assets/common-crSwCD36.js +0 -37
  191. package/dist/web/assets/model-utils-C0WDb_Ec.js +0 -1599
  192. package/dist/web/assets/plugin-definition-DOMmPL2Z.js +0 -11
  193. package/dist/web/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__plugin-auth__remoteEntry_js-XM6iYVxf.js +0 -259
  194. package/dist/web/assets/virtual_mf-exposes-ssr___mfe_internal__plugin-auth__remoteEntry_js-DGjg7Brm.js +0 -129
  195. package/dist/web/assets/web-DbeAaDTV.js +0 -118
  196. package/dist/web/assets/web-miDovYk_.js +0 -46
  197. package/dist/web/remoteEntry.ssr.js +0 -43
@@ -1,6 +1,6 @@
1
1
  import { appModuleGenerator, passwordHasherServiceGenerator, } from '@baseplate-dev/fastify-generators';
2
2
  import { emailTemplateSpec } from '@baseplate-dev/plugin-email';
3
- import { appCompilerSpec, backendAppEntryType, createPluginModule, PluginUtils, webAppEntryType, } from '@baseplate-dev/project-builder-lib';
3
+ import { appCompilerSpec, backendAppEntryType, createPluginModule, pluginAppCompiler, PluginUtils, webAppEntryType, } from '@baseplate-dev/project-builder-lib';
4
4
  import { getAuthPluginDefinition } from '#src/auth/index.js';
5
5
  import { authApolloGenerator } from './generators/auth-apollo/auth-apollo.generator.js';
6
6
  import { authEmailPasswordGenerator } from './generators/auth-email-password/auth-email-password.generator.js';
@@ -9,6 +9,7 @@ import { authHooksGenerator } from './generators/auth-hooks/auth-hooks.generator
9
9
  import { authRoutesGenerator } from './generators/auth-routes/auth-routes.generator.js';
10
10
  import { authModuleGenerator, reactAuthGenerator, seedInitialUserGenerator, } from './generators/index.js';
11
11
  import { reactSessionGenerator } from './generators/react-session/react-session.generator.js';
12
+ import { getLocalAuthWebAppData } from './schema/web-app-schema.js';
12
13
  export default createPluginModule({
13
14
  name: 'node',
14
15
  dependencies: {
@@ -16,8 +17,12 @@ export default createPluginModule({
16
17
  emailTemplate: emailTemplateSpec,
17
18
  },
18
19
  initialize: ({ appCompiler, emailTemplate }, { pluginKey }) => {
19
- // Register auth email templates with the transactional lib
20
- emailTemplate.generators.push(authEmailTemplatesGenerator({}));
20
+ // Register auth email templates with the transactional lib. Resolved lazily
21
+ // so the sign-in code email is only emitted when that flow is enabled.
22
+ emailTemplate.generators.push(({ projectDefinition }) => {
23
+ const { emailOtp } = PluginUtils.configByKeyOrThrow(projectDefinition, pluginKey);
24
+ return authEmailTemplatesGenerator({ emailOtp });
25
+ });
21
26
  // register backend compiler
22
27
  appCompiler.compilers.push({
23
28
  pluginKey,
@@ -30,6 +35,12 @@ export default createPluginModule({
30
35
  const devWebPorts = webApps.map((app) => app.devPort);
31
36
  const devWebDomainPort = devWebPorts[0] ??
32
37
  projectDefinition.settings.general.portOffset + 30;
38
+ // The register mutation is shared by every web app on this
39
+ // backend, so it can only be dropped once none of them allow
40
+ // self-service registration.
41
+ const disableRegistration = webApps.length > 0 &&
42
+ webApps.every((app) => getLocalAuthWebAppData(app, pluginKey)?.disableRegistration ??
43
+ false);
33
44
  const additionalAdminRoles = localAuthDefinition.additionalUserAdminRoles.map((role) => definitionContainer.nameFromId(role));
34
45
  // 'admin' is always included since it is now a built-in role guaranteed to exist
35
46
  const adminRoles = [...new Set(['admin', ...additionalAdminRoles])];
@@ -40,6 +51,7 @@ export default createPluginModule({
40
51
  authModule: authModuleGenerator({
41
52
  userAdminRoles: adminRoles,
42
53
  devWebPorts,
54
+ emailOtp: localAuthDefinition.emailOtp,
43
55
  }),
44
56
  emailPassword: appModuleGenerator({
45
57
  id: 'email-password',
@@ -49,17 +61,21 @@ export default createPluginModule({
49
61
  adminRoles,
50
62
  devWebDomainPort,
51
63
  requireNameOnRegistration: localAuthDefinition.requireNameOnRegistration,
64
+ emailOtp: localAuthDefinition.emailOtp,
65
+ disableRegistration,
52
66
  }),
53
67
  hasher: passwordHasherServiceGenerator({}),
54
68
  },
55
69
  }),
56
70
  });
57
71
  },
58
- }, {
72
+ }, pluginAppCompiler({
59
73
  pluginKey,
60
74
  appType: webAppEntryType,
61
- compile: ({ projectDefinition, appCompiler }) => {
75
+ compile: ({ projectDefinition, appDefinition, appCompiler }) => {
62
76
  const localAuthDefinition = PluginUtils.configByKeyOrThrow(projectDefinition, pluginKey);
77
+ const disableRegistration = getLocalAuthWebAppData(appDefinition, pluginKey)
78
+ ?.disableRegistration ?? false;
63
79
  appCompiler.addRootChildren({
64
80
  authApollo: authApolloGenerator({}),
65
81
  reactAuth: reactAuthGenerator({}),
@@ -67,10 +83,12 @@ export default createPluginModule({
67
83
  reactSession: reactSessionGenerator({}),
68
84
  authRoutes: authRoutesGenerator({
69
85
  requireNameOnRegistration: localAuthDefinition.requireNameOnRegistration,
86
+ emailOtp: localAuthDefinition.emailOtp,
87
+ disableRegistration,
70
88
  }),
71
89
  });
72
90
  },
73
- });
91
+ }));
74
92
  },
75
93
  });
76
94
  //# sourceMappingURL=node.js.map
@@ -0,0 +1,3 @@
1
+ import type { PluginConfigMigration } from '@baseplate-dev/project-builder-lib';
2
+ export declare const LOCAL_AUTH_PLUGIN_CONFIG_MIGRATIONS: PluginConfigMigration[];
3
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { modelScalarFieldEntityType } from '@baseplate-dev/project-builder-lib';
2
+ import { LOCAL_AUTH_MODELS } from '#src/local-auth/constants/model-names.js';
3
+ export const LOCAL_AUTH_PLUGIN_CONFIG_MIGRATIONS = [
4
+ {
5
+ name: 'add-auth-verification-attempts',
6
+ version: 1,
7
+ // Emailed sign-in codes count failed guesses in a column so the counter can
8
+ // be incremented in the database. The field is added for every project, not
9
+ // just those with the flow enabled, because migrations run on a version
10
+ // bump rather than when the setting is toggled — gating it here would break
11
+ // anyone who turns the flow on later.
12
+ migrate: () => ({
13
+ updateProjectDefinition: (draft) => {
14
+ const draftDef = draft;
15
+ const authVerification = draftDef.models?.find((model) => model.name === LOCAL_AUTH_MODELS.authVerification);
16
+ const fields = authVerification?.model?.fields;
17
+ // Projects created after this change are seeded with the field already.
18
+ if (!fields || fields.some((field) => field.name === 'attempts')) {
19
+ return;
20
+ }
21
+ // Ahead of expiresAt/createdAt, matching the seeded field order so a
22
+ // migrated definition and a fresh one produce the same schema.
23
+ const timestampIndex = fields.findIndex((field) => field.name === 'expiresAt');
24
+ const insertAt = timestampIndex === -1 ? fields.length : timestampIndex;
25
+ fields.splice(insertAt, 0, {
26
+ id: modelScalarFieldEntityType.generateNewId(),
27
+ name: 'attempts',
28
+ type: 'int',
29
+ isOptional: false,
30
+ options: { default: '0' },
31
+ });
32
+ },
33
+ }),
34
+ },
35
+ ];
36
+ //# sourceMappingURL=migrations.js.map
@@ -247,6 +247,14 @@ export function createLocalAuthPartialDefinition(authFeatureName, accountsFeatur
247
247
  type: 'json',
248
248
  isOptional: true,
249
249
  },
250
+ // Failed guesses against a short code. Only the emailed-code flow
251
+ // uses this; split-token rows leave it at 0, since their verifier
252
+ // is random enough that a single miss deletes the record outright.
253
+ {
254
+ name: 'attempts',
255
+ type: 'int',
256
+ options: { default: '0' },
257
+ },
250
258
  {
251
259
  name: 'expiresAt',
252
260
  type: 'dateTime',
@@ -3,6 +3,7 @@ import { z } from 'zod';
3
3
  export declare const createLocalAuthPluginDefinitionSchema: (context: import("@baseplate-dev/project-builder-lib").DefinitionSchemaParserContext) => z.ZodObject<{
4
4
  additionalUserAdminRoles: z.ZodPrefault<z.ZodArray<z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>>>;
5
5
  requireNameOnRegistration: z.ZodDefault<z.ZodBoolean>;
6
+ emailOtp: z.ZodDefault<z.ZodBoolean>;
6
7
  }, z.core.$strip>;
7
8
  export type LocalAuthPluginDefinition = def.InferOutput<typeof createLocalAuthPluginDefinitionSchema>;
8
9
  export type LocalAuthPluginDefinitionInput = def.InferInput<typeof createLocalAuthPluginDefinitionSchema>;
@@ -6,5 +6,6 @@ export const createLocalAuthPluginDefinitionSchema = definitionSchema((ctx) => z
6
6
  onDelete: 'DELETE',
7
7
  })), []),
8
8
  requireNameOnRegistration: z.boolean().default(false),
9
+ emailOtp: z.boolean().default(false),
9
10
  }));
10
11
  //# sourceMappingURL=plugin-definition.js.map
@@ -0,0 +1,15 @@
1
+ import type { def, WebAppConfigWithPluginData } from '@baseplate-dev/project-builder-lib';
2
+ import z from 'zod';
3
+ /**
4
+ * Per-app local-auth settings contributed to the web app config via
5
+ * `webAppSchemaExtensionSpec`, stored under `pluginData[localAuthPluginKey]`.
6
+ */
7
+ export declare const createLocalAuthWebAppSchema: (context: import("@baseplate-dev/project-builder-lib").DefinitionSchemaParserContext) => z.ZodObject<{
8
+ disableRegistration: z.ZodPrefault<z.ZodBoolean>;
9
+ }, z.z.core.$strip>;
10
+ export type LocalAuthWebAppData = def.InferOutput<typeof createLocalAuthWebAppSchema>;
11
+ /**
12
+ * Reads the local-auth per-app settings slice from a web app config.
13
+ */
14
+ export declare function getLocalAuthWebAppData(webApp: WebAppConfigWithPluginData, pluginKey: string): LocalAuthWebAppData | undefined;
15
+ //# sourceMappingURL=web-app-schema.d.ts.map
@@ -0,0 +1,16 @@
1
+ import { definitionSchema, getWebAppPluginData, } from '@baseplate-dev/project-builder-lib';
2
+ import z from 'zod';
3
+ /**
4
+ * Per-app local-auth settings contributed to the web app config via
5
+ * `webAppSchemaExtensionSpec`, stored under `pluginData[localAuthPluginKey]`.
6
+ */
7
+ export const createLocalAuthWebAppSchema = definitionSchema((ctx) => z.object({
8
+ disableRegistration: ctx.withDefault(z.boolean(), false),
9
+ }));
10
+ /**
11
+ * Reads the local-auth per-app settings slice from a web app config.
12
+ */
13
+ export function getLocalAuthWebAppData(webApp, pluginKey) {
14
+ return getWebAppPluginData(webApp, pluginKey);
15
+ }
16
+ //# sourceMappingURL=web-app-schema.js.map
@@ -1,5 +1,7 @@
1
1
  import { createPluginModule, FeatureUtils, pluginDefaultsSpec, webConfigSpec, } from '@baseplate-dev/project-builder-lib';
2
+ import { createWebAppSettingsWebConfig, webAppSchemaExtensionWebSpec, } from '@baseplate-dev/project-builder-lib/web';
2
3
  import { LocalAuthDefinitionEditor } from './components/local-auth-definition-editor.js';
4
+ import { LocalAuthWebAppSettingsForm } from './components/local-auth-web-app-settings-form.js';
3
5
  import { createLocalAuthPartialDefinition } from './schema/models.js';
4
6
  import '../../styles.css';
5
7
  const AUTH_FEATURE_NAME = 'accounts/auth';
@@ -9,9 +11,14 @@ export default createPluginModule({
9
11
  dependencies: {
10
12
  webConfig: webConfigSpec,
11
13
  pluginDefaults: pluginDefaultsSpec,
14
+ webAppSchemaExtensionWeb: webAppSchemaExtensionWebSpec,
12
15
  },
13
- initialize: ({ webConfig, pluginDefaults }, { pluginKey }) => {
16
+ initialize: ({ webConfig, pluginDefaults, webAppSchemaExtensionWeb }, { pluginKey }) => {
14
17
  webConfig.components.set(pluginKey, LocalAuthDefinitionEditor);
18
+ webAppSchemaExtensionWeb.configs.set(pluginKey, createWebAppSettingsWebConfig({
19
+ pluginKey,
20
+ Form: LocalAuthWebAppSettingsForm,
21
+ }));
15
22
  pluginDefaults.builders.set(pluginKey, ({ draft }) => {
16
23
  // Idempotent with the parent auth builder, which also ensures these.
17
24
  FeatureUtils.ensureFeatureByNameRecursively(draft, AUTH_FEATURE_NAME);
@@ -1,45 +1,46 @@
1
1
  import { t as __vitePreload } from "./vite-preload-helper-ARKYL6bp.js";
2
- import "./dist-CrLSslv6.js";
3
- //#region \0virtual:mf-localSharedImportMap:__mfe_internal__plugin_mf_2_auth
2
+ import "./dist-DQd1TAJX.js";
3
+ //#region \0virtual:mf-localSharedImportMap:__mfe_internal__plugin_mf_2_auth__mf_owner__1
4
4
  var importMap = {
5
- "react/jsx-runtime": async () => {
6
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-DRSNXPPo.js").then((n) => n.et), [], import.meta.url);
7
- },
8
5
  "react": async () => {
9
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-DRSNXPPo.js").then((n) => (n.xt(), n.bt)), [], import.meta.url);
6
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js").then((n) => (n.bt(), n.yt)), [], import.meta.url);
7
+ },
8
+ "react/jsx-runtime": async () => {
9
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js").then((n) => n.$), [], import.meta.url);
10
10
  },
11
11
  "react-dom": async () => {
12
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-DRSNXPPo.js").then((n) => n.Y), [], import.meta.url);
12
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js").then((n) => n.J), [], import.meta.url);
13
13
  },
14
14
  "zod": async () => {
15
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare__zod__loadShare__.js-BEZ7A-cz.js").then((n) => n.r), [], import.meta.url);
15
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-Cx7TvZ_H.js").then((n) => n.I), [], import.meta.url);
16
16
  },
17
17
  "@baseplate-dev/ui-components": async () => {
18
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-DRSNXPPo.js").then((n) => n.F), [], import.meta.url);
18
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js").then((n) => n.F), [], import.meta.url);
19
19
  },
20
20
  "@baseplate-dev/project-builder-lib/web": async () => {
21
- return await __vitePreload(() => import("./web-CXAHKjIY.js"), [], import.meta.url);
21
+ return await __vitePreload(() => import("./web-EDeSquSP.js"), [], import.meta.url);
22
22
  },
23
23
  "@baseplate-dev/project-builder-lib": async () => {
24
- return await __vitePreload(() => import("./dist-DY7ZXvq4.js"), [], import.meta.url);
24
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-Cx7TvZ_H.js").then((n) => n.E), [], import.meta.url);
25
25
  },
26
26
  "@tanstack/react-router": async () => {
27
- return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-DfiQqvVC.js").then((n) => n.r), [], import.meta.url);
27
+ return await __vitePreload(() => import("./_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-CiccpWjh.js").then((n) => n.r), [], import.meta.url);
28
28
  }
29
29
  };
30
30
  var usedShared = {
31
- "react/jsx-runtime": {
32
- name: "react/jsx-runtime",
31
+ "react": {
32
+ name: "react",
33
33
  version: "19.2.8",
34
34
  scope: ["default"],
35
35
  loaded: false,
36
36
  eager: false,
37
37
  from: "plugin-auth",
38
+ canLiveRebind: true,
38
39
  async get() {
39
- usedShared["react/jsx-runtime"].loaded = true;
40
- const { "react/jsx-runtime": pkgDynamicImport } = importMap;
40
+ usedShared["react"].loaded = true;
41
+ const { "react": pkgDynamicImport } = importMap;
41
42
  const exportModule = { ...await pkgDynamicImport() };
42
- Object.defineProperty(exportModule, "__esModule", {
43
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
43
44
  value: true,
44
45
  enumerable: false
45
46
  });
@@ -54,18 +55,19 @@ var usedShared = {
54
55
  eager: false
55
56
  }
56
57
  },
57
- "react": {
58
- name: "react",
58
+ "react/jsx-runtime": {
59
+ name: "react/jsx-runtime",
59
60
  version: "19.2.8",
60
61
  scope: ["default"],
61
62
  loaded: false,
62
63
  eager: false,
63
64
  from: "plugin-auth",
65
+ canLiveRebind: true,
64
66
  async get() {
65
- usedShared["react"].loaded = true;
66
- const { "react": pkgDynamicImport } = importMap;
67
+ usedShared["react/jsx-runtime"].loaded = true;
68
+ const { "react/jsx-runtime": pkgDynamicImport } = importMap;
67
69
  const exportModule = { ...await pkgDynamicImport() };
68
- Object.defineProperty(exportModule, "__esModule", {
70
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
69
71
  value: true,
70
72
  enumerable: false
71
73
  });
@@ -87,11 +89,12 @@ var usedShared = {
87
89
  loaded: false,
88
90
  eager: false,
89
91
  from: "plugin-auth",
92
+ canLiveRebind: true,
90
93
  async get() {
91
94
  usedShared["react-dom"].loaded = true;
92
95
  const { "react-dom": pkgDynamicImport } = importMap;
93
96
  const exportModule = { ...await pkgDynamicImport() };
94
- Object.defineProperty(exportModule, "__esModule", {
97
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
95
98
  value: true,
96
99
  enumerable: false
97
100
  });
@@ -113,11 +116,12 @@ var usedShared = {
113
116
  loaded: false,
114
117
  eager: false,
115
118
  from: "plugin-auth",
119
+ canLiveRebind: true,
116
120
  async get() {
117
121
  usedShared["zod"].loaded = true;
118
122
  const { "zod": pkgDynamicImport } = importMap;
119
123
  const exportModule = { ...await pkgDynamicImport() };
120
- Object.defineProperty(exportModule, "__esModule", {
124
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
121
125
  value: true,
122
126
  enumerable: false
123
127
  });
@@ -134,16 +138,17 @@ var usedShared = {
134
138
  },
135
139
  "@baseplate-dev/ui-components": {
136
140
  name: "@baseplate-dev/ui-components",
137
- version: "0.6.17",
141
+ version: "0.6.18",
138
142
  scope: ["default"],
139
143
  loaded: false,
140
144
  eager: false,
141
145
  from: "plugin-auth",
146
+ canLiveRebind: true,
142
147
  async get() {
143
148
  usedShared["@baseplate-dev/ui-components"].loaded = true;
144
149
  const { "@baseplate-dev/ui-components": pkgDynamicImport } = importMap;
145
150
  const exportModule = { ...await pkgDynamicImport() };
146
- Object.defineProperty(exportModule, "__esModule", {
151
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
147
152
  value: true,
148
153
  enumerable: false
149
154
  });
@@ -153,23 +158,24 @@ var usedShared = {
153
158
  },
154
159
  shareConfig: {
155
160
  singleton: true,
156
- requiredVersion: "^0.6.17",
161
+ requiredVersion: "^0.6.18",
157
162
  strictVersion: false,
158
163
  eager: false
159
164
  }
160
165
  },
161
166
  "@baseplate-dev/project-builder-lib/web": {
162
167
  name: "@baseplate-dev/project-builder-lib/web",
163
- version: "0.6.17",
168
+ version: "0.6.18",
164
169
  scope: ["default"],
165
170
  loaded: false,
166
171
  eager: false,
167
172
  from: "plugin-auth",
173
+ canLiveRebind: true,
168
174
  async get() {
169
175
  usedShared["@baseplate-dev/project-builder-lib/web"].loaded = true;
170
176
  const { "@baseplate-dev/project-builder-lib/web": pkgDynamicImport } = importMap;
171
177
  const exportModule = { ...await pkgDynamicImport() };
172
- Object.defineProperty(exportModule, "__esModule", {
178
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
173
179
  value: true,
174
180
  enumerable: false
175
181
  });
@@ -179,23 +185,24 @@ var usedShared = {
179
185
  },
180
186
  shareConfig: {
181
187
  singleton: true,
182
- requiredVersion: "^0.6.17",
188
+ requiredVersion: "^0.6.18",
183
189
  strictVersion: false,
184
190
  eager: false
185
191
  }
186
192
  },
187
193
  "@baseplate-dev/project-builder-lib": {
188
194
  name: "@baseplate-dev/project-builder-lib",
189
- version: "0.6.17",
195
+ version: "0.6.18",
190
196
  scope: ["default"],
191
197
  loaded: false,
192
198
  eager: false,
193
199
  from: "plugin-auth",
200
+ canLiveRebind: true,
194
201
  async get() {
195
202
  usedShared["@baseplate-dev/project-builder-lib"].loaded = true;
196
203
  const { "@baseplate-dev/project-builder-lib": pkgDynamicImport } = importMap;
197
204
  const exportModule = { ...await pkgDynamicImport() };
198
- Object.defineProperty(exportModule, "__esModule", {
205
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
199
206
  value: true,
200
207
  enumerable: false
201
208
  });
@@ -205,7 +212,7 @@ var usedShared = {
205
212
  },
206
213
  shareConfig: {
207
214
  singleton: true,
208
- requiredVersion: "^0.6.17",
215
+ requiredVersion: "^0.6.18",
209
216
  strictVersion: false,
210
217
  eager: false
211
218
  }
@@ -217,11 +224,12 @@ var usedShared = {
217
224
  loaded: false,
218
225
  eager: false,
219
226
  from: "plugin-auth",
227
+ canLiveRebind: true,
220
228
  async get() {
221
229
  usedShared["@tanstack/react-router"].loaded = true;
222
230
  const { "@tanstack/react-router": pkgDynamicImport } = importMap;
223
231
  const exportModule = { ...await pkgDynamicImport() };
224
- Object.defineProperty(exportModule, "__esModule", {
232
+ if (exportModule.__esModule !== true) Object.defineProperty(exportModule, "__esModule", {
225
233
  value: true,
226
234
  enumerable: false
227
235
  });