@starklabs/forge 1.3.23 → 1.3.24-beta.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 (263) hide show
  1. package/dist/js/account/index.d.ts +1 -1
  2. package/dist/js/account/index.d.ts.map +1 -1
  3. package/dist/js/account/index.js +14 -7
  4. package/dist/js/account/index.js.map +1 -1
  5. package/dist/js/account/me.delete.d.ts +2 -2
  6. package/dist/js/account/me.delete.d.ts.map +1 -1
  7. package/dist/js/account/me.delete.js +15 -6
  8. package/dist/js/account/me.delete.js.map +1 -1
  9. package/dist/js/account/me.update.d.ts +3 -3
  10. package/dist/js/account/me.update.d.ts.map +1 -1
  11. package/dist/js/account/me.update.js +20 -7
  12. package/dist/js/account/me.update.js.map +1 -1
  13. package/dist/js/app.js +21 -8
  14. package/dist/js/app.js.map +1 -1
  15. package/dist/js/auth/builtin/auth.collection.js +11 -11
  16. package/dist/js/auth/builtin/auth.collection.js.map +1 -1
  17. package/dist/js/auth/forgotPassword.d.ts +4 -4
  18. package/dist/js/auth/forgotPassword.d.ts.map +1 -1
  19. package/dist/js/auth/forgotPassword.js +12 -6
  20. package/dist/js/auth/forgotPassword.js.map +1 -1
  21. package/dist/js/auth/index.d.ts +1 -1
  22. package/dist/js/auth/index.d.ts.map +1 -1
  23. package/dist/js/auth/index.js +16 -8
  24. package/dist/js/auth/index.js.map +1 -1
  25. package/dist/js/auth/login.d.ts +4 -4
  26. package/dist/js/auth/login.d.ts.map +1 -1
  27. package/dist/js/auth/login.js +8 -4
  28. package/dist/js/auth/login.js.map +1 -1
  29. package/dist/js/auth/logout.js +6 -1
  30. package/dist/js/auth/logout.js.map +1 -1
  31. package/dist/js/auth/refresh.js +9 -0
  32. package/dist/js/auth/refresh.js.map +1 -1
  33. package/dist/js/auth/resendOTP.d.ts +4 -4
  34. package/dist/js/auth/resendOTP.d.ts.map +1 -1
  35. package/dist/js/auth/resendOTP.js +14 -4
  36. package/dist/js/auth/resendOTP.js.map +1 -1
  37. package/dist/js/auth/resetPassword.d.ts +4 -4
  38. package/dist/js/auth/resetPassword.d.ts.map +1 -1
  39. package/dist/js/auth/resetPassword.js +14 -4
  40. package/dist/js/auth/resetPassword.js.map +1 -1
  41. package/dist/js/auth/signup.d.ts +4 -4
  42. package/dist/js/auth/signup.d.ts.map +1 -1
  43. package/dist/js/auth/signup.js +10 -5
  44. package/dist/js/auth/signup.js.map +1 -1
  45. package/dist/js/auth/utils/authenticateUser.d.ts +3 -3
  46. package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
  47. package/dist/js/auth/utils/authenticateUser.js +13 -3
  48. package/dist/js/auth/utils/authenticateUser.js.map +1 -1
  49. package/dist/js/auth/utils/createOTPModel.d.ts +1 -1
  50. package/dist/js/auth/utils/createOTPModel.d.ts.map +1 -1
  51. package/dist/js/auth/utils/createOTPModel.js +8 -3
  52. package/dist/js/auth/utils/createOTPModel.js.map +1 -1
  53. package/dist/js/auth/utils/createOTPUser.d.ts +3 -3
  54. package/dist/js/auth/utils/createOTPUser.d.ts.map +1 -1
  55. package/dist/js/auth/utils/createOTPUser.js +11 -3
  56. package/dist/js/auth/utils/createOTPUser.js.map +1 -1
  57. package/dist/js/auth/utils/createUser.d.ts +3 -3
  58. package/dist/js/auth/utils/createUser.d.ts.map +1 -1
  59. package/dist/js/auth/utils/createUser.js +12 -2
  60. package/dist/js/auth/utils/createUser.js.map +1 -1
  61. package/dist/js/auth/utils/findRefreshToken.js +5 -1
  62. package/dist/js/auth/utils/findRefreshToken.js.map +1 -1
  63. package/dist/js/auth/utils/findRefreshTokenUser.js +1 -0
  64. package/dist/js/auth/utils/findRefreshTokenUser.js.map +1 -1
  65. package/dist/js/auth/utils/getOTPUser.js +3 -0
  66. package/dist/js/auth/utils/getOTPUser.js.map +1 -1
  67. package/dist/js/auth/utils/getUser.d.ts +3 -3
  68. package/dist/js/auth/utils/getUser.d.ts.map +1 -1
  69. package/dist/js/auth/utils/getUser.js +6 -2
  70. package/dist/js/auth/utils/getUser.js.map +1 -1
  71. package/dist/js/auth/utils/handleRefreshTokenValidation.js +7 -1
  72. package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -1
  73. package/dist/js/auth/utils/handleRotateRefreshToken.js +7 -1
  74. package/dist/js/auth/utils/handleRotateRefreshToken.js.map +1 -1
  75. package/dist/js/auth/utils/modeMap.d.ts +12 -12
  76. package/dist/js/auth/utils/otpVerifiedResponse.js +1 -0
  77. package/dist/js/auth/utils/otpVerifiedResponse.js.map +1 -1
  78. package/dist/js/auth/utils/sendCookie.js +10 -0
  79. package/dist/js/auth/utils/sendCookie.js.map +1 -1
  80. package/dist/js/auth/utils/verifyCredentials.d.ts +3 -3
  81. package/dist/js/auth/utils/verifyCredentials.d.ts.map +1 -1
  82. package/dist/js/auth/utils/verifyCredentials.js +8 -6
  83. package/dist/js/auth/utils/verifyCredentials.js.map +1 -1
  84. package/dist/js/auth/verifyOTP.d.ts +4 -4
  85. package/dist/js/auth/verifyOTP.d.ts.map +1 -1
  86. package/dist/js/auth/verifyOTP.js +18 -5
  87. package/dist/js/auth/verifyOTP.js.map +1 -1
  88. package/dist/js/config/cloudinary.js +1 -0
  89. package/dist/js/config/cloudinary.js.map +1 -1
  90. package/dist/js/config/duration.js +7 -0
  91. package/dist/js/config/duration.js.map +1 -1
  92. package/dist/js/config/envs.js +23 -3
  93. package/dist/js/config/envs.js.map +1 -1
  94. package/dist/js/config/handleReqType.d.ts +1 -1
  95. package/dist/js/config/handleReqType.d.ts.map +1 -1
  96. package/dist/js/config/handleReqType.js +4 -3
  97. package/dist/js/config/handleReqType.js.map +1 -1
  98. package/dist/js/config/handlerMap.js +4 -0
  99. package/dist/js/config/handlerMap.js.map +1 -1
  100. package/dist/js/config/refreshModel.js +1 -0
  101. package/dist/js/config/refreshModel.js.map +1 -1
  102. package/dist/js/config/sendEmail.js +1 -0
  103. package/dist/js/config/sendEmail.js.map +1 -1
  104. package/dist/js/crud/bunch.crud.js +2 -0
  105. package/dist/js/crud/bunch.crud.js.map +1 -1
  106. package/dist/js/crud/create.d.ts +4 -4
  107. package/dist/js/crud/create.d.ts.map +1 -1
  108. package/dist/js/crud/create.js +23 -8
  109. package/dist/js/crud/create.js.map +1 -1
  110. package/dist/js/crud/createBulk.d.ts +4 -4
  111. package/dist/js/crud/createBulk.d.ts.map +1 -1
  112. package/dist/js/crud/createBulk.js +8 -3
  113. package/dist/js/crud/createBulk.js.map +1 -1
  114. package/dist/js/crud/email/index.d.ts +2 -0
  115. package/dist/js/crud/email/index.d.ts.map +1 -0
  116. package/dist/js/crud/email/index.js +2 -0
  117. package/dist/js/crud/email/index.js.map +1 -0
  118. package/dist/js/crud/encryption/handleDecryption.js +8 -3
  119. package/dist/js/crud/encryption/handleDecryption.js.map +1 -1
  120. package/dist/js/crud/encryption/handleEncryption.js +7 -3
  121. package/dist/js/crud/encryption/handleEncryption.js.map +1 -1
  122. package/dist/js/crud/handleUploads/file.add.d.ts +4 -4
  123. package/dist/js/crud/handleUploads/file.add.d.ts.map +1 -1
  124. package/dist/js/crud/handleUploads/file.add.js +16 -9
  125. package/dist/js/crud/handleUploads/file.add.js.map +1 -1
  126. package/dist/js/crud/handleUploads/file.delete.d.ts +4 -4
  127. package/dist/js/crud/handleUploads/file.delete.d.ts.map +1 -1
  128. package/dist/js/crud/handleUploads/file.delete.js +14 -5
  129. package/dist/js/crud/handleUploads/file.delete.js.map +1 -1
  130. package/dist/js/crud/handleUploads/file.update.d.ts +4 -4
  131. package/dist/js/crud/handleUploads/file.update.d.ts.map +1 -1
  132. package/dist/js/crud/handleUploads/file.update.js +15 -5
  133. package/dist/js/crud/handleUploads/file.update.js.map +1 -1
  134. package/dist/js/crud/index.d.ts +1 -1
  135. package/dist/js/crud/index.d.ts.map +1 -1
  136. package/dist/js/crud/index.js +18 -11
  137. package/dist/js/crud/index.js.map +1 -1
  138. package/dist/js/crud/read.d.ts +4 -4
  139. package/dist/js/crud/read.d.ts.map +1 -1
  140. package/dist/js/crud/read.js +18 -9
  141. package/dist/js/crud/read.js.map +1 -1
  142. package/dist/js/crud/readAll.d.ts +3 -3
  143. package/dist/js/crud/readAll.d.ts.map +1 -1
  144. package/dist/js/crud/readAll.js +16 -8
  145. package/dist/js/crud/readAll.js.map +1 -1
  146. package/dist/js/crud/remove.d.ts +3 -3
  147. package/dist/js/crud/remove.d.ts.map +1 -1
  148. package/dist/js/crud/remove.js +19 -8
  149. package/dist/js/crud/remove.js.map +1 -1
  150. package/dist/js/crud/removeAll.d.ts +3 -3
  151. package/dist/js/crud/removeAll.d.ts.map +1 -1
  152. package/dist/js/crud/removeAll.js +13 -5
  153. package/dist/js/crud/removeAll.js.map +1 -1
  154. package/dist/js/crud/removeMultiple.d.ts +4 -4
  155. package/dist/js/crud/removeMultiple.d.ts.map +1 -1
  156. package/dist/js/crud/removeMultiple.js +18 -7
  157. package/dist/js/crud/removeMultiple.js.map +1 -1
  158. package/dist/js/crud/security/handleDecryption.js +8 -3
  159. package/dist/js/crud/security/handleDecryption.js.map +1 -1
  160. package/dist/js/crud/security/handleEncryption.js +7 -3
  161. package/dist/js/crud/security/handleEncryption.js.map +1 -1
  162. package/dist/js/crud/security/handleHashing.js +8 -3
  163. package/dist/js/crud/security/handleHashing.js.map +1 -1
  164. package/dist/js/crud/update.d.ts +4 -4
  165. package/dist/js/crud/update.d.ts.map +1 -1
  166. package/dist/js/crud/update.js +24 -9
  167. package/dist/js/crud/update.js.map +1 -1
  168. package/dist/js/crud/utils/authorizeAccess.d.ts +2 -2
  169. package/dist/js/crud/utils/authorizeAccess.d.ts.map +1 -1
  170. package/dist/js/crud/utils/authorizeAccess.js +19 -13
  171. package/dist/js/crud/utils/authorizeAccess.js.map +1 -1
  172. package/dist/js/crud/utils/getItem.d.ts +3 -3
  173. package/dist/js/crud/utils/getItem.d.ts.map +1 -1
  174. package/dist/js/crud/utils/getItem.js +18 -9
  175. package/dist/js/crud/utils/getItem.js.map +1 -1
  176. package/dist/js/health/health.collection.js +11 -11
  177. package/dist/js/health/health.collection.js.map +1 -1
  178. package/dist/js/health/index.d.ts +1 -1
  179. package/dist/js/health/index.d.ts.map +1 -1
  180. package/dist/js/health/index.js +2 -2
  181. package/dist/js/health/index.js.map +1 -1
  182. package/dist/js/lib/OAuthProviders.js +1 -1
  183. package/dist/js/lib/OAuthProviders.js.map +1 -1
  184. package/dist/js/lib/db.js +1 -0
  185. package/dist/js/lib/db.js.map +1 -1
  186. package/dist/js/lib/model.factory.d.ts +10 -1
  187. package/dist/js/lib/model.factory.d.ts.map +1 -1
  188. package/dist/js/lib/model.factory.js +18 -4
  189. package/dist/js/lib/model.factory.js.map +1 -1
  190. package/dist/js/lib/model.registry.js +1 -0
  191. package/dist/js/lib/model.registry.js.map +1 -1
  192. package/dist/js/lib/mongoose.fields.js +20 -0
  193. package/dist/js/lib/mongoose.fields.js.map +1 -1
  194. package/dist/js/lib/schema.builder.js +3 -0
  195. package/dist/js/lib/schema.builder.js.map +1 -1
  196. package/dist/js/lib/unified.fields.d.ts +5 -0
  197. package/dist/js/lib/unified.fields.d.ts.map +1 -1
  198. package/dist/js/lib/unified.fields.js +56 -0
  199. package/dist/js/lib/unified.fields.js.map +1 -1
  200. package/dist/js/lib/unified.types.d.ts +3 -0
  201. package/dist/js/lib/unified.types.d.ts.map +1 -1
  202. package/dist/js/lib/zod.factory.d.ts +13 -0
  203. package/dist/js/lib/zod.factory.d.ts.map +1 -1
  204. package/dist/js/lib/zod.factory.js +14 -0
  205. package/dist/js/lib/zod.factory.js.map +1 -1
  206. package/dist/js/lib/zod.fields.d.ts +55 -0
  207. package/dist/js/lib/zod.fields.d.ts.map +1 -1
  208. package/dist/js/lib/zod.fields.js +56 -0
  209. package/dist/js/lib/zod.fields.js.map +1 -1
  210. package/dist/js/middleware/error.middleware.js +1 -0
  211. package/dist/js/middleware/error.middleware.js.map +1 -1
  212. package/dist/js/middleware/multer.middleware.d.ts +1 -1
  213. package/dist/js/middleware/multer.middleware.d.ts.map +1 -1
  214. package/dist/js/middleware/multer.middleware.js +22 -7
  215. package/dist/js/middleware/multer.middleware.js.map +1 -1
  216. package/dist/js/terminal/appInfo.js +11 -11
  217. package/dist/js/terminal/appInfo.js.map +1 -1
  218. package/dist/js/terminal/logger.js +1 -1
  219. package/dist/js/terminal/logger.js.map +1 -1
  220. package/dist/js/types/ActionHandler.d.ts +86 -11
  221. package/dist/js/types/ActionHandler.d.ts.map +1 -1
  222. package/dist/js/types/Collection.d.ts +104 -15
  223. package/dist/js/types/Collection.d.ts.map +1 -1
  224. package/dist/js/types/Constructor.d.ts +1 -1
  225. package/dist/js/types/Constructor.d.ts.map +1 -1
  226. package/dist/js/types/Route.d.ts +131 -14
  227. package/dist/js/types/Route.d.ts.map +1 -1
  228. package/dist/js/types/Routepath.js +15 -0
  229. package/dist/js/types/Routepath.js.map +1 -1
  230. package/dist/js/types/email.js +13 -0
  231. package/dist/js/types/email.js.map +1 -1
  232. package/dist/js/types/upload.d.ts +57 -5
  233. package/dist/js/types/upload.d.ts.map +1 -1
  234. package/dist/js/upload/create.js +9 -6
  235. package/dist/js/upload/create.js.map +1 -1
  236. package/dist/js/upload/delete.js +21 -21
  237. package/dist/js/upload/delete.js.map +1 -1
  238. package/dist/js/upload/update.js +21 -21
  239. package/dist/js/upload/update.js.map +1 -1
  240. package/dist/js/utils/getErrorDetail.d.ts +2 -2
  241. package/dist/js/utils/getErrorDetail.d.ts.map +1 -1
  242. package/dist/js/utils/getErrorDetail.js +2 -2
  243. package/dist/js/utils/getErrorDetail.js.map +1 -1
  244. package/dist/js/utils/getModel.d.ts +3 -3
  245. package/dist/js/utils/getModel.d.ts.map +1 -1
  246. package/dist/js/utils/getModel.js +6 -6
  247. package/dist/js/utils/getModel.js.map +1 -1
  248. package/dist/js/utils/libsodium.js +6 -0
  249. package/dist/js/utils/libsodium.js.map +1 -1
  250. package/dist/js/utils/otpPurposes.js +38 -0
  251. package/dist/js/utils/otpPurposes.js.map +1 -1
  252. package/dist/js/utils/sanitize.js +23 -2
  253. package/dist/js/utils/sanitize.js.map +1 -1
  254. package/dist/js/utils/saveRefreshToken.js +2 -1
  255. package/dist/js/utils/saveRefreshToken.js.map +1 -1
  256. package/dist/js/utils/validate.js +5 -3
  257. package/dist/js/utils/validate.js.map +1 -1
  258. package/dist/js/utils/validationKeyError.d.ts +1 -1
  259. package/dist/js/utils/validationKeyError.d.ts.map +1 -1
  260. package/dist/js/utils/validationKeyError.js +13 -8
  261. package/dist/js/utils/validationKeyError.js.map +1 -1
  262. package/package.json +1 -1
  263. package/readme.md +29 -29
@@ -11,10 +11,12 @@ const logout = (routeObj) => {
11
11
  const { authConfigObj } = getEnvs();
12
12
  return async (req, res) => {
13
13
  const token = getToken({ req, routeObj, type: "refreshTokenName" });
14
+ // payload
14
15
  const payload = verifyJWT({
15
16
  token,
16
17
  routeObj,
17
18
  });
19
+ // if payload is not as string or sub isn't found in it
18
20
  if (typeof payload === "string" || !payload.sub || !payload.jti)
19
21
  throw new AppError({
20
22
  message: "Refresh token payload is invalid",
@@ -23,8 +25,11 @@ const logout = (routeObj) => {
23
25
  hint: "Log in again to obtain a valid refresh token.",
24
26
  details: getErrorDetail(routeObj),
25
27
  });
26
- const RefreshToken = getModel({ modelName: "RefreshToken", routeObj });
28
+ // refreshToken model
29
+ const RefreshToken = getModel({ model: "RefreshToken", routeObj });
30
+ // handleRefreshTokenValidation
27
31
  await handleRefreshTokenValidation(token, routeObj, payload.sub, payload.jti);
32
+ // revoke all of the same family
28
33
  await RefreshToken.updateMany({ familyId: payload.familyId }, { $set: { revoked: true } });
29
34
  clearCookie({ res, cookieName: authConfigObj.refreshTokenName, routeObj });
30
35
  clearCookie({ res, cookieName: authConfigObj.accessTokenName, routeObj });
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/js/auth/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,4BAA4B,MAAM,yCAAyC,CAAC;AAEnF,MAAM,MAAM,GAAG,CAAC,QAAe,EAAE,EAAE;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAGpE,MAAM,OAAO,GAAG,SAAS,CAAC;YACxB,KAAK;YACL,QAAQ;SACT,CAAC,CAAC;QAGH,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;YAC7D,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,IAAI,EAAE,+BAA+B;gBACrC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,+CAA+C;gBACrD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAGL,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;QAGvE,MAAM,4BAA4B,CAChC,KAAK,EACL,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;QAGF,MAAM,YAAY,CAAC,UAAU,CAC3B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAC9B,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAC5B,CAAC;QAEF,WAAW,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,gBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,WAAW,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,eAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3E,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/js/auth/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,4BAA4B,MAAM,yCAAyC,CAAC;AAEnF,MAAM,MAAM,GAAG,CAAC,QAAe,EAAE,EAAE;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAEpE,UAAU;QACV,MAAM,OAAO,GAAG,SAAS,CAAC;YACxB,KAAK;YACL,QAAQ;SACT,CAAC,CAAC;QAEH,uDAAuD;QACvD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;YAC7D,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,IAAI,EAAE,+BAA+B;gBACrC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,+CAA+C;gBACrD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,qBAAqB;QACrB,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnE,+BAA+B;QAC/B,MAAM,4BAA4B,CAChC,KAAK,EACL,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;QAEF,gCAAgC;QAChC,MAAM,YAAY,CAAC,UAAU,CAC3B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAC9B,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAC5B,CAAC;QAEF,WAAW,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,gBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,WAAW,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,eAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3E,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,MAAM,CAAC"}
@@ -13,16 +13,20 @@ import getRefreshToken from "./utils/handleGetToken.js";
13
13
  const refresh = ({ routeObj }) => {
14
14
  return async (req, res) => {
15
15
  const { authConfigObj } = getEnvs();
16
+ // token info
16
17
  const { deviceType, jti, deviceName, os, ipAddress, familyId } = tokenInfo(req);
18
+ // refreshToken
17
19
  let token = getRefreshToken({
18
20
  req,
19
21
  routeObj,
20
22
  type: "refreshTokenName",
21
23
  });
24
+ // payload
22
25
  const payload = verifyJWT({
23
26
  token,
24
27
  routeObj,
25
28
  });
29
+ // if payload is not as string or sub isn't found in it
26
30
  if (typeof payload === "string" || !payload.sub || !payload.jti)
27
31
  throw new AppError({
28
32
  message: "Refresh token payload is invalid",
@@ -31,8 +35,11 @@ const refresh = ({ routeObj }) => {
31
35
  hint: "Log in again to obtain a valid refresh token.",
32
36
  details: getErrorDetail(routeObj),
33
37
  });
38
+ // check if valid token
34
39
  await handleRefreshTokenValidation(token, routeObj, payload.sub, payload.jti);
40
+ // find user - if exists
35
41
  await findRefreshTokenUser(payload.sub, routeObj);
42
+ // send access cookie
36
43
  const { accessToken } = sendCookie({
37
44
  res,
38
45
  accessTokenName: authConfigObj.accessTokenName,
@@ -41,6 +48,7 @@ const refresh = ({ routeObj }) => {
41
48
  sub: payload.sub,
42
49
  },
43
50
  });
51
+ // rotateRefreshToken or update last used
44
52
  await handleRotateRefreshToken({
45
53
  deviceName: deviceName,
46
54
  deviceType,
@@ -54,6 +62,7 @@ const refresh = ({ routeObj }) => {
54
62
  routeObj,
55
63
  iat: payload.iat,
56
64
  });
65
+ // response
57
66
  appResponse({
58
67
  res,
59
68
  message: "Access token refreshed successfully",
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,4BAA4B,MAAM,yCAAyC,CAAC;AACnF,OAAO,oBAAoB,MAAM,iCAAiC,CAAC;AACnE,OAAO,wBAAwB,MAAM,qCAAqC,CAAC;AAC3E,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAuB,EAAE,EAAE;IACpD,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC3C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QAGpC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAC5D,SAAS,CAAC,GAAG,CAAC,CAAC;QAGjB,IAAI,KAAK,GAAG,eAAe,CAAC;YAC1B,GAAG;YACH,QAAQ;YACR,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QAGH,MAAM,OAAO,GAAG,SAAS,CAAC;YACxB,KAAK;YACL,QAAQ;SACT,CAAC,CAAC;QAGH,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;YAC7D,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,IAAI,EAAE,+BAA+B;gBACrC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,+CAA+C;gBACrD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAGL,MAAM,4BAA4B,CAChC,KAAK,EACL,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,GAAG,CACZ,CAAC;QAGF,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAGlD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;YACjC,GAAG;YACH,eAAe,EAAE,aAAa,CAAC,eAAgB;YAC/C,QAAQ;YACR,kBAAkB,EAAE;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB;SACF,CAAC,CAAC;QAGH,MAAM,wBAAwB,CAAC;YAC7B,UAAU,EAAE,UAAW;YACvB,UAAU;YACV,QAAQ;YACR,SAAS,EAAE,SAAU;YACrB,eAAe,EAAE,OAAO,CAAC,GAAG;YAC5B,cAAc,EAAE,GAAG;YACnB,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,GAAG;YAClB,GAAG;YACH,QAAQ;YACR,GAAG,EAAE,OAAO,CAAC,GAAa;SAC3B,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,qCAAqC;YAC9C,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,SAAS;YACxE,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const resendOTP: ({ modelName, routeName, validationsObj, routeObj, }: {
4
- modelName: string;
5
- routeName: string;
6
- validationsObj: ValidationsObj;
3
+ declare const resendOTP: ({ model, route, validations, routeObj, }: {
4
+ model: string;
5
+ route: string;
6
+ validations: ValidationsObj;
7
7
  routeObj: Route;
8
8
  }) => (req: Request, res: Response) => Promise<void>;
9
9
  export default resendOTP;
@@ -1 +1 @@
1
- {"version":3,"file":"resendOTP.d.ts","sourceRoot":"","sources":["../../../src/js/auth/resendOTP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAYpE,QAAA,MAAM,SAAS,GAAI,qDAKhB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAgF1C,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"resendOTP.d.ts","sourceRoot":"","sources":["../../../src/js/auth/resendOTP.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAYpE,QAAA,MAAM,SAAS,GAAI,0CAKhB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAgF1C,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -8,16 +8,20 @@ import getUser from "./utils/getUser.js";
8
8
  import getValidationKey from "../utils/validationKeyError.js";
9
9
  import getErrorDetail from "../utils/getErrorDetail.js";
10
10
  import { getEnvs } from "../config/envs.js";
11
- const resendOTP = ({ modelName, routeName, validationsObj, routeObj, }) => {
11
+ const resendOTP = ({ model, route, validations, routeObj, }) => {
12
12
  return async (req, res) => {
13
+ // get dynamic auth field keys
13
14
  const { authConfigObj } = getEnvs();
14
15
  const { fieldsObj } = authConfigObj;
15
16
  const emailKey = fieldsObj?.email;
16
17
  const passwordKey = fieldsObj?.password;
17
18
  const otpKey = fieldsObj?.otp;
18
19
  const purposeKey = fieldsObj?.purpose;
19
- const validationObj = getValidationKey(routeObj, validationsObj);
20
+ // validationObj
21
+ const validationObj = getValidationKey(routeObj, validations);
22
+ // validate
20
23
  const body = validate(validationObj, req.body, routeObj);
24
+ // if required fields not found
21
25
  if (!req.body?.[emailKey] ||
22
26
  !req.body?.[otpKey] ||
23
27
  !req.body?.[purposeKey])
@@ -27,17 +31,20 @@ const resendOTP = ({ modelName, routeName, validationsObj, routeObj, }) => {
27
31
  hint: `Provide ${emailKey}, ${otpKey}, and ${purposeKey} in the request body.`,
28
32
  details: getErrorDetail(routeObj),
29
33
  });
34
+ // if user not found
30
35
  await getUser({
31
- modelName,
32
- routeName,
36
+ model,
37
+ route,
33
38
  email: body[emailKey],
34
39
  routeObj,
35
40
  });
41
+ // get otp user
36
42
  const OTPUser = await getOTPUser({
37
43
  email: body[emailKey],
38
44
  purpose: body[purposeKey],
39
45
  routeObj,
40
46
  });
47
+ // if otp already verified
41
48
  if (OTPUser.isVerified) {
42
49
  appResponse({
43
50
  res,
@@ -46,13 +53,16 @@ const resendOTP = ({ modelName, routeName, validationsObj, routeObj, }) => {
46
53
  });
47
54
  return;
48
55
  }
56
+ // send OTP
49
57
  const { OTP, otpExpiry } = await sendOTP(body[emailKey], routeObj);
50
58
  const hashedOTP = await hash(OTP, routeObj);
51
59
  OTPUser.otpCount = 0;
52
60
  OTPUser[otpKey] = hashedOTP;
53
61
  OTPUser.otpExpiry = otpExpiry;
54
62
  OTPUser.isVerified = false;
63
+ // save updated otp
55
64
  await OTPUser.save();
65
+ // send response
56
66
  appResponse({
57
67
  res,
58
68
  message: "OTP resent successfully!",
@@ -1 +1 @@
1
- {"version":3,"file":"resendOTP.js","sourceRoot":"","sources":["../../../src/js/auth/resendOTP.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resendOTP.js","sourceRoot":"","sources":["../../../src/js/auth/resendOTP.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const resetPassword: ({ modelName, routeObj, routeName, validationsObj, }: {
4
- modelName: string;
3
+ declare const resetPassword: ({ model, routeObj, route, validations, }: {
4
+ model: string;
5
5
  routeObj: Route;
6
- routeName: string;
7
- validationsObj: ValidationsObj;
6
+ route: string;
7
+ validations: ValidationsObj;
8
8
  }) => (req: Request, res: Response) => Promise<void>;
9
9
  export default resetPassword;
10
10
  //# sourceMappingURL=resetPassword.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resetPassword.d.ts","sourceRoot":"","sources":["../../../src/js/auth/resetPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAapE,QAAA,MAAM,aAAa,GAAI,qDAKpB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA2E1C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"resetPassword.d.ts","sourceRoot":"","sources":["../../../src/js/auth/resetPassword.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAapE,QAAA,MAAM,aAAa,GAAI,0CAKpB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,CAAC;CAC7B,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA2E1C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -9,16 +9,20 @@ import appResponse from "../utils/response.js";
9
9
  import getValidationKey from "../utils/validationKeyError.js";
10
10
  import getErrorDetail from "../utils/getErrorDetail.js";
11
11
  import { getEnvs } from "../config/envs.js";
12
- const resetPassword = ({ modelName, routeObj, routeName, validationsObj, }) => {
12
+ const resetPassword = ({ model, routeObj, route, validations, }) => {
13
13
  return async (req, res) => {
14
+ // get dynamic auth field keys
14
15
  const { authConfigObj } = getEnvs();
15
16
  const { fieldsObj } = authConfigObj;
16
17
  const emailKey = fieldsObj?.email;
17
18
  const passwordKey = fieldsObj?.password;
18
19
  const otpKey = fieldsObj?.otp;
19
20
  const purposeKey = fieldsObj?.purpose;
20
- const validationObj = getValidationKey(routeObj, validationsObj);
21
+ // validationObj
22
+ const validationObj = getValidationKey(routeObj, validations);
23
+ // validate
21
24
  const body = validate(validationObj, req.body, routeObj);
25
+ // if no email or password in request
22
26
  if (!req.body?.[emailKey] || !req.body?.[passwordKey])
23
27
  throw new AppError({
24
28
  message: `${emailKey} and ${passwordKey} are required.`,
@@ -26,24 +30,30 @@ const resetPassword = ({ modelName, routeObj, routeName, validationsObj, }) => {
26
30
  hint: `Provide ${emailKey} and ${passwordKey} in the request body.`,
27
31
  details: getErrorDetail(routeObj),
28
32
  });
33
+ // password reset purpose
29
34
  const purpose = "password_reset";
35
+ // OTPUser
30
36
  await getOTPUser({
31
37
  email: body[emailKey],
32
38
  purpose,
33
39
  routeObj,
34
40
  });
41
+ // handle is verified or not
35
42
  const { isVerified } = await handleIsVerified({
36
43
  email: body[emailKey],
37
44
  purpose,
38
45
  routeObj,
39
46
  });
47
+ // user
40
48
  const user = await getUser({
41
- modelName,
42
- routeName,
49
+ model,
50
+ route,
43
51
  email: body[emailKey],
44
52
  routeObj,
45
53
  });
54
+ // update password
46
55
  user[passwordKey] = await hash(body[passwordKey], routeObj);
56
+ // save user
47
57
  await user.save();
48
58
  const OTPModel = getOTPModel(routeObj);
49
59
  if (isVerified)
@@ -1 +1 @@
1
- {"version":3,"file":"resetPassword.js","sourceRoot":"","sources":["../../../src/js/auth/resetPassword.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resetPassword.js","sourceRoot":"","sources":["../../../src/js/auth/resetPassword.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const signup: ({ modelName, routeObj, routeName, validationsObj, }: {
4
- modelName: string;
3
+ declare const signup: ({ model, routeObj, route, validations, }: {
4
+ model: string;
5
5
  routeObj: Route;
6
- routeName: string;
7
- validationsObj: ValidationsObj;
6
+ route: string;
7
+ validations: ValidationsObj;
8
8
  }) => (req: Request, res: Response) => Promise<void>;
9
9
  export default signup;
10
10
  //# sourceMappingURL=signup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA+C1C,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASpE,QAAA,MAAM,MAAM,GAAI,0CAKb;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,CAAC;CAC7B,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA+C1C,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -5,14 +5,18 @@ import getModel from "../utils/getModel.js";
5
5
  import getValidationKey from "../utils/validationKeyError.js";
6
6
  import getErrorDetail from "../utils/getErrorDetail.js";
7
7
  import { getEnvs } from "../config/envs.js";
8
- const signup = ({ modelName, routeObj, routeName, validationsObj, }) => {
8
+ const signup = ({ model, routeObj, route, validations, }) => {
9
9
  return async (req, res) => {
10
+ // get dynamic email and password
10
11
  const { authConfigObj } = getEnvs();
11
12
  const { fieldsObj } = authConfigObj;
12
13
  const emailKey = fieldsObj?.email;
13
14
  const passwordKey = fieldsObj?.password;
14
- const validationObj = getValidationKey(routeObj, validationsObj);
15
+ // validationObj
16
+ const validationObj = getValidationKey(routeObj, validations);
17
+ // validation
15
18
  const body = validate(validationObj, req.body, routeObj);
19
+ // if no email or password
16
20
  if (!req.body[emailKey] || !req.body[passwordKey])
17
21
  throw new AppError({
18
22
  message: `${emailKey} and ${passwordKey} are required.`,
@@ -20,7 +24,8 @@ const signup = ({ modelName, routeObj, routeName, validationsObj, }) => {
20
24
  hint: `Provide ${emailKey} and ${passwordKey} in the request body.`,
21
25
  details: getErrorDetail(routeObj),
22
26
  });
23
- const Model = getModel({ modelName, routeName, routeObj });
27
+ // if existing user
28
+ const Model = getModel({ model, route, routeObj });
24
29
  const existing = await Model.findOne({
25
30
  [emailKey]: body[emailKey],
26
31
  });
@@ -34,8 +39,8 @@ const signup = ({ modelName, routeObj, routeName, validationsObj, }) => {
34
39
  await modeMap.signup[routeObj.mode]({
35
40
  body,
36
41
  res,
37
- routeName,
38
- modelName,
42
+ route,
43
+ model,
39
44
  purpose: "signup",
40
45
  routeObj,
41
46
  req,
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAE3C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;QAClC,MAAM,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC;QAGxC,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAGjE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAY,CAAC;YACjD,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,GAAG,QAAQ,QAAQ,WAAW,gBAAgB;gBACvD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,WAAW,QAAQ,QAAQ,WAAW,uBAAuB;gBACnE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAGL,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACnC,CAAC,QAAS,CAAC,EAAE,IAAI,CAAC,QAAS,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,QAAQ;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kBAAkB,QAAQ,kBAAkB;gBACrD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,sDAAsD,QAAQ,GAAG;gBACvE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;YACnC,IAAI;YACJ,GAAG;YACH,SAAS;YACT,SAAS;YACT,OAAO,EAAE,QAAQ;YACjB,QAAQ;YACR,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,EACd,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,GAMZ,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC3C,iCAAiC;QACjC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QACpC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;QAClC,MAAM,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC;QAExC,gBAAgB;QAChB,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,aAAa;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEzD,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAY,CAAC;YACjD,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,GAAG,QAAQ,QAAQ,WAAW,gBAAgB;gBACvD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,WAAW,QAAQ,QAAQ,WAAW,uBAAuB;gBACnE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,mBAAmB;QACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAE,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACnC,CAAC,QAAS,CAAC,EAAE,IAAI,CAAC,QAAS,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,QAAQ;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kBAAkB,QAAQ,kBAAkB;gBACrD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,sDAAsD,QAAQ,GAAG;gBACvE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;YACnC,IAAI;YACJ,GAAG;YACH,KAAK;YACL,KAAK;YACL,OAAO,EAAE,QAAQ;YACjB,QAAQ;YACR,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route } from "../../types/Collection.js";
3
- declare const authenticateUser: ({ body, modelName, res, req, routeName, routeObj, }: {
3
+ declare const authenticateUser: ({ body, model, res, req, route, routeObj, }: {
4
4
  body: any;
5
- modelName: string;
5
+ model: string;
6
6
  res: Response;
7
7
  req: Request;
8
- routeName: string;
8
+ route: string;
9
9
  routeObj: Route;
10
10
  }) => Promise<void>;
11
11
  export default authenticateUser;
@@ -1 +1 @@
1
- {"version":3,"file":"authenticateUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAOvD,QAAA,MAAM,gBAAgB,GAAU,qDAO7B;IACD,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,kBAqGA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"authenticateUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAOvD,QAAA,MAAM,gBAAgB,GAAU,6CAO7B;IACD,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,kBAqGA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -11,15 +11,19 @@ import { getEnvs } from "../../config/envs.js";
11
11
  import saveRefreshToken from "../../utils/saveRefreshToken.js";
12
12
  import tokenInfo from "./UAParser.js";
13
13
  import { hash } from "../../utils/libsodium.js";
14
- const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj, }) => {
14
+ const authenticateUser = async ({ body, model, res, req, route, routeObj, }) => {
15
+ // get dynamic auth field keys
15
16
  const { authConfigObj } = getEnvs();
16
17
  const { fieldsObj } = authConfigObj;
17
18
  const emailKey = fieldsObj?.email;
18
19
  const passwordKey = fieldsObj?.password;
19
20
  const otpKey = fieldsObj?.otp;
20
21
  const purposeKey = fieldsObj?.purpose;
22
+ // otp model
21
23
  const OTPModel = getOTPModel(routeObj);
24
+ // token info
22
25
  const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
26
+ // handle is verified
23
27
  let isVerified = false;
24
28
  let isOTPUser = null;
25
29
  if ("isVerified" in body)
@@ -28,13 +32,15 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
28
32
  purpose: "login",
29
33
  routeObj,
30
34
  }));
35
+ // user
31
36
  const user = await getUser({
32
- modelName,
33
- routeName,
37
+ model,
38
+ route,
34
39
  email: body[emailKey],
35
40
  needPassword: true,
36
41
  routeObj,
37
42
  });
43
+ // invalid password - credentials mode
38
44
  if (!isOTPUser) {
39
45
  const isValid = await verifyHash(body[passwordKey], user.password, routeObj);
40
46
  if (!isValid)
@@ -45,11 +51,13 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
45
51
  details: getErrorDetail(routeObj),
46
52
  });
47
53
  }
54
+ // remove from otp model
48
55
  if (isVerified)
49
56
  await OTPModel.deleteOne({
50
57
  _id: body._id,
51
58
  });
52
59
  const { _id } = user.toObject();
60
+ // send cookie
53
61
  const { accessToken, refreshToken, refreshTokenAge } = sendCookie({
54
62
  res,
55
63
  accessTokenName: authConfigObj.accessTokenName,
@@ -61,6 +69,7 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
61
69
  familyId,
62
70
  jti,
63
71
  });
72
+ // save refreshToken
64
73
  const hashedToken = await hash(refreshToken);
65
74
  await saveRefreshToken({
66
75
  hashedToken,
@@ -74,6 +83,7 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
74
83
  ipAddress,
75
84
  os,
76
85
  });
86
+ // send response
77
87
  appResponse({
78
88
  res,
79
89
  message: "Authenticated successfully!",
@@ -1 +1 @@
1
- {"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEhD,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,IAAI,EACJ,SAAS,EACT,GAAG,EACH,GAAG,EACH,SAAS,EACT,QAAQ,GAQT,EAAE,EAAE;IAEH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAEpC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;IAClC,MAAM,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAGtC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,GAC5D,SAAS,CAAC,GAAG,CAAC,CAAC;IAGjB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAQ,IAAI,CAAC;IAE1B,IAAI,YAAY,IAAI,IAAI;QACtB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,QAAS,CAAW;YAChC,OAAO,EAAE,OAAO;YAChB,QAAQ;SACT,CAAC,CAAC,CAAC;IAGN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,SAAS;QACT,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,QAAS,CAAW;QAChC,YAAY,EAAE,IAAI;QAClB,QAAQ;KACT,CAAC,CAAC;IAGH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,IAAI,CAAC,WAAY,CAAC,EAClB,IAAI,CAAC,QAAQ,EACb,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,mBAAmB;gBAC5B,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,eAAe,WAAW,iBAAiB;gBACjD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,UAAU;QACZ,MAAM,QAAS,CAAC,SAAS,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IAEL,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAGhC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;QAChE,GAAG;QACH,eAAe,EAAE,aAAa,CAAC,eAAgB;QAC/C,gBAAgB,EAAE,aAAa,CAAC,gBAAiB;QACjD,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAChC,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QACjC,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,GAAG;KACJ,CAAC,CAAC;IAGH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,CAAC;IAE9C,MAAM,gBAAgB,CAAC;QACrB,WAAW;QACX,eAAe;QACf,GAAG;QACH,QAAQ;QACR,GAAG,EAAE,GAAa;QAClB,QAAQ;QACR,UAAU;QACV,UAAU;QACV,SAAS;QACT,EAAE;KACH,CAAC,CAAC;IAGH,WAAW,CAAC;QACV,GAAG;QACH,OAAO,EAAE,6BAA6B;QACtC,UAAU,EAAE,GAAG;QACf,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;QAC5C,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,SAAS;QACxE,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,SAAS;QAC3E,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { OTPSchema } from "../../types/MongooseOTPSchemaObj.js";
2
- declare const createOTPModel: (routeName: string, mongooseSchemaObj: OTPSchema) => any;
2
+ declare const createOTPModel: (route: string, schema: OTPSchema) => any;
3
3
  export default createOTPModel;
4
4
  //# sourceMappingURL=createOTPModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOTPModel.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPModel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAIrE,QAAA,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,mBAAmB,SAAS,QAwDtE,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"createOTPModel.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPModel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAIrE,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,QAAQ,SAAS,QAwDvD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,16 +1,20 @@
1
1
  import createModel from "../../lib/model.factory.js";
2
2
  import otpPurposes from "../../utils/otpPurposes.js";
3
3
  import { getEnvs } from "../../config/envs.js";
4
- const createOTPModel = (routeName, mongooseSchemaObj) => {
4
+ const createOTPModel = (route, schema) => {
5
+ // get dynamic auth field keys
5
6
  const { authConfigObj } = getEnvs();
6
7
  const { fieldsObj } = authConfigObj;
7
8
  const emailKey = fieldsObj?.email;
8
9
  const otpKey = fieldsObj?.otp;
9
10
  const purposeKey = fieldsObj?.purpose;
11
+ // Make all fields from the original schema optional
10
12
  const makeOptional = (field) => {
13
+ // Array schema
11
14
  if (Array.isArray(field)) {
12
15
  return field.map(makeOptional);
13
16
  }
17
+ // Nested object that contains `type`
14
18
  if (field && typeof field === "object" && "type" in field) {
15
19
  return {
16
20
  ...field,
@@ -18,12 +22,13 @@ const createOTPModel = (routeName, mongooseSchemaObj) => {
18
22
  unique: false,
19
23
  };
20
24
  }
25
+ // Nested schema object
21
26
  if (field && typeof field === "object") {
22
27
  return Object.fromEntries(Object.entries(field).map(([k, v]) => [k, makeOptional(v)]));
23
28
  }
24
29
  return field;
25
30
  };
26
- const optionalSchema = makeOptional(mongooseSchemaObj);
31
+ const optionalSchema = makeOptional(schema);
27
32
  return createModel("otpUser", {
28
33
  ...optionalSchema,
29
34
  otpCount: { type: Number, default: 0 },
@@ -37,7 +42,7 @@ const createOTPModel = (routeName, mongooseSchemaObj) => {
37
42
  enum: otpPurposes,
38
43
  required: true,
39
44
  },
40
- }, routeName);
45
+ }, route);
41
46
  };
42
47
  export default createOTPModel;
43
48
  //# sourceMappingURL=createOTPModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createOTPModel.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPModel.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAErD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,iBAA4B,EAAE,EAAE;IAEzE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAEpC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAGtC,MAAM,YAAY,GAAG,CAAC,KAAU,EAAO,EAAE;QAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAGD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1D,OAAO;gBACL,GAAG,KAAK;gBACR,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAGD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAEvD,OAAO,WAAW,CAChB,SAAS,EACT;QACE,GAAG,cAAc;QAEjB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACtC,CAAC,MAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACzB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;QAChE,CAAC,UAAW,CAAC,EAAE;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,IAAI;SACf;KACF,EACD,SAAS,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"createOTPModel.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPModel.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAErD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,MAAiB,EAAE,EAAE;IAC1D,8BAA8B;IAC9B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAEpC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAEtC,oDAAoD;IACpD,MAAM,YAAY,GAAG,CAAC,KAAU,EAAO,EAAE;QACvC,eAAe;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAED,qCAAqC;QACrC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1D,OAAO;gBACL,GAAG,KAAK;gBACR,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,WAAW,CAChB,SAAS,EACT;QACE,GAAG,cAAc;QAEjB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACtC,CAAC,MAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QACzB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;QAChE,CAAC,UAAW,CAAC,EAAE;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,IAAI;SACf;KACF,EACD,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { Response } from "express";
2
2
  import type { Route } from "../../types/Collection.js";
3
- declare const createOTPUser: ({ body, res, purpose, routeName, modelName, routeObj, }: {
3
+ declare const createOTPUser: ({ body, res, purpose, route, model, routeObj, }: {
4
4
  body: any;
5
5
  res: Response;
6
6
  purpose: string;
7
- routeName: string;
8
- modelName: string;
7
+ route: string;
8
+ model: string;
9
9
  routeObj: Route;
10
10
  }) => Promise<void>;
11
11
  export default createOTPUser;
@@ -1 +1 @@
1
- {"version":3,"file":"createOTPUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,aAAa,GAAU,yDAO1B;IACD,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,kBA8EA,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"createOTPUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,aAAa,GAAU,iDAO1B;IACD,IAAI,EAAE,GAAG,CAAC;IACV,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,kBA8EA,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -6,14 +6,17 @@ import getOTPModel from "./getOTPModel.js";
6
6
  import verifyCredentials from "./verifyCredentials.js";
7
7
  import getErrorDetail from "../../utils/getErrorDetail.js";
8
8
  import { getEnvs } from "../../config/envs.js";
9
- const createOTPUser = async ({ body, res, purpose, routeName, modelName, routeObj, }) => {
9
+ const createOTPUser = async ({ body, res, purpose, route, model, routeObj, }) => {
10
+ // get dynamic auth field keys
10
11
  const { authConfigObj } = getEnvs();
11
12
  const { fieldsObj } = authConfigObj;
12
13
  const emailKey = fieldsObj?.email;
13
14
  const passwordKey = fieldsObj?.password;
14
15
  const otpKey = fieldsObj?.otp;
15
16
  const purposeKey = fieldsObj?.purpose;
17
+ // otp model
16
18
  const OTPModel = getOTPModel(routeObj);
19
+ // if no purpose
17
20
  if (!purpose)
18
21
  throw new AppError({
19
22
  message: `${purposeKey} is required.`,
@@ -25,6 +28,7 @@ const createOTPUser = async ({ body, res, purpose, routeName, modelName, routeOb
25
28
  path: routeObj.path,
26
29
  },
27
30
  });
31
+ // if already requested otp
28
32
  const existingOTPs = await OTPModel.find({
29
33
  [emailKey]: body[emailKey],
30
34
  });
@@ -37,23 +41,27 @@ const createOTPUser = async ({ body, res, purpose, routeName, modelName, routeOb
37
41
  details: getErrorDetail(routeObj),
38
42
  });
39
43
  }
44
+ // if login - mode: otp
40
45
  if (purpose === "login")
41
46
  await verifyCredentials({
42
- modelName,
47
+ model,
43
48
  body,
44
- routeName,
49
+ route,
45
50
  routeObj,
46
51
  });
52
+ // send otp + handle hashing
47
53
  const { OTP, otpExpiry } = await sendOTP(body[emailKey], routeObj);
48
54
  const hashedOTP = await hash(OTP, routeObj);
49
55
  if (body?.[passwordKey])
50
56
  body[passwordKey] = await hash(body[passwordKey], routeObj);
57
+ // create otp
51
58
  await OTPModel.create({
52
59
  ...body,
53
60
  [otpKey]: hashedOTP,
54
61
  otpExpiry,
55
62
  [purposeKey]: purpose,
56
63
  });
64
+ // send response
57
65
  appResponse({
58
66
  res,
59
67
  message: "OTP sent successfully!",