@baseplate-dev/plugin-auth 0.6.5 → 0.6.7

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 (88) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/password-reset.mutations.js +2 -1
  3. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/password-reset.mutations.js.map +1 -1
  4. package/dist/local-auth/core/generators/auth-email-password/templates/module/schema/password-reset.mutations.ts +2 -1
  5. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.d.ts +2 -1
  6. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.d.ts.map +1 -1
  7. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.js +4 -1
  8. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.js.map +1 -1
  9. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts +6 -0
  10. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.d.ts +9 -0
  11. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.d.ts.map +1 -1
  12. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.js +21 -7
  13. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.js.map +1 -1
  14. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.ts +32 -11
  15. package/dist/local-auth/core/generators/auth-routes/auth-routes.generator.js +3 -3
  16. package/dist/local-auth/core/generators/auth-routes/auth-routes.generator.js.map +1 -1
  17. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.js +1 -1
  18. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.js.map +1 -1
  19. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.tsx +1 -1
  20. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.js +17 -2
  21. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.js.map +1 -1
  22. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.tsx +21 -2
  23. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.js +5 -2
  24. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.js.map +1 -1
  25. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.tsx +11 -2
  26. package/dist/web/assets/{__federation_expose_authCoreCommon-NPAy2Xu2.js → __federation_expose_authCoreCommon-CP84XoaZ.js} +3 -3
  27. package/dist/web/assets/{__federation_expose_authCoreCommon-NPAy2Xu2.js.map → __federation_expose_authCoreCommon-CP84XoaZ.js.map} +1 -1
  28. package/dist/web/assets/{__federation_expose_authCoreWeb-D0AlXNml.js → __federation_expose_authCoreWeb-DI2UmqKo.js} +6 -6
  29. package/dist/web/assets/__federation_expose_authCoreWeb-DI2UmqKo.js.map +1 -0
  30. package/dist/web/assets/{__federation_expose_better-authAdminCommon-Bp8fb_BT.js → __federation_expose_better-authAdminCommon-D0_9WcWn.js} +2 -2
  31. package/dist/web/assets/{__federation_expose_better-authAdminCommon-Bp8fb_BT.js.map → __federation_expose_better-authAdminCommon-D0_9WcWn.js.map} +1 -1
  32. package/dist/web/assets/{__federation_expose_better-authAdminWeb-Dggf6fZk.js → __federation_expose_better-authAdminWeb-D_dXlhKK.js} +2 -2
  33. package/dist/web/assets/{__federation_expose_better-authAdminWeb-Dggf6fZk.js.map → __federation_expose_better-authAdminWeb-D_dXlhKK.js.map} +1 -1
  34. package/dist/web/assets/{__federation_expose_better-authCoreCommon-D3bQgHWh.js → __federation_expose_better-authCoreCommon-48JK7oT2.js} +4 -4
  35. package/dist/web/assets/{__federation_expose_better-authCoreCommon-D3bQgHWh.js.map → __federation_expose_better-authCoreCommon-48JK7oT2.js.map} +1 -1
  36. package/dist/web/assets/{__federation_expose_better-authCoreWeb-4VA_40fu.js → __federation_expose_better-authCoreWeb-BxmF6zJd.js} +5 -5
  37. package/dist/web/assets/{__federation_expose_better-authCoreWeb-4VA_40fu.js.map → __federation_expose_better-authCoreWeb-BxmF6zJd.js.map} +1 -1
  38. package/dist/web/assets/{__federation_expose_local-authAdminCommon-Bp8fb_BT.js → __federation_expose_local-authAdminCommon-D0_9WcWn.js} +2 -2
  39. package/dist/web/assets/{__federation_expose_local-authAdminCommon-Bp8fb_BT.js.map → __federation_expose_local-authAdminCommon-D0_9WcWn.js.map} +1 -1
  40. package/dist/web/assets/{__federation_expose_local-authAdminWeb-BDyZDL1a.js → __federation_expose_local-authAdminWeb-BTSMv1QG.js} +2 -2
  41. package/dist/web/assets/{__federation_expose_local-authAdminWeb-BDyZDL1a.js.map → __federation_expose_local-authAdminWeb-BTSMv1QG.js.map} +1 -1
  42. package/dist/web/assets/{__federation_expose_local-authCoreCommon-C3UyEu-M.js → __federation_expose_local-authCoreCommon-CHvPbnK-.js} +4 -4
  43. package/dist/web/assets/{__federation_expose_local-authCoreCommon-C3UyEu-M.js.map → __federation_expose_local-authCoreCommon-CHvPbnK-.js.map} +1 -1
  44. package/dist/web/assets/{__federation_expose_local-authCoreWeb-BYkl2IGk.js → __federation_expose_local-authCoreWeb-ZGfSzqOX.js} +5 -5
  45. package/dist/web/assets/{__federation_expose_local-authCoreWeb-BYkl2IGk.js.map → __federation_expose_local-authCoreWeb-ZGfSzqOX.js.map} +1 -1
  46. package/dist/web/assets/{__federation_expose_placeholder-authCoreCommon-Bq0ln8n5.js → __federation_expose_placeholder-authCoreCommon-Cdpmumwc.js} +3 -3
  47. package/dist/web/assets/{__federation_expose_placeholder-authCoreCommon-Bq0ln8n5.js.map → __federation_expose_placeholder-authCoreCommon-Cdpmumwc.js.map} +1 -1
  48. package/dist/web/assets/{__federation_expose_placeholder-authCoreWeb-BNGIcu0Y.js → __federation_expose_placeholder-authCoreWeb-D44O5ZAh.js} +5 -5
  49. package/dist/web/assets/{__federation_expose_placeholder-authCoreWeb-BNGIcu0Y.js.map → __federation_expose_placeholder-authCoreWeb-D44O5ZAh.js.map} +1 -1
  50. package/dist/web/assets/{__federation_fn_import-DybuDj1g.js → __federation_fn_import-_bDjmFT3.js} +2 -2
  51. package/dist/web/assets/{__federation_fn_import-DybuDj1g.js.map → __federation_fn_import-_bDjmFT3.js.map} +1 -1
  52. package/dist/web/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-CAuxM6sN.js → web-CtILEBu2.js} +5 -5
  53. package/dist/web/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-CAuxM6sN.js.map → web-CtILEBu2.js.map} +1 -1
  54. package/dist/web/assets/__federation_shared_@baseplate-dev/{project-builder-lib-DkaXS95C.js → project-builder-lib-CSgNGpA4.js} +4 -4
  55. package/dist/web/assets/__federation_shared_@baseplate-dev/{project-builder-lib-DkaXS95C.js.map → project-builder-lib-CSgNGpA4.js.map} +1 -1
  56. package/dist/web/assets/__federation_shared_@baseplate-dev/{ui-components-DX4jbl4M.js → ui-components-w6NlcuHV.js} +6440 -1603
  57. package/dist/web/assets/__federation_shared_@baseplate-dev/ui-components-w6NlcuHV.js.map +1 -0
  58. package/dist/web/assets/__federation_shared_@baseplate-dev/{utils-B-MiuXg4.js → utils-DIoUxQTf.js} +2 -2
  59. package/dist/web/assets/__federation_shared_@baseplate-dev/{utils-B-MiuXg4.js.map → utils-DIoUxQTf.js.map} +1 -1
  60. package/dist/web/assets/__federation_shared_@tanstack/{react-router-DyqK0P1G.js → react-router-1SsG_axk.js} +2 -2
  61. package/dist/web/assets/__federation_shared_@tanstack/react-router-1SsG_axk.js.map +1 -0
  62. package/dist/web/assets/{get-auth-plugin-definition-BigT75An.js → get-auth-plugin-definition-Cmw1uujk.js} +2 -2
  63. package/dist/web/assets/{get-auth-plugin-definition-BigT75An.js.map → get-auth-plugin-definition-Cmw1uujk.js.map} +1 -1
  64. package/dist/web/assets/{index-BwviOVwi.js → index-DtgwNsxm.js} +2 -2
  65. package/dist/web/assets/{index-BwviOVwi.js.map → index-DtgwNsxm.js.map} +1 -1
  66. package/dist/web/assets/{index.esm-Db6zPKK9.js → index.esm-DEvG0Fdh.js} +2 -2
  67. package/dist/web/assets/{index.esm-Db6zPKK9.js.map → index.esm-DEvG0Fdh.js.map} +1 -1
  68. package/dist/web/assets/{model-utils-D0sDtkf1.js → model-utils-CEcdbDEB.js} +2 -2
  69. package/dist/web/assets/{model-utils-D0sDtkf1.js.map → model-utils-CEcdbDEB.js.map} +1 -1
  70. package/dist/web/assets/{plugin-definition-BQN6LXOW.js → plugin-definition-B4WkBbF0.js} +2 -2
  71. package/dist/web/assets/{plugin-definition-BQN6LXOW.js.map → plugin-definition-B4WkBbF0.js.map} +1 -1
  72. package/dist/web/assets/{plugin-definition-D9-5sSEf.js → plugin-definition-CesRcgD_.js} +2 -2
  73. package/dist/web/assets/{plugin-definition-D9-5sSEf.js.map → plugin-definition-CesRcgD_.js.map} +1 -1
  74. package/dist/web/assets/{plugin-definition-ChoxTjiw.js → plugin-definition-D4cbPQK9.js} +2 -2
  75. package/dist/web/assets/{plugin-definition-ChoxTjiw.js.map → plugin-definition-D4cbPQK9.js.map} +1 -1
  76. package/dist/web/assets/{plugin-definition-Cg8Gij5x.js → plugin-definition-DbLssGrM.js} +2 -2
  77. package/dist/web/assets/{plugin-definition-Cg8Gij5x.js.map → plugin-definition-DbLssGrM.js.map} +1 -1
  78. package/dist/web/assets/{react-CcDhDxl8.js → react-cA_AFJxD.js} +2 -2
  79. package/dist/web/assets/react-cA_AFJxD.js.map +1 -0
  80. package/dist/web/assets/remoteEntry.js +12 -12
  81. package/dist/web/assets/{styles-Otn_yxD1.js → styles-tNSeSNta.js} +3 -3
  82. package/dist/web/assets/styles-tNSeSNta.js.map +1 -0
  83. package/package.json +12 -12
  84. package/dist/web/assets/__federation_expose_authCoreWeb-D0AlXNml.js.map +0 -1
  85. package/dist/web/assets/__federation_shared_@baseplate-dev/ui-components-DX4jbl4M.js.map +0 -1
  86. package/dist/web/assets/__federation_shared_@tanstack/react-router-DyqK0P1G.js.map +0 -1
  87. package/dist/web/assets/react-CcDhDxl8.js.map +0 -1
  88. package/dist/web/assets/styles-Otn_yxD1.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @baseplate-dev/plugin-auth
2
2
 
3
+ ## 0.6.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [#877](https://github.com/halfdomelabs/baseplate/pull/877) [`0527c02`](https://github.com/halfdomelabs/baseplate/commit/0527c02fc9cc08363a93ff640345680ef832cd30) Thanks [@kingston](https://github.com/kingston)! - Reduce password rate limit aggressiveness (15 attempts/hour for IP, 10 consecutive fails/hour), reset login rate limits after successful password reset, and improve error messages to suggest password reset when rate limited
8
+
9
+ - Updated dependencies [[`2d39358`](https://github.com/halfdomelabs/baseplate/commit/2d39358510f73073a80ac78c3c7433a3aac2f0cd), [`335e063`](https://github.com/halfdomelabs/baseplate/commit/335e063b85676c9a55635ade6cf9b7b38bdd431d), [`c3a6719`](https://github.com/halfdomelabs/baseplate/commit/c3a67191d9a456d7440728f43f34cd02d28ffd12), [`2d39358`](https://github.com/halfdomelabs/baseplate/commit/2d39358510f73073a80ac78c3c7433a3aac2f0cd), [`2d39358`](https://github.com/halfdomelabs/baseplate/commit/2d39358510f73073a80ac78c3c7433a3aac2f0cd), [`7031c74`](https://github.com/halfdomelabs/baseplate/commit/7031c74af6a0ee74007a2b3cce30c738cff36e6a)]:
10
+ - @baseplate-dev/core-generators@0.6.7
11
+ - @baseplate-dev/ui-components@0.6.7
12
+ - @baseplate-dev/fastify-generators@0.6.7
13
+ - @baseplate-dev/react-generators@0.6.7
14
+ - @baseplate-dev/plugin-email@0.6.7
15
+ - @baseplate-dev/plugin-queue@0.6.7
16
+ - @baseplate-dev/plugin-rate-limit@0.6.7
17
+ - @baseplate-dev/project-builder-lib@0.6.7
18
+ - @baseplate-dev/sync@0.6.7
19
+ - @baseplate-dev/utils@0.6.7
20
+
21
+ ## 0.6.6
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies [[`7cffc85`](https://github.com/halfdomelabs/baseplate/commit/7cffc85dfc2e9dc3ca6e1f243aeb874d2a1c5b13)]:
26
+ - @baseplate-dev/fastify-generators@0.6.6
27
+ - @baseplate-dev/plugin-email@0.6.6
28
+ - @baseplate-dev/plugin-queue@0.6.6
29
+ - @baseplate-dev/plugin-rate-limit@0.6.6
30
+ - @baseplate-dev/core-generators@0.6.6
31
+ - @baseplate-dev/project-builder-lib@0.6.6
32
+ - @baseplate-dev/react-generators@0.6.6
33
+ - @baseplate-dev/sync@0.6.6
34
+ - @baseplate-dev/ui-components@0.6.6
35
+ - @baseplate-dev/utils@0.6.6
36
+
3
37
  ## 0.6.5
4
38
 
5
39
  ### Patch Changes
@@ -30,9 +30,10 @@ builder.mutationField('resetPasswordWithToken', (t) => t.fieldWithInputPayload({
30
30
  token: t.input.field({ required: true, type: 'String' }),
31
31
  newPassword: t.input.field({ required: true, type: 'String' }),
32
32
  },
33
- resolve: async (_root, { input }) => completePasswordReset({
33
+ resolve: async (_root, { input }, context) => completePasswordReset({
34
34
  token: input.token,
35
35
  newPassword: input.newPassword,
36
+ context,
36
37
  }),
37
38
  }));
38
39
  //# sourceMappingURL=password-reset.mutations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.mutations.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/schema/password-reset.mutations.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACzD;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAC3C,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;CACxD,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACzD;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAClC,0BAA0B,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;CACrD,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CACpD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACxD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC/D;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAClC,qBAAqB,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;CACL,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"password-reset.mutations.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/schema/password-reset.mutations.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACzD;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAC3C,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;CACxD,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACzD;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAClC,0BAA0B,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;CACrD,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CACpD,CAAC,CAAC,qBAAqB,CAAC;IACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC9C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACxD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC/D;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAC3C,qBAAqB,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO;KACR,CAAC;CACL,CAAC,CACH,CAAC"}
@@ -45,10 +45,11 @@ builder.mutationField('resetPasswordWithToken', (t) =>
45
45
  token: t.input.field({ required: true, type: 'String' }),
46
46
  newPassword: t.input.field({ required: true, type: 'String' }),
47
47
  },
48
- resolve: async (_root, { input }) =>
48
+ resolve: async (_root, { input }, context) =>
49
49
  completePasswordReset({
50
50
  token: input.token,
51
51
  newPassword: input.newPassword,
52
+ context,
52
53
  }),
53
54
  }),
54
55
  );
@@ -28,9 +28,10 @@ export declare function validatePasswordResetToken({ token: rawToken, }: {
28
28
  * - Always invalidates all existing sessions for security
29
29
  * - All remaining password-reset tokens for this user are deleted
30
30
  */
31
- export declare function completePasswordReset({ token: rawToken, newPassword: rawNewPassword, }: {
31
+ export declare function completePasswordReset({ token: rawToken, newPassword: rawNewPassword, context, }: {
32
32
  token: string;
33
33
  newPassword: string;
34
+ context: RequestServiceContext;
34
35
  }): Promise<{
35
36
  success: true;
36
37
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AA4D3E;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EAAE,QAAQ,EACf,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAgD7B;AAMD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,KAAK,EAAE,QAAQ,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAe7B;AAOD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,cAAc,GAC5B,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CA8D7B"}
1
+ {"version":3,"file":"password-reset.service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AA6D3E;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EAAE,QAAQ,EACf,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAgD7B;AAMD;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,KAAK,EAAE,QAAQ,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAe7B;AAOD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,cAAc,EAC3B,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAiE7B"}
@@ -1,5 +1,6 @@
1
1
  // @ts-nocheck
2
2
  import { PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PASSWORD_RESET_TOKEN_EXPIRY_SEC, } from '$constantsPassword';
3
+ import { resetLoginRateLimits } from '$servicesUserPassword';
3
4
  import { createAuthVerification, validateAuthVerification, } from '%authModuleImports';
4
5
  import { config } from '%configServiceImports';
5
6
  import { sendEmail } from '%emailModuleImports';
@@ -103,7 +104,7 @@ const completePasswordResetSchema = z.object({
103
104
  * - Always invalidates all existing sessions for security
104
105
  * - All remaining password-reset tokens for this user are deleted
105
106
  */
106
- export async function completePasswordReset({ token: rawToken, newPassword: rawNewPassword, }) {
107
+ export async function completePasswordReset({ token: rawToken, newPassword: rawNewPassword, context, }) {
107
108
  const { token, newPassword } = await completePasswordResetSchema
108
109
  .parseAsync({
109
110
  token: rawToken,
@@ -151,6 +152,8 @@ export async function completePasswordReset({ token: rawToken, newPassword: rawN
151
152
  where: { userId: user.id },
152
153
  }),
153
154
  ]);
155
+ // Reset login rate limits so the user can log in with their new password
156
+ await resetLoginRateLimits({ email: user.email, ip: context.reqInfo.ip });
154
157
  // Send password changed confirmation email
155
158
  await sendEmail(TPL_PASSWORD_CHANGED_EMAIL, {
156
159
  to: user.email,
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.service.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"password-reset.service.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import {
7
7
  PASSWORD_MIN_LENGTH,
8
8
  PASSWORD_RESET_TOKEN_EXPIRY_SEC,
9
9
  } from '$constantsPassword';
10
+ import { resetLoginRateLimits } from '$servicesUserPassword';
10
11
  import {
11
12
  createAuthVerification,
12
13
  validateAuthVerification,
@@ -167,9 +168,11 @@ const completePasswordResetSchema = z.object({
167
168
  export async function completePasswordReset({
168
169
  token: rawToken,
169
170
  newPassword: rawNewPassword,
171
+ context,
170
172
  }: {
171
173
  token: string;
172
174
  newPassword: string;
175
+ context: RequestServiceContext;
173
176
  }): Promise<{ success: true }> {
174
177
  const { token, newPassword } = await completePasswordResetSchema
175
178
  .parseAsync({
@@ -225,6 +228,9 @@ export async function completePasswordReset({
225
228
  }),
226
229
  ]);
227
230
 
231
+ // Reset login rate limits so the user can log in with their new password
232
+ await resetLoginRateLimits({ email: user.email, ip: context.reqInfo.ip });
233
+
228
234
  // Send password changed confirmation email
229
235
  await sendEmail(TPL_PASSWORD_CHANGED_EMAIL, {
230
236
  to: user.email,
@@ -1,6 +1,15 @@
1
1
  import type { User } from '%prismaGeneratedImports';
2
2
  import type { RequestServiceContext } from '%requestServiceContextImports';
3
3
  import type { UserSessionPayload } from '%userSessionTypesImports';
4
+ /**
5
+ * Resets login rate limits for the given email+IP combination.
6
+ * Intentionally scoped to the requesting IP only — a password reset should not
7
+ * clear rate limits accumulated from other IPs (which may be attacker traffic).
8
+ */
9
+ export declare function resetLoginRateLimits({ email, ip, }: {
10
+ email: string;
11
+ ip: string;
12
+ }): Promise<void>;
4
13
  export declare function createUserWithEmailAndPassword({ input, }: {
5
14
  input: {
6
15
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"user-password.service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAwDnE,wBAAsB,8BAA8B,CAAC,EACnD,KAAK,GACN,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB;AAED,wBAAsB,gCAAgC,CAAC,EACrD,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAevD;AAED,wBAAsB,oCAAoC,CAAC,EACzD,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA6D3C;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ChB"}
1
+ {"version":3,"file":"user-password.service.d.ts","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAwDnE;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,EAAE,GACH,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB;AAED,wBAAsB,8BAA8B,CAAC,EACnD,KAAK,GACN,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB;AAED,wBAAsB,gCAAgC,CAAC,EACrD,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAevD;AAED,wBAAsB,oCAAoC,CAAC,EACzD,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAgE3C;AAOD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ChB"}
@@ -25,15 +25,26 @@ const getRegistrationLimiter = memoizeRateLimiter('registration', {
25
25
  blockDuration: 60 * 60, // Block for 1 hour if exceeded
26
26
  });
27
27
  const getLoginIpLimiter = memoizeRateLimiter('login-ip', {
28
- points: 10,
29
- duration: 60 * 60 * 24, // 24 hours
28
+ points: 15,
29
+ duration: 60 * 60, // 1 hour
30
30
  blockDuration: 60 * 60, // Block for 1 hour if exceeded
31
31
  });
32
32
  const getLoginConsecutiveFailsLimiter = memoizeRateLimiter('login-consecutive-fails', {
33
- points: 5,
34
- duration: 60 * 60 * 24, // 24 hours (duration for tracking)
35
- blockDuration: 60 * 15, // Block for 15 minutes after 5 consecutive fails
33
+ points: 10,
34
+ duration: 60 * 60, // 1 hour (duration for tracking)
35
+ blockDuration: 60 * 15, // Block for 15 minutes after consecutive fails
36
36
  });
37
+ /**
38
+ * Resets login rate limits for the given email+IP combination.
39
+ * Intentionally scoped to the requesting IP only — a password reset should not
40
+ * clear rate limits accumulated from other IPs (which may be attacker traffic).
41
+ */
42
+ export async function resetLoginRateLimits({ email, ip, }) {
43
+ await Promise.all([
44
+ getLoginConsecutiveFailsLimiter().delete(`${email}_${ip}`),
45
+ getLoginIpLimiter().delete(ip),
46
+ ]);
47
+ }
37
48
  export async function createUserWithEmailAndPassword({ input, }) {
38
49
  const { email, password, name } = await emailPasswordSchema
39
50
  .parseAsync(input)
@@ -84,11 +95,14 @@ export async function authenticateUserWithEmailAndPassword({ input, context, })
84
95
  const clientIp = context.reqInfo.ip;
85
96
  const emailIpKey = `${email}_${clientIp}`;
86
97
  // Check IP-based rate limit (slow brute force protection)
87
- await getLoginIpLimiter().consumeOrThrow(clientIp, 'Too many login attempts. Please try again later.', 'login-ip-rate-limited');
98
+ const ipResult = await getLoginIpLimiter().consume(clientIp);
99
+ if (!ipResult.allowed) {
100
+ throw new TooManyRequestsError('Too many login attempts. Please try again later or reset your password.', 'login-ip-rate-limited', { retryAfterMs: ipResult.msBeforeNext });
101
+ }
88
102
  // Check consecutive failures rate limit (fast brute force protection)
89
103
  const consecutiveFailsResult = await getLoginConsecutiveFailsLimiter().get(emailIpKey);
90
104
  if (consecutiveFailsResult && !consecutiveFailsResult.allowed) {
91
- throw new TooManyRequestsError('Account temporarily locked due to too many failed attempts. Please try again later.', 'login-consecutive-fails-blocked', { retryAfterMs: consecutiveFailsResult.msBeforeNext });
105
+ throw new TooManyRequestsError('Account temporarily locked due to too many failed attempts. Please reset your password or try again later.', 'login-consecutive-fails-blocked', { retryAfterMs: consecutiveFailsResult.msBeforeNext });
92
106
  }
93
107
  // check if user with that email exists
94
108
  const userAccount = await prisma.userAccount.findUnique({
@@ -1 +1 @@
1
- {"version":3,"file":"user-password.service.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-password.service.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-email-password/templates/module/services/user-password.service.ts"],"names":[],"mappings":"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"}
@@ -44,20 +44,38 @@ const getRegistrationLimiter = memoizeRateLimiter('registration', {
44
44
  });
45
45
 
46
46
  const getLoginIpLimiter = memoizeRateLimiter('login-ip', {
47
- points: 10,
48
- duration: 60 * 60 * 24, // 24 hours
47
+ points: 15,
48
+ duration: 60 * 60, // 1 hour
49
49
  blockDuration: 60 * 60, // Block for 1 hour if exceeded
50
50
  });
51
51
 
52
52
  const getLoginConsecutiveFailsLimiter = memoizeRateLimiter(
53
53
  'login-consecutive-fails',
54
54
  {
55
- points: 5,
56
- duration: 60 * 60 * 24, // 24 hours (duration for tracking)
57
- blockDuration: 60 * 15, // Block for 15 minutes after 5 consecutive fails
55
+ points: 10,
56
+ duration: 60 * 60, // 1 hour (duration for tracking)
57
+ blockDuration: 60 * 15, // Block for 15 minutes after consecutive fails
58
58
  },
59
59
  );
60
60
 
61
+ /**
62
+ * Resets login rate limits for the given email+IP combination.
63
+ * Intentionally scoped to the requesting IP only — a password reset should not
64
+ * clear rate limits accumulated from other IPs (which may be attacker traffic).
65
+ */
66
+ export async function resetLoginRateLimits({
67
+ email,
68
+ ip,
69
+ }: {
70
+ email: string;
71
+ ip: string;
72
+ }): Promise<void> {
73
+ await Promise.all([
74
+ getLoginConsecutiveFailsLimiter().delete(`${email}_${ip}`),
75
+ getLoginIpLimiter().delete(ip),
76
+ ]);
77
+ }
78
+
61
79
  export async function createUserWithEmailAndPassword({
62
80
  input,
63
81
  }: {
@@ -149,11 +167,14 @@ export async function authenticateUserWithEmailAndPassword({
149
167
  const emailIpKey = `${email}_${clientIp}`;
150
168
 
151
169
  // Check IP-based rate limit (slow brute force protection)
152
- await getLoginIpLimiter().consumeOrThrow(
153
- clientIp,
154
- 'Too many login attempts. Please try again later.',
155
- 'login-ip-rate-limited',
156
- );
170
+ const ipResult = await getLoginIpLimiter().consume(clientIp);
171
+ if (!ipResult.allowed) {
172
+ throw new TooManyRequestsError(
173
+ 'Too many login attempts. Please try again later or reset your password.',
174
+ 'login-ip-rate-limited',
175
+ { retryAfterMs: ipResult.msBeforeNext },
176
+ );
177
+ }
157
178
 
158
179
  // Check consecutive failures rate limit (fast brute force protection)
159
180
  const consecutiveFailsResult =
@@ -161,7 +182,7 @@ export async function authenticateUserWithEmailAndPassword({
161
182
 
162
183
  if (consecutiveFailsResult && !consecutiveFailsResult.allowed) {
163
184
  throw new TooManyRequestsError(
164
- 'Account temporarily locked due to too many failed attempts. Please try again later.',
185
+ 'Account temporarily locked due to too many failed attempts. Please reset your password or try again later.',
165
186
  'login-consecutive-fails-blocked',
166
187
  { retryAfterMs: consecutiveFailsResult.msBeforeNext },
167
188
  );
@@ -22,11 +22,11 @@ export const authRoutesGenerator = createGenerator({
22
22
  },
23
23
  run({ renderers, paths }) {
24
24
  const schemaFields = {
25
- email: 'z.email().transform((value) => value.toLowerCase())',
25
+ email: `z.email('Please enter a valid email address').transform((value) => value.toLowerCase())`,
26
26
  ...(requireNameOnRegistration
27
- ? { name: 'z.string().min(1).max(100)' }
27
+ ? { name: `z.string().min(1, 'Please enter your name').max(100)` }
28
28
  : {}),
29
- password: `z.string().min(PASSWORD_MIN_LENGTH).max(PASSWORD_MAX_LENGTH)`,
29
+ password: `z.string().min(PASSWORD_MIN_LENGTH, \`Password must be at least \${PASSWORD_MIN_LENGTH} characters\`).max(PASSWORD_MAX_LENGTH)`,
30
30
  };
31
31
  const registerSchema = tsTemplateWithImports(tsImportBuilder(['PASSWORD_MAX_LENGTH', 'PASSWORD_MIN_LENGTH']).from(paths.constants)) `z.object(${TsCodeUtils.mergeFragmentsAsObject(schemaFields)})`;
32
32
  const inputFields = {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-routes.generator.js","sourceRoot":"","sources":["../../../../../src/local-auth/core/generators/auth-routes/auth-routes.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,+BAA+B,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE9F,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;IACjD,IAAI,EAAE,uBAAuB;IAC7B,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IACjC,gBAAgB;IAChB,UAAU,EAAE,CAAC,EAAE,yBAAyB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI;QACrC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI;QAC7C,IAAI,EAAE,mBAAmB,CAAC;YACxB,YAAY,EAAE;gBACZ,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,QAAQ;gBACjD,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ;aAC1C;YACD,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;gBACtB,MAAM,YAAY,GAA2B;oBAC3C,KAAK,EAAE,qDAAqD;oBAC5D,GAAG,CAAC,yBAAyB;wBAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE;wBACxC,CAAC,CAAC,EAAE,CAAC;oBACP,QAAQ,EAAE,8DAA8D;iBACzE,CAAC;gBAEF,MAAM,cAAc,GAAG,qBAAqB,CAC1C,eAAe,CAAC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAClE,KAAK,CAAC,SAAS,CAChB,CACF,CAAA,YAAY,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;gBAEjE,MAAM,WAAW,GAA2B;oBAC1C,KAAK,EAAE,YAAY;oBACnB,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,QAAQ,EAAE,eAAe;iBAC1B,CAAC;gBAEF,MAAM,aAAa,GAAG,WAAW,CAAC,+BAA+B,CAC/D,WAAW,EACX,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAC/B,CAAC;gBAEF,OAAO;oBACL,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;wBACvB,MAAM,OAAO,CAAC,KAAK,CACjB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;4BACzB,SAAS,EAAE;gCACT,QAAQ,EAAE;oCACR,mBAAmB,EAAE,cAAc;oCACnC,kBAAkB,EAAE,aAAa;oCACjC,qBAAqB,EAAE,yBAAyB;wCAC9C,CAAC,CAAC;;;;;;;eAOT;wCACO,CAAC,CAAC,EAAE;iCACP;6BACF;yBACF,CAAC,CACH,CAAC;wBACF,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"auth-routes.generator.js","sourceRoot":"","sources":["../../../../../src/local-auth/core/generators/auth-routes/auth-routes.generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,+BAA+B,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE9F,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;IACjD,IAAI,EAAE,uBAAuB;IAC7B,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IACjC,gBAAgB;IAChB,UAAU,EAAE,CAAC,EAAE,yBAAyB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI;QACrC,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI;QAC7C,IAAI,EAAE,mBAAmB,CAAC;YACxB,YAAY,EAAE;gBACZ,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC,QAAQ;gBACjD,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ;aAC1C;YACD,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;gBACtB,MAAM,YAAY,GAA2B;oBAC3C,KAAK,EAAE,yFAAyF;oBAChG,GAAG,CAAC,yBAAyB;wBAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,sDAAsD,EAAE;wBAClE,CAAC,CAAC,EAAE,CAAC;oBACP,QAAQ,EAAE,gIAAgI;iBAC3I,CAAC;gBAEF,MAAM,cAAc,GAAG,qBAAqB,CAC1C,eAAe,CAAC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAClE,KAAK,CAAC,SAAS,CAChB,CACF,CAAA,YAAY,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;gBAEjE,MAAM,WAAW,GAA2B;oBAC1C,KAAK,EAAE,YAAY;oBACnB,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,QAAQ,EAAE,eAAe;iBAC1B,CAAC;gBAEF,MAAM,aAAa,GAAG,WAAW,CAAC,+BAA+B,CAC/D,WAAW,EACX,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAC/B,CAAC;gBAEF,OAAO;oBACL,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;wBACvB,MAAM,OAAO,CAAC,KAAK,CACjB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;4BACzB,SAAS,EAAE;gCACT,QAAQ,EAAE;oCACR,mBAAmB,EAAE,cAAc;oCACnC,kBAAkB,EAAE,aAAa;oCACjC,qBAAqB,EAAE,yBAAyB;wCAC9C,CAAC,CAAC;;;;;;;eAOT;wCACO,CAAC,CAAC,EAAE;iCACP;6BACF;yBACF,CAAC,CACH,CAAC;wBACF,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;CACH,CAAC,CAAC"}
@@ -21,7 +21,7 @@ export const Route = createFileRoute('/auth_/forgot-password')({
21
21
  });
22
22
  const formSchema = z.object({
23
23
  email: z
24
- .email()
24
+ .email('Please enter a valid email address')
25
25
  .max(PASSWORD_MAX_LENGTH)
26
26
  .transform((value) => value.toLowerCase()),
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"forgot-password.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.tsx"],"names":[],"mappings":";AAAA,cAAc;AAEd,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,IAAI,EACJ,WAAW,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;IAC7D,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,KAAK,EAAE,CAAC;SACL,KAAK,EAAE;SACP,GAAG,CAAC,mBAAmB,CAAC;SACxB,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;CAC7C,CAAC,CAAC;AAIH,MAAM,4BAA4B,GAAG,OAAO,CAAC;;;;;;CAM5C,CAAC,CAAC;AAEH,SAAS,kBAAkB;IACzB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAW;QAClD,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;QACjC,cAAc,EAAE,QAAQ;KACzB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAQ,EAAE;QACxC,YAAY,CAAC;YACX,SAAS,EAAE;gBACT,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;aAC7B;SACF,CAAC;aACC,IAAI,CAAC,GAAG,EAAE;YACT,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,KAAK,CAAC,KAAK,CACT,iBAAiB,CAAC,GAAG,EAAE,2CAA2C,CAAC,CACpE,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,MAAC,IAAI,eACH,MAAC,UAAU,eACT,KAAC,SAAS,mCAA6B,EACvC,KAAC,eAAe,8HAGE,IACP,EACb,KAAC,WAAW,cACV,KAAC,IAAI,IAAC,EAAE,EAAC,aAAa,YACpB,KAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,8BAErC,GACJ,GACK,IACT,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,IAAI,eACH,MAAC,UAAU,eACT,KAAC,SAAS,wCAAkC,EAC5C,KAAC,eAAe,6FAGE,IACP,EACb,KAAC,WAAW,cACV,gBAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,aACpC,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,oBAAoB,IACnB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,OAAO,EACZ,YAAY,EAAC,OAAO,EACpB,WAAW,EAAC,kBAAkB,GAC9B,EACF,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAE,OAAO,gCAEjD,IACL,EACN,eAAK,SAAS,EAAC,0BAA0B,wCACf,GAAG,EAC3B,KAAC,IAAI,IAAC,EAAE,EAAC,aAAa,EAAC,SAAS,EAAC,8BAA8B,sBAExD,IACH,IACD,GACK,IACT,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"forgot-password.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.tsx"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export const Route = createFileRoute('/auth_/forgot-password')({
31
31
 
32
32
  const formSchema = z.object({
33
33
  email: z
34
- .email()
34
+ .email('Please enter a valid email address')
35
35
  .max(PASSWORD_MAX_LENGTH)
36
36
  .transform((value) => value.toLowerCase()),
37
37
  });
@@ -27,8 +27,13 @@ export const Route = createFileRoute('/auth_/login')({
27
27
  },
28
28
  });
29
29
  const formSchema = z.object({
30
- email: z.email().transform((value) => value.toLowerCase()),
31
- password: z.string().min(PASSWORD_MIN_LENGTH).max(PASSWORD_MAX_LENGTH),
30
+ email: z
31
+ .email('Please enter a valid email address')
32
+ .transform((value) => value.toLowerCase()),
33
+ password: z
34
+ .string()
35
+ .min(PASSWORD_MIN_LENGTH, `Password must be at least ${PASSWORD_MIN_LENGTH} characters`)
36
+ .max(PASSWORD_MAX_LENGTH),
32
37
  });
33
38
  const loginWithEmailPasswordMutation = graphql(`
34
39
  mutation LoginWithEmailPassword($input: LoginWithEmailPasswordInput!) {
@@ -67,6 +72,8 @@ function LoginPage() {
67
72
  .catch((err) => {
68
73
  const errorCode = getApolloErrorCode(err, [
69
74
  'invalid-credentials',
75
+ 'login-ip-rate-limited',
76
+ 'login-consecutive-fails-blocked',
70
77
  ]);
71
78
  switch (errorCode) {
72
79
  case 'invalid-credentials': {
@@ -74,6 +81,14 @@ function LoginPage() {
74
81
  setFormError('password', { message: 'Invalid email or password' }, { shouldFocus: true });
75
82
  break;
76
83
  }
84
+ case 'login-ip-rate-limited':
85
+ case 'login-consecutive-fails-blocked': {
86
+ resetField('password');
87
+ setFormError('password', {
88
+ message: 'Too many failed login attempts. Please reset your password or try again later.',
89
+ });
90
+ break;
91
+ }
77
92
  default: {
78
93
  toast.error(logAndFormatError(err, 'Sorry, we could not log you in.'));
79
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/login.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/login.tsx"],"names":[],"mappings":"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"}
@@ -42,8 +42,16 @@ export const Route = createFileRoute('/auth_/login')({
42
42
  });
43
43
 
44
44
  const formSchema = z.object({
45
- email: z.email().transform((value) => value.toLowerCase()),
46
- password: z.string().min(PASSWORD_MIN_LENGTH).max(PASSWORD_MAX_LENGTH),
45
+ email: z
46
+ .email('Please enter a valid email address')
47
+ .transform((value) => value.toLowerCase()),
48
+ password: z
49
+ .string()
50
+ .min(
51
+ PASSWORD_MIN_LENGTH,
52
+ `Password must be at least ${PASSWORD_MIN_LENGTH} characters`,
53
+ )
54
+ .max(PASSWORD_MAX_LENGTH),
47
55
  });
48
56
 
49
57
  type FormData = z.infer<typeof formSchema>;
@@ -95,6 +103,8 @@ function LoginPage(): React.JSX.Element {
95
103
  .catch((err: unknown) => {
96
104
  const errorCode = getApolloErrorCode(err, [
97
105
  'invalid-credentials',
106
+ 'login-ip-rate-limited',
107
+ 'login-consecutive-fails-blocked',
98
108
  ] as const);
99
109
  switch (errorCode) {
100
110
  case 'invalid-credentials': {
@@ -106,6 +116,15 @@ function LoginPage(): React.JSX.Element {
106
116
  );
107
117
  break;
108
118
  }
119
+ case 'login-ip-rate-limited':
120
+ case 'login-consecutive-fails-blocked': {
121
+ resetField('password');
122
+ setFormError('password', {
123
+ message:
124
+ 'Too many failed login attempts. Please reset your password or try again later.',
125
+ });
126
+ break;
127
+ }
109
128
  default: {
110
129
  toast.error(
111
130
  logAndFormatError(err, 'Sorry, we could not log you in.'),
@@ -28,10 +28,13 @@ export const Route = createFileRoute('/auth_/reset-password')({
28
28
  });
29
29
  const formSchema = z
30
30
  .object({
31
- newPassword: z.string().min(PASSWORD_MIN_LENGTH).max(PASSWORD_MAX_LENGTH),
31
+ newPassword: z
32
+ .string()
33
+ .min(PASSWORD_MIN_LENGTH, `Password must be at least ${PASSWORD_MIN_LENGTH} characters`)
34
+ .max(PASSWORD_MAX_LENGTH),
32
35
  confirmPassword: z
33
36
  .string()
34
- .min(PASSWORD_MIN_LENGTH)
37
+ .min(PASSWORD_MIN_LENGTH, `Password must be at least ${PASSWORD_MIN_LENGTH} characters`)
35
38
  .max(PASSWORD_MAX_LENGTH),
36
39
  })
37
40
  .refine((data) => data.newPassword === data.confirmPassword, {
@@ -1 +1 @@
1
- {"version":3,"file":"reset-password.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reset-password.js","sourceRoot":"","sources":["../../../../../../../../src/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.tsx"],"names":[],"mappings":"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"}
@@ -43,10 +43,19 @@ export const Route = createFileRoute('/auth_/reset-password')({
43
43
 
44
44
  const formSchema = z
45
45
  .object({
46
- newPassword: z.string().min(PASSWORD_MIN_LENGTH).max(PASSWORD_MAX_LENGTH),
46
+ newPassword: z
47
+ .string()
48
+ .min(
49
+ PASSWORD_MIN_LENGTH,
50
+ `Password must be at least ${PASSWORD_MIN_LENGTH} characters`,
51
+ )
52
+ .max(PASSWORD_MAX_LENGTH),
47
53
  confirmPassword: z
48
54
  .string()
49
- .min(PASSWORD_MIN_LENGTH)
55
+ .min(
56
+ PASSWORD_MIN_LENGTH,
57
+ `Password must be at least ${PASSWORD_MIN_LENGTH} characters`,
58
+ )
50
59
  .max(PASSWORD_MAX_LENGTH),
51
60
  })
52
61
  .refine((data) => data.newPassword === data.confirmPassword, {