@starklabs/forge 1.3.5 → 1.3.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 (72) hide show
  1. package/dist/js/auth/builtin/auth.collection.d.ts.map +1 -1
  2. package/dist/js/auth/builtin/auth.collection.js +7 -2
  3. package/dist/js/auth/builtin/auth.collection.js.map +1 -1
  4. package/dist/js/auth/builtin/getValidations.d.ts.map +1 -1
  5. package/dist/js/auth/builtin/getValidations.js +40 -24
  6. package/dist/js/auth/builtin/getValidations.js.map +1 -1
  7. package/dist/js/auth/forgotPassword.d.ts.map +1 -1
  8. package/dist/js/auth/forgotPassword.js +9 -5
  9. package/dist/js/auth/forgotPassword.js.map +1 -1
  10. package/dist/js/auth/index.d.ts.map +1 -1
  11. package/dist/js/auth/index.js +2 -0
  12. package/dist/js/auth/index.js.map +1 -1
  13. package/dist/js/auth/login.d.ts.map +1 -1
  14. package/dist/js/auth/login.js +9 -4
  15. package/dist/js/auth/login.js.map +1 -1
  16. package/dist/js/auth/refresh.d.ts.map +1 -1
  17. package/dist/js/auth/refresh.js +4 -11
  18. package/dist/js/auth/refresh.js.map +1 -1
  19. package/dist/js/auth/resendOTP.d.ts.map +1 -1
  20. package/dist/js/auth/resendOTP.js +20 -11
  21. package/dist/js/auth/resendOTP.js.map +1 -1
  22. package/dist/js/auth/resetPassword.d.ts.map +1 -1
  23. package/dist/js/auth/resetPassword.js +21 -13
  24. package/dist/js/auth/resetPassword.js.map +1 -1
  25. package/dist/js/auth/signup.d.ts.map +1 -1
  26. package/dist/js/auth/signup.js +14 -7
  27. package/dist/js/auth/signup.js.map +1 -1
  28. package/dist/js/auth/utils/UAParser.d.ts +1 -0
  29. package/dist/js/auth/utils/UAParser.d.ts.map +1 -1
  30. package/dist/js/auth/utils/UAParser.js +1 -0
  31. package/dist/js/auth/utils/UAParser.js.map +1 -1
  32. package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
  33. package/dist/js/auth/utils/authenticateUser.js +11 -6
  34. package/dist/js/auth/utils/authenticateUser.js.map +1 -1
  35. package/dist/js/auth/utils/createOTPModel.d.ts.map +1 -1
  36. package/dist/js/auth/utils/createOTPModel.js +8 -2
  37. package/dist/js/auth/utils/createOTPModel.js.map +1 -1
  38. package/dist/js/auth/utils/createOTPUser.d.ts.map +1 -1
  39. package/dist/js/auth/utils/createOTPUser.js +19 -10
  40. package/dist/js/auth/utils/createOTPUser.js.map +1 -1
  41. package/dist/js/auth/utils/createUser.d.ts.map +1 -1
  42. package/dist/js/auth/utils/createUser.js +9 -4
  43. package/dist/js/auth/utils/createUser.js.map +1 -1
  44. package/dist/js/auth/utils/getOTPUser.d.ts.map +1 -1
  45. package/dist/js/auth/utils/getOTPUser.js +10 -2
  46. package/dist/js/auth/utils/getOTPUser.js.map +1 -1
  47. package/dist/js/auth/utils/getUser.d.ts.map +1 -1
  48. package/dist/js/auth/utils/getUser.js +12 -3
  49. package/dist/js/auth/utils/getUser.js.map +1 -1
  50. package/dist/js/auth/utils/handleGetRefreshToken.d.ts +9 -0
  51. package/dist/js/auth/utils/handleGetRefreshToken.d.ts.map +1 -0
  52. package/dist/js/auth/utils/handleGetRefreshToken.js +42 -0
  53. package/dist/js/auth/utils/handleGetRefreshToken.js.map +1 -0
  54. package/dist/js/auth/utils/handleIsVerified.d.ts.map +1 -1
  55. package/dist/js/auth/utils/handleIsVerified.js.map +1 -1
  56. package/dist/js/auth/utils/otpVerifiedResponse.d.ts.map +1 -1
  57. package/dist/js/auth/utils/otpVerifiedResponse.js +9 -5
  58. package/dist/js/auth/utils/otpVerifiedResponse.js.map +1 -1
  59. package/dist/js/auth/utils/verifyCredentials.d.ts.map +1 -1
  60. package/dist/js/auth/utils/verifyCredentials.js +9 -4
  61. package/dist/js/auth/utils/verifyCredentials.js.map +1 -1
  62. package/dist/js/auth/verifyOTP.d.ts.map +1 -1
  63. package/dist/js/auth/verifyOTP.js +20 -12
  64. package/dist/js/auth/verifyOTP.js.map +1 -1
  65. package/dist/js/config/envs.js +3 -3
  66. package/dist/js/config/envs.js.map +1 -1
  67. package/dist/js/lib/model.factory.d.ts.map +1 -1
  68. package/dist/js/lib/model.factory.js +4 -1
  69. package/dist/js/lib/model.factory.js.map +1 -1
  70. package/dist/js/types/Constructor.d.ts +2 -0
  71. package/dist/js/types/Constructor.d.ts.map +1 -1
  72. package/package.json +1 -1
@@ -12,31 +12,36 @@ import saveRefreshToken from "../../utils/saveRefreshToken.js";
12
12
  import tokenInfo from "./UAParser.js";
13
13
  import { hash } from "../../utils/libsodium.js";
14
14
  const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj, }) => {
15
+ const { authConfigObj } = getEnvs();
16
+ const { fieldsObj } = authConfigObj;
17
+ const emailKey = fieldsObj?.email;
18
+ const passwordKey = fieldsObj?.password;
19
+ const otpKey = fieldsObj?.otp;
20
+ const purposeKey = fieldsObj?.purpose;
15
21
  const OTPModel = getOTPModel(routeObj);
16
22
  const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
17
- const { authConfigObj } = getEnvs();
18
23
  let isVerified = false;
19
24
  let isOTPUser = null;
20
25
  if ("isVerified" in body)
21
26
  ({ isVerified, isOTPUser } = await handleIsVerified({
22
- email: body.email,
27
+ email: body[emailKey],
23
28
  purpose: "login",
24
29
  routeObj,
25
30
  }));
26
31
  const user = await getUser({
27
32
  modelName,
28
33
  routeName,
29
- email: body.email,
34
+ email: body[emailKey],
30
35
  needPassword: true,
31
36
  routeObj,
32
37
  });
33
38
  if (!isOTPUser) {
34
- const isValid = await verifyHash(body.password, user.password, routeObj);
39
+ const isValid = await verifyHash(body[passwordKey], user.password, routeObj);
35
40
  if (!isValid)
36
41
  throw new AppError({
37
42
  message: "Invalid password.",
38
43
  statusCode: 409,
39
- hint: "Verify your password and try again.",
44
+ hint: `Verify your ${passwordKey} and try again.`,
40
45
  details: getErrorDetail(routeObj),
41
46
  });
42
47
  }
@@ -76,7 +81,7 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
76
81
  data: sanitizeOne(user.toObject(), routeObj),
77
82
  accessToken: authConfigObj?.returnAccessToken ? accessToken : undefined,
78
83
  refreshToken: authConfigObj?.returnRefreshToken ? refreshToken : undefined,
79
- purpose: body.purpose,
84
+ purpose: body[purposeKey],
80
85
  });
81
86
  };
82
87
  export default authenticateUser;
@@ -1 +1 @@
1
- {"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"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"}
@@ -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;AAGrE,QAAA,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,mBAAmB,SAAS,QAgDtE,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,WAAW,MAAM,EAAE,mBAAmB,SAAS,QAwDtE,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import createModel from "../../lib/model.factory.js";
2
2
  import otpPurposes from "../../utils/otpPurposes.js";
3
+ import { getEnvs } from "../../config/envs.js";
3
4
  const createOTPModel = (routeName, mongooseSchemaObj) => {
5
+ const { authConfigObj } = getEnvs();
6
+ const { fieldsObj } = authConfigObj;
7
+ const emailKey = fieldsObj?.email;
8
+ const otpKey = fieldsObj?.otp;
9
+ const purposeKey = fieldsObj?.purpose;
4
10
  const makeOptional = (field) => {
5
11
  if (Array.isArray(field)) {
6
12
  return field.map(makeOptional);
@@ -21,12 +27,12 @@ const createOTPModel = (routeName, mongooseSchemaObj) => {
21
27
  return createModel("otpUser", {
22
28
  ...optionalSchema,
23
29
  otpCount: { type: Number, default: 0 },
24
- OTP: { type: String },
30
+ [otpKey]: { type: String },
25
31
  otpExpiry: { type: Date },
26
32
  isVerified: { type: Boolean, default: false },
27
33
  maxOTPTries: { type: Number, default: 10 },
28
34
  role: { type: String, enum: ["user", "admin"], default: "user" },
29
- purpose: {
35
+ [purposeKey]: {
30
36
  type: String,
31
37
  enum: otpPurposes,
32
38
  required: true,
@@ -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;AAErD,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,iBAA4B,EAAE,EAAE;IAEzE,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,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACrB,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,OAAO,EAAE;YACP,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,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 +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;AAGvD,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,kBA+DA,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,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"}
@@ -5,22 +5,31 @@ import { hash } from "../../utils/libsodium.js";
5
5
  import getOTPModel from "./getOTPModel.js";
6
6
  import verifyCredentials from "./verifyCredentials.js";
7
7
  import getErrorDetail from "../../utils/getErrorDetail.js";
8
+ import { getEnvs } from "../../config/envs.js";
8
9
  const createOTPUser = async ({ body, res, purpose, routeName, modelName, routeObj, }) => {
10
+ const { authConfigObj } = getEnvs();
11
+ const { fieldsObj } = authConfigObj;
12
+ const emailKey = fieldsObj?.email;
13
+ const passwordKey = fieldsObj?.password;
14
+ const otpKey = fieldsObj?.otp;
15
+ const purposeKey = fieldsObj?.purpose;
9
16
  const OTPModel = getOTPModel(routeObj);
10
17
  if (!purpose)
11
18
  throw new AppError({
12
- message: "purpose is required.",
19
+ message: `${purposeKey} is required.`,
13
20
  statusCode: 400,
14
- hint: "Provide purpose before creating an OTP request.",
21
+ hint: `Provide ${purposeKey} before creating an OTP request.`,
15
22
  details: {
16
23
  handler: routeObj.handler,
17
24
  method: routeObj.method,
18
25
  path: routeObj.path,
19
26
  },
20
27
  });
21
- const existingOTPs = await OTPModel.find({ email: body.email });
28
+ const existingOTPs = await OTPModel.find({
29
+ [emailKey]: body[emailKey],
30
+ });
22
31
  for (const el of existingOTPs) {
23
- if (el.toObject().purpose === purpose)
32
+ if (el.toObject()[purposeKey] === purpose)
24
33
  throw new AppError({
25
34
  message: "OTP has already been requested.",
26
35
  statusCode: 409,
@@ -35,22 +44,22 @@ const createOTPUser = async ({ body, res, purpose, routeName, modelName, routeOb
35
44
  routeName,
36
45
  routeObj,
37
46
  });
38
- const { OTP, otpExpiry } = await sendOTP(body.email, routeObj);
47
+ const { OTP, otpExpiry } = await sendOTP(body[emailKey], routeObj);
39
48
  const hashedOTP = await hash(OTP, routeObj);
40
- if (body?.password)
41
- body.password = await hash(body.password, routeObj);
49
+ if (body?.[passwordKey])
50
+ body[passwordKey] = await hash(body[passwordKey], routeObj);
42
51
  await OTPModel.create({
43
52
  ...body,
44
- OTP: hashedOTP,
53
+ [otpKey]: hashedOTP,
45
54
  otpExpiry,
46
- purpose,
55
+ [purposeKey]: purpose,
47
56
  });
48
57
  appResponse({
49
58
  res,
50
59
  message: "OTP sent successfully!",
51
60
  statusCode: 200,
52
61
  data: {
53
- nextStep: `go to /verify-otp with purpose: ${purpose}`,
62
+ nextStep: `go to /verify-otp with ${purposeKey}: ${purpose}`,
54
63
  },
55
64
  });
56
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createOTPUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPUser.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,aAAa,GAAG,KAAK,EAAE,EAC3B,IAAI,EACJ,GAAG,EACH,OAAO,EACP,SAAS,EACT,SAAS,EACT,QAAQ,GAQT,EAAE,EAAE;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAE,CAAC;IAGxC,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,iDAAiD;YACvD,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAGL,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhE,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,KAAK,OAAO;YACnC,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,iCAAiC;gBAC1C,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,oGAAoG;gBAC1G,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,OAAO,KAAK,OAAO;QACrB,MAAM,iBAAiB,CAAC;YACtB,SAAS;YACT,IAAI;YACJ,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;IAGL,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE5C,IAAI,IAAI,EAAE,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAGxE,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpB,GAAG,IAAI;QACP,GAAG,EAAE,SAAS;QACd,SAAS;QACT,OAAO;KACR,CAAC,CAAC;IAGH,WAAW,CAAC;QACV,GAAG;QACH,OAAO,EAAE,wBAAwB;QACjC,UAAU,EAAE,GAAG;QACf,IAAI,EAAE;YACJ,QAAQ,EAAE,mCAAmC,OAAO,EAAE;SACvD;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"createOTPUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPUser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,UAAU,GAAU,qDAOvB;IACD,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd,kBA+EA,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"createUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,UAAU,GAAU,qDAOvB;IACD,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd,kBAuFA,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -10,15 +10,20 @@ import { getEnvs } from "../../config/envs.js";
10
10
  import tokenInfo from "./UAParser.js";
11
11
  import saveRefreshToken from "../../utils/saveRefreshToken.js";
12
12
  const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) => {
13
+ const { authConfigObj } = getEnvs();
14
+ const { fieldsObj } = authConfigObj;
15
+ const emailKey = fieldsObj?.email;
16
+ const passwordKey = fieldsObj?.password;
17
+ const otpKey = fieldsObj?.otp;
18
+ const purposeKey = fieldsObj?.purpose;
13
19
  const Model = getModel({ modelName, routeName, routeObj });
14
20
  const OTPModel = getOTPModel(routeObj);
15
21
  const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
16
- const { authConfigObj } = getEnvs();
17
22
  let isVerified = false;
18
23
  let isOTPUser = null;
19
24
  if ("isVerified" in body)
20
25
  ({ isVerified, isOTPUser } = await handleIsVerified({
21
- email: body.email,
26
+ email: body[emailKey],
22
27
  purpose: "signup",
23
28
  routeObj,
24
29
  }));
@@ -28,7 +33,7 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
28
33
  delete body._id;
29
34
  }
30
35
  else {
31
- body.password = await hash(body.password, routeObj);
36
+ body[passwordKey] = await hash(body[passwordKey], routeObj);
32
37
  body.role = "user";
33
38
  }
34
39
  const newUser = await Model.create(body);
@@ -66,7 +71,7 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
66
71
  data: sanitizeOne(newUser.toObject(), routeObj),
67
72
  accessToken: authConfigObj?.returnAccessToken ? accessToken : undefined,
68
73
  refreshToken: authConfigObj?.returnRefreshToken ? refreshToken : undefined,
69
- purpose: body.purpose,
74
+ purpose: body[purposeKey],
70
75
  });
71
76
  };
72
77
  export default createUser;
@@ -1 +1 @@
1
- {"version":3,"file":"createUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getOTPUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/getOTPUser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,QAAA,MAAM,UAAU,GAAU,+BAIvB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB,iBAoBA,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"getOTPUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/getOTPUser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,UAAU,GAAU,+BAIvB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB,iBA8BA,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,13 +1,21 @@
1
1
  import getOTPModel from "./getOTPModel.js";
2
2
  import AppError from "../../utils/AppError.js";
3
+ import { getEnvs } from "../../config/envs.js";
3
4
  const getOTPUser = async ({ email, purpose, routeObj, }) => {
5
+ const { authConfigObj } = getEnvs();
6
+ const { fieldsObj } = authConfigObj;
7
+ const emailKey = fieldsObj?.email;
8
+ const purposeKey = fieldsObj?.purpose;
4
9
  const OTPModel = getOTPModel(routeObj);
5
- const OTPUser = await OTPModel.findOne({ email, purpose });
10
+ const OTPUser = await OTPModel.findOne({
11
+ [emailKey]: email,
12
+ [purposeKey]: purpose,
13
+ });
6
14
  if (!OTPUser)
7
15
  throw new AppError({
8
16
  message: "OTP request not found.",
9
17
  statusCode: 404,
10
- hint: "Request a new OTP or verify the provided email and purpose.",
18
+ hint: `Request a new OTP or verify the provided ${emailKey} and ${purposeKey}.`,
11
19
  details: {
12
20
  handler: routeObj.handler,
13
21
  method: routeObj.method,
@@ -1 +1 @@
1
- {"version":3,"file":"getOTPUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/getOTPUser.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAG/C,MAAM,UAAU,GAAG,KAAK,EAAE,EACxB,KAAK,EACL,OAAO,EACP,QAAQ,GAKT,EAAE,EAAE;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3D,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,wBAAwB;YACjC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,6DAA6D;YACnE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"getOTPUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/getOTPUser.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,UAAU,GAAG,KAAK,EAAE,EACxB,KAAK,EACL,OAAO,EACP,QAAQ,GAKT,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,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAGtC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACrC,CAAC,QAAS,CAAC,EAAE,KAAK;QAClB,CAAC,UAAW,CAAC,EAAE,OAAO;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,wBAAwB;YACjC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,4CAA4C,QAAQ,QAAQ,UAAU,GAAG;YAC/E,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/getUser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,QAAA,MAAM,OAAO,GAAU,0DAMpB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;CACjB,iBA2BA,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"getUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/getUser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,OAAO,GAAU,0DAMpB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;CACjB,iBAsCA,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,19 +1,28 @@
1
1
  import getModel from "../../utils/getModel.js";
2
2
  import AppError from "../../utils/AppError.js";
3
+ import { getEnvs } from "../../config/envs.js";
3
4
  const getUser = async ({ modelName, routeName, email, needPassword, routeObj, }) => {
5
+ const { authConfigObj } = getEnvs();
6
+ const { fieldsObj } = authConfigObj;
7
+ const emailKey = fieldsObj?.email;
8
+ const passwordKey = fieldsObj?.password;
4
9
  const Model = getModel({ modelName, routeName, routeObj });
5
10
  let user = null;
6
11
  if (needPassword) {
7
- user = await Model.findOne({ email }).select("+password");
12
+ user = await Model.findOne({
13
+ [emailKey]: email,
14
+ }).select(`+${passwordKey}`);
8
15
  }
9
16
  else {
10
- user = await Model.findOne({ email });
17
+ user = await Model.findOne({
18
+ [emailKey]: email,
19
+ });
11
20
  }
12
21
  if (!user)
13
22
  throw new AppError({
14
23
  message: "User not found.",
15
24
  statusCode: 404,
16
- hint: "Verify the provided email address or create a new account.",
25
+ hint: `Verify the provided ${emailKey} or create a new account.`,
17
26
  details: {
18
27
  handler: routeObj.handler,
19
28
  method: routeObj.method,
@@ -1 +1 @@
1
- {"version":3,"file":"getUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/getUser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAG/C,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,SAAS,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,QAAQ,GAOT,EAAE,EAAE;IAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAG3D,IAAI,IAAI,GAAQ,IAAI,CAAC;IAErB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAGD,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,4DAA4D;YAClE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"getUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/getUser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,SAAS,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,QAAQ,GAOT,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;IAGxC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAG3D,IAAI,IAAI,GAAQ,IAAI,CAAC;IAErB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACzB,CAAC,QAAS,CAAC,EAAE,KAAK;SACnB,CAAC,CAAC,MAAM,CAAC,IAAI,WAAY,EAAE,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;YACzB,CAAC,QAAS,CAAC,EAAE,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,iBAAiB;YAC1B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uBAAuB,QAAQ,2BAA2B;YAChE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Route } from "../../types/Collection.js";
2
+ import type { Request } from "express";
3
+ declare const getRefreshToken: ({ req, reqMethod, routeObj, }: {
4
+ req: Request;
5
+ reqMethod: string;
6
+ routeObj: Route;
7
+ }) => any;
8
+ export default getRefreshToken;
9
+ //# sourceMappingURL=handleGetRefreshToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetRefreshToken.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleGetRefreshToken.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,QAAA,MAAM,eAAe,GAAI,+BAItB;IACD,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,QA6CA,CAAC;AACF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ import AppError from "../../utils/AppError.js";
2
+ import getErrorDetail from "../../utils/getErrorDetail.js";
3
+ import { getEnvs } from "../../config/envs.js";
4
+ const getRefreshToken = ({ req, reqMethod, routeObj, }) => {
5
+ const { authConfigObj } = getEnvs();
6
+ const tokenName = authConfigObj.refreshTokenName;
7
+ if (reqMethod !== "GET" && reqMethod !== "POST")
8
+ throw new AppError({
9
+ details: getErrorDetail(routeObj),
10
+ hint: "This is route only works with GET and POST methods",
11
+ message: "Invalid method",
12
+ statusCode: 409,
13
+ code: "INVALID_REFRESH_TOKEN_METHOD",
14
+ });
15
+ let token = null;
16
+ if (reqMethod === "GET") {
17
+ token = req.cookies[tokenName];
18
+ }
19
+ else {
20
+ const bodyToken = req.body[tokenName];
21
+ if (!bodyToken || typeof bodyToken !== "string")
22
+ throw new AppError({
23
+ message: "Refresh token is missing",
24
+ code: "REFRESH_TOKEN_MISSING",
25
+ details: getErrorDetail(routeObj),
26
+ hint: `With POST method, '${tokenName}' is required in body as string.`,
27
+ statusCode: 401,
28
+ });
29
+ token = bodyToken;
30
+ }
31
+ if (!token)
32
+ throw new AppError({
33
+ message: "Refresh token is missing",
34
+ code: "REFRESH_TOKEN_MISSING",
35
+ details: getErrorDetail(routeObj),
36
+ hint: "Log in again to create a new authentication session.",
37
+ statusCode: 401,
38
+ });
39
+ return token;
40
+ };
41
+ export default getRefreshToken;
42
+ //# sourceMappingURL=handleGetRefreshToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGetRefreshToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleGetRefreshToken.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,eAAe,GAAG,CAAC,EACvB,GAAG,EACH,SAAS,EACT,QAAQ,GAKT,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,MAAM,SAAS,GAAG,aAAa,CAAC,gBAAgB,CAAC;IAGjD,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM;QAC7C,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,oDAAoD;YAC1D,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,8BAA8B;SACrC,CAAC,CAAC;IAEL,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,SAAU,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;YAC7C,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,sBAAsB,SAAS,kCAAkC;gBACvE,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QAEL,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IAGD,IAAI,CAAC,KAAK;QACR,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,sDAAsD;YAC5D,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IAEL,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleIsVerified.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleIsVerified.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,gBAAgB,GAAU,+BAI7B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB;;;EAuBA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"handleIsVerified.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleIsVerified.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,gBAAgB,GAAU,+BAI7B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;CACjB;;;EAuBA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleIsVerified.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleIsVerified.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAG3D,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,KAAK,EACL,OAAO,EACP,QAAQ,GAKT,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;QACjC,KAAK;QACL,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,gCAAgC;gBACzC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,8CAA8C;gBACpD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"handleIsVerified.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleIsVerified.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,KAAK,EACL,OAAO,EACP,QAAQ,GAKT,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;QACjC,KAAK;QACL,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,gCAAgC;gBACzC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,8CAA8C;gBACpD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"otpVerifiedResponse.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/otpVerifiedResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,QAAA,MAAM,mBAAmB,GAAI,0BAI1B;IACD,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC;CACjB,SAkBA,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"otpVerifiedResponse.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/otpVerifiedResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,mBAAmB,GAAI,0BAI1B;IACD,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,KAAK,CAAC;CACjB,SAwBA,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import appResponse from "../../utils/response.js";
2
2
  import AppError from "../../utils/AppError.js";
3
+ import { getEnvs } from "../../config/envs.js";
3
4
  const otpVerifiedResponse = ({ res, body, routeObj, }) => {
4
- if (!body.purpose)
5
+ const { authConfigObj } = getEnvs();
6
+ const { fieldsObj } = authConfigObj;
7
+ const purposeKey = fieldsObj?.purpose;
8
+ if (!body?.[purposeKey])
5
9
  throw new AppError({
6
- message: "purpose is required.",
10
+ message: `${purposeKey} is required.`,
7
11
  statusCode: 400,
8
- hint: "Provide purpose before sending the OTP verification response.",
12
+ hint: `Provide ${purposeKey} before sending the OTP verification response.`,
9
13
  details: {
10
14
  handler: routeObj.handler,
11
15
  method: routeObj.method,
@@ -14,8 +18,8 @@ const otpVerifiedResponse = ({ res, body, routeObj, }) => {
14
18
  });
15
19
  appResponse({
16
20
  res,
17
- message: `${body.purpose}: OTP verified successfully!`,
18
- purpose: body.purpose
21
+ message: `${body[purposeKey]}: OTP verified successfully!`,
22
+ purpose: body[purposeKey],
19
23
  });
20
24
  };
21
25
  export default otpVerifiedResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"otpVerifiedResponse.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/otpVerifiedResponse.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAG/C,MAAM,mBAAmB,GAAG,CAAC,EAC3B,GAAG,EACH,IAAI,EACJ,QAAQ,GAKT,EAAE,EAAE;IACH,IAAI,CAAC,IAAI,CAAC,OAAO;QACf,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,+DAA+D;YACrE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,WAAW,CAAC;QACV,GAAG;QACH,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,8BAA8B;QACtD,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"otpVerifiedResponse.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/otpVerifiedResponse.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,mBAAmB,GAAG,CAAC,EAC3B,GAAG,EACH,IAAI,EACJ,QAAQ,GAKT,EAAE,EAAE;IAEH,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IAEpC,MAAM,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAEtC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAW,CAAC;QACtB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,GAAG,UAAU,eAAe;YACrC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,WAAW,UAAU,gDAAgD;YAC3E,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAEL,WAAW,CAAC;QACV,GAAG;QACH,OAAO,EAAE,GAAG,IAAI,CAAC,UAAW,CAAC,8BAA8B;QAC3D,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyCredentials.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/verifyCredentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,QAAA,MAAM,iBAAiB,GAAU,2CAK9B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,kBAmCA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"verifyCredentials.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/verifyCredentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAGvD,QAAA,MAAM,iBAAiB,GAAU,2CAK9B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,kBA8CA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import AppError from "../../utils/AppError.js";
2
2
  import { verifyHash } from "../../utils/libsodium.js";
3
3
  import getUser from "./getUser.js";
4
+ import { getEnvs } from "../../config/envs.js";
4
5
  const verifyCredentials = async ({ modelName, body, routeName, routeObj, }) => {
6
+ const { authConfigObj } = getEnvs();
7
+ const { fieldsObj } = authConfigObj;
8
+ const emailKey = fieldsObj?.email;
9
+ const passwordKey = fieldsObj?.password;
5
10
  if (!modelName || !body)
6
11
  throw new AppError({
7
12
  message: "modelName and body are required.",
@@ -16,16 +21,16 @@ const verifyCredentials = async ({ modelName, body, routeName, routeObj, }) => {
16
21
  const user = await getUser({
17
22
  modelName,
18
23
  routeName,
19
- email: body.email,
24
+ email: body[emailKey],
20
25
  needPassword: true,
21
- routeObj
26
+ routeObj,
22
27
  });
23
- const isValid = await verifyHash(body.password, user.password, routeObj);
28
+ const isValid = await verifyHash(body[passwordKey], user[passwordKey], routeObj);
24
29
  if (!isValid)
25
30
  throw new AppError({
26
31
  message: "Invalid password.",
27
32
  statusCode: 401,
28
- hint: "Verify your password and try again.",
33
+ hint: `Verify your ${passwordKey} and try again.`,
29
34
  details: {
30
35
  handler: routeObj.handler,
31
36
  method: routeObj.method,
@@ -1 +1 @@
1
- {"version":3,"file":"verifyCredentials.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/verifyCredentials.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,OAAO,MAAM,cAAc,CAAC;AAGnC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EAC/B,SAAS,EACT,IAAI,EACJ,SAAS,EACT,QAAQ,GAMT,EAAE,EAAE;IACH,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI;QACrB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,kCAAkC;YAC3C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,0DAA0D;YAChE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAGL,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,SAAS;QACT,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,KAAe;QAC3B,YAAY,EAAE,IAAI;QAClB,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,qCAAqC;YAC3C,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"verifyCredentials.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/verifyCredentials.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,iBAAiB,GAAG,KAAK,EAAE,EAC/B,SAAS,EACT,IAAI,EACJ,SAAS,EACT,QAAQ,GAMT,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;IAExC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI;QACrB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,kCAAkC;YAC3C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,0DAA0D;YAChE,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;IAGL,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;IAEH,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,IAAI,CAAC,WAAY,CAAC,EAClB,IAAI,CAAC,WAAY,CAAC,EAClB,QAAQ,CACT,CAAC;IAEF,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,eAAe,WAAW,iBAAiB;YACjD,OAAO,EAAE;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB;SACF,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyOTP.d.ts","sourceRoot":"","sources":["../../../src/js/auth/verifyOTP.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,SAAS,GAAI,qDAKhB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAsG1C,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"verifyOTP.d.ts","sourceRoot":"","sources":["../../../src/js/auth/verifyOTP.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,SAAS,GAAI,qDAKhB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA4H1C,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -8,34 +8,42 @@ import otpVerifiedResponse from "./utils/otpVerifiedResponse.js";
8
8
  import appResponse from "../utils/response.js";
9
9
  import getValidationKey from "../utils/validationKeyError.js";
10
10
  import getErrorDetail from "../utils/getErrorDetail.js";
11
+ import { getEnvs } from "../config/envs.js";
11
12
  const verifyOTP = ({ modelName, validationsObj, routeName, routeObj, }) => {
12
13
  return async (req, res) => {
14
+ const { authConfigObj } = getEnvs();
15
+ const { fieldsObj } = authConfigObj;
16
+ const emailKey = fieldsObj?.email;
17
+ const otpKey = fieldsObj?.otp;
18
+ const purposeKey = fieldsObj?.purpose;
13
19
  const validationObj = getValidationKey(routeObj, validationsObj);
14
20
  const body = validate(validationObj, req.body, routeObj);
15
- if (!req.body.purpose || !req.body.email || !req.body.otp)
21
+ if (!req.body?.[emailKey] ||
22
+ !req.body?.[otpKey] ||
23
+ !req.body?.[purposeKey])
16
24
  throw new AppError({
17
- message: "email, otp and purpose are required.",
25
+ message: `${emailKey}, ${otpKey} and ${purposeKey} are required.`,
18
26
  statusCode: 400,
19
- hint: `Checkout if email, otp or purpose is missing in collection -> validationsObj -> ${routeObj.validationKey}.`,
27
+ hint: `Check if ${emailKey}, ${otpKey} or ${purposeKey} is missing in collection -> validationsObj -> ${routeObj.validationKey}.`,
20
28
  details: getErrorDetail(routeObj),
21
29
  });
22
30
  const OTPModel = getOTPModel(routeObj);
23
- const OTPData = await OTPModel?.findOne({
24
- email: body.email,
25
- purpose: body.purpose,
31
+ const OTPData = await OTPModel.findOne({
32
+ [emailKey]: body[emailKey],
33
+ [purposeKey]: body[purposeKey],
26
34
  }).select("+password");
27
35
  if (!OTPData)
28
36
  throw new AppError({
29
37
  message: "OTP request not found.",
30
38
  statusCode: 404,
31
- hint: "Request a new OTP or verify the provided email and purpose.",
39
+ hint: `Request a new OTP or verify the provided ${emailKey} and ${purposeKey}.`,
32
40
  details: getErrorDetail(routeObj),
33
41
  });
34
42
  if (OTPData.isVerified) {
35
43
  appResponse({
36
44
  res,
37
- message: `${body.purpose}: OTP has already been verified.`,
38
- data: body.purpose === "password_reset"
45
+ message: `${body[purposeKey]}: OTP has already been verified.`,
46
+ data: body[purposeKey] === "password_reset"
39
47
  ? {
40
48
  nextStep: "go to /reset-password",
41
49
  }
@@ -57,7 +65,7 @@ const verifyOTP = ({ modelName, validationsObj, routeName, routeObj, }) => {
57
65
  hint: "Request a new OTP and try again.",
58
66
  details: getErrorDetail(routeObj),
59
67
  });
60
- const isValid = await verifyHash(body.otp, OTPData.OTP, routeObj);
68
+ const isValid = await verifyHash(body[otpKey], OTPData[otpKey], routeObj);
61
69
  if (!isValid) {
62
70
  await OTPModel.updateOne({ _id: OTPData._id }, { $inc: { otpCount: 1 } });
63
71
  throw new AppError({
@@ -73,13 +81,13 @@ const verifyOTP = ({ modelName, validationsObj, routeName, routeObj, }) => {
73
81
  login: authenticateUser,
74
82
  password_reset: otpVerifiedResponse,
75
83
  };
76
- purposeMap[OTPData.purpose]({
84
+ purposeMap[OTPData[purposeKey]]({
77
85
  body: OTPData,
78
86
  res,
79
87
  routeName,
80
88
  modelName,
81
89
  routeObj,
82
- req
90
+ req,
83
91
  });
84
92
  };
85
93
  };