@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.
- package/dist/js/account/index.d.ts +1 -1
- package/dist/js/account/index.d.ts.map +1 -1
- package/dist/js/account/index.js +14 -7
- package/dist/js/account/index.js.map +1 -1
- package/dist/js/account/me.delete.d.ts +2 -2
- package/dist/js/account/me.delete.d.ts.map +1 -1
- package/dist/js/account/me.delete.js +15 -6
- package/dist/js/account/me.delete.js.map +1 -1
- package/dist/js/account/me.update.d.ts +3 -3
- package/dist/js/account/me.update.d.ts.map +1 -1
- package/dist/js/account/me.update.js +20 -7
- package/dist/js/account/me.update.js.map +1 -1
- package/dist/js/app.js +21 -8
- package/dist/js/app.js.map +1 -1
- package/dist/js/auth/builtin/auth.collection.js +11 -11
- package/dist/js/auth/builtin/auth.collection.js.map +1 -1
- package/dist/js/auth/forgotPassword.d.ts +4 -4
- package/dist/js/auth/forgotPassword.d.ts.map +1 -1
- package/dist/js/auth/forgotPassword.js +12 -6
- package/dist/js/auth/forgotPassword.js.map +1 -1
- package/dist/js/auth/index.d.ts +1 -1
- package/dist/js/auth/index.d.ts.map +1 -1
- package/dist/js/auth/index.js +16 -8
- package/dist/js/auth/index.js.map +1 -1
- package/dist/js/auth/login.d.ts +4 -4
- package/dist/js/auth/login.d.ts.map +1 -1
- package/dist/js/auth/login.js +8 -4
- package/dist/js/auth/login.js.map +1 -1
- package/dist/js/auth/logout.js +6 -1
- package/dist/js/auth/logout.js.map +1 -1
- package/dist/js/auth/refresh.js +9 -0
- package/dist/js/auth/refresh.js.map +1 -1
- package/dist/js/auth/resendOTP.d.ts +4 -4
- package/dist/js/auth/resendOTP.d.ts.map +1 -1
- package/dist/js/auth/resendOTP.js +14 -4
- package/dist/js/auth/resendOTP.js.map +1 -1
- package/dist/js/auth/resetPassword.d.ts +4 -4
- package/dist/js/auth/resetPassword.d.ts.map +1 -1
- package/dist/js/auth/resetPassword.js +14 -4
- package/dist/js/auth/resetPassword.js.map +1 -1
- package/dist/js/auth/signup.d.ts +4 -4
- package/dist/js/auth/signup.d.ts.map +1 -1
- package/dist/js/auth/signup.js +10 -5
- package/dist/js/auth/signup.js.map +1 -1
- package/dist/js/auth/utils/authenticateUser.d.ts +3 -3
- package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
- package/dist/js/auth/utils/authenticateUser.js +13 -3
- package/dist/js/auth/utils/authenticateUser.js.map +1 -1
- package/dist/js/auth/utils/createOTPModel.d.ts +1 -1
- package/dist/js/auth/utils/createOTPModel.d.ts.map +1 -1
- package/dist/js/auth/utils/createOTPModel.js +8 -3
- package/dist/js/auth/utils/createOTPModel.js.map +1 -1
- package/dist/js/auth/utils/createOTPUser.d.ts +3 -3
- package/dist/js/auth/utils/createOTPUser.d.ts.map +1 -1
- package/dist/js/auth/utils/createOTPUser.js +11 -3
- package/dist/js/auth/utils/createOTPUser.js.map +1 -1
- package/dist/js/auth/utils/createUser.d.ts +3 -3
- package/dist/js/auth/utils/createUser.d.ts.map +1 -1
- package/dist/js/auth/utils/createUser.js +12 -2
- package/dist/js/auth/utils/createUser.js.map +1 -1
- package/dist/js/auth/utils/findRefreshToken.js +5 -1
- package/dist/js/auth/utils/findRefreshToken.js.map +1 -1
- package/dist/js/auth/utils/findRefreshTokenUser.js +1 -0
- package/dist/js/auth/utils/findRefreshTokenUser.js.map +1 -1
- package/dist/js/auth/utils/getOTPUser.js +3 -0
- package/dist/js/auth/utils/getOTPUser.js.map +1 -1
- package/dist/js/auth/utils/getUser.d.ts +3 -3
- package/dist/js/auth/utils/getUser.d.ts.map +1 -1
- package/dist/js/auth/utils/getUser.js +6 -2
- package/dist/js/auth/utils/getUser.js.map +1 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.js +7 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.js +7 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.js.map +1 -1
- package/dist/js/auth/utils/modeMap.d.ts +12 -12
- package/dist/js/auth/utils/otpVerifiedResponse.js +1 -0
- package/dist/js/auth/utils/otpVerifiedResponse.js.map +1 -1
- package/dist/js/auth/utils/sendCookie.js +10 -0
- package/dist/js/auth/utils/sendCookie.js.map +1 -1
- package/dist/js/auth/utils/verifyCredentials.d.ts +3 -3
- package/dist/js/auth/utils/verifyCredentials.d.ts.map +1 -1
- package/dist/js/auth/utils/verifyCredentials.js +8 -6
- package/dist/js/auth/utils/verifyCredentials.js.map +1 -1
- package/dist/js/auth/verifyOTP.d.ts +4 -4
- package/dist/js/auth/verifyOTP.d.ts.map +1 -1
- package/dist/js/auth/verifyOTP.js +18 -5
- package/dist/js/auth/verifyOTP.js.map +1 -1
- package/dist/js/config/cloudinary.js +1 -0
- package/dist/js/config/cloudinary.js.map +1 -1
- package/dist/js/config/duration.js +7 -0
- package/dist/js/config/duration.js.map +1 -1
- package/dist/js/config/envs.js +23 -3
- package/dist/js/config/envs.js.map +1 -1
- package/dist/js/config/handleReqType.d.ts +1 -1
- package/dist/js/config/handleReqType.d.ts.map +1 -1
- package/dist/js/config/handleReqType.js +4 -3
- package/dist/js/config/handleReqType.js.map +1 -1
- package/dist/js/config/handlerMap.js +4 -0
- package/dist/js/config/handlerMap.js.map +1 -1
- package/dist/js/config/refreshModel.js +1 -0
- package/dist/js/config/refreshModel.js.map +1 -1
- package/dist/js/config/sendEmail.js +1 -0
- package/dist/js/config/sendEmail.js.map +1 -1
- package/dist/js/crud/bunch.crud.js +2 -0
- package/dist/js/crud/bunch.crud.js.map +1 -1
- package/dist/js/crud/create.d.ts +4 -4
- package/dist/js/crud/create.d.ts.map +1 -1
- package/dist/js/crud/create.js +23 -8
- package/dist/js/crud/create.js.map +1 -1
- package/dist/js/crud/createBulk.d.ts +4 -4
- package/dist/js/crud/createBulk.d.ts.map +1 -1
- package/dist/js/crud/createBulk.js +8 -3
- package/dist/js/crud/createBulk.js.map +1 -1
- package/dist/js/crud/email/index.d.ts +2 -0
- package/dist/js/crud/email/index.d.ts.map +1 -0
- package/dist/js/crud/email/index.js +2 -0
- package/dist/js/crud/email/index.js.map +1 -0
- package/dist/js/crud/encryption/handleDecryption.js +8 -3
- package/dist/js/crud/encryption/handleDecryption.js.map +1 -1
- package/dist/js/crud/encryption/handleEncryption.js +7 -3
- package/dist/js/crud/encryption/handleEncryption.js.map +1 -1
- package/dist/js/crud/handleUploads/file.add.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.add.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.add.js +16 -9
- package/dist/js/crud/handleUploads/file.add.js.map +1 -1
- package/dist/js/crud/handleUploads/file.delete.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.delete.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.delete.js +14 -5
- package/dist/js/crud/handleUploads/file.delete.js.map +1 -1
- package/dist/js/crud/handleUploads/file.update.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.update.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.update.js +15 -5
- package/dist/js/crud/handleUploads/file.update.js.map +1 -1
- package/dist/js/crud/index.d.ts +1 -1
- package/dist/js/crud/index.d.ts.map +1 -1
- package/dist/js/crud/index.js +18 -11
- package/dist/js/crud/index.js.map +1 -1
- package/dist/js/crud/read.d.ts +4 -4
- package/dist/js/crud/read.d.ts.map +1 -1
- package/dist/js/crud/read.js +18 -9
- package/dist/js/crud/read.js.map +1 -1
- package/dist/js/crud/readAll.d.ts +3 -3
- package/dist/js/crud/readAll.d.ts.map +1 -1
- package/dist/js/crud/readAll.js +16 -8
- package/dist/js/crud/readAll.js.map +1 -1
- package/dist/js/crud/remove.d.ts +3 -3
- package/dist/js/crud/remove.d.ts.map +1 -1
- package/dist/js/crud/remove.js +19 -8
- package/dist/js/crud/remove.js.map +1 -1
- package/dist/js/crud/removeAll.d.ts +3 -3
- package/dist/js/crud/removeAll.d.ts.map +1 -1
- package/dist/js/crud/removeAll.js +13 -5
- package/dist/js/crud/removeAll.js.map +1 -1
- package/dist/js/crud/removeMultiple.d.ts +4 -4
- package/dist/js/crud/removeMultiple.d.ts.map +1 -1
- package/dist/js/crud/removeMultiple.js +18 -7
- package/dist/js/crud/removeMultiple.js.map +1 -1
- package/dist/js/crud/security/handleDecryption.js +8 -3
- package/dist/js/crud/security/handleDecryption.js.map +1 -1
- package/dist/js/crud/security/handleEncryption.js +7 -3
- package/dist/js/crud/security/handleEncryption.js.map +1 -1
- package/dist/js/crud/security/handleHashing.js +8 -3
- package/dist/js/crud/security/handleHashing.js.map +1 -1
- package/dist/js/crud/update.d.ts +4 -4
- package/dist/js/crud/update.d.ts.map +1 -1
- package/dist/js/crud/update.js +24 -9
- package/dist/js/crud/update.js.map +1 -1
- package/dist/js/crud/utils/authorizeAccess.d.ts +2 -2
- package/dist/js/crud/utils/authorizeAccess.d.ts.map +1 -1
- package/dist/js/crud/utils/authorizeAccess.js +19 -13
- package/dist/js/crud/utils/authorizeAccess.js.map +1 -1
- package/dist/js/crud/utils/getItem.d.ts +3 -3
- package/dist/js/crud/utils/getItem.d.ts.map +1 -1
- package/dist/js/crud/utils/getItem.js +18 -9
- package/dist/js/crud/utils/getItem.js.map +1 -1
- package/dist/js/health/health.collection.js +11 -11
- package/dist/js/health/health.collection.js.map +1 -1
- package/dist/js/health/index.d.ts +1 -1
- package/dist/js/health/index.d.ts.map +1 -1
- package/dist/js/health/index.js +2 -2
- package/dist/js/health/index.js.map +1 -1
- package/dist/js/lib/OAuthProviders.js +1 -1
- package/dist/js/lib/OAuthProviders.js.map +1 -1
- package/dist/js/lib/db.js +1 -0
- package/dist/js/lib/db.js.map +1 -1
- package/dist/js/lib/model.factory.d.ts +10 -1
- package/dist/js/lib/model.factory.d.ts.map +1 -1
- package/dist/js/lib/model.factory.js +18 -4
- package/dist/js/lib/model.factory.js.map +1 -1
- package/dist/js/lib/model.registry.js +1 -0
- package/dist/js/lib/model.registry.js.map +1 -1
- package/dist/js/lib/mongoose.fields.js +20 -0
- package/dist/js/lib/mongoose.fields.js.map +1 -1
- package/dist/js/lib/schema.builder.js +3 -0
- package/dist/js/lib/schema.builder.js.map +1 -1
- package/dist/js/lib/unified.fields.d.ts +5 -0
- package/dist/js/lib/unified.fields.d.ts.map +1 -1
- package/dist/js/lib/unified.fields.js +56 -0
- package/dist/js/lib/unified.fields.js.map +1 -1
- package/dist/js/lib/unified.types.d.ts +3 -0
- package/dist/js/lib/unified.types.d.ts.map +1 -1
- package/dist/js/lib/zod.factory.d.ts +13 -0
- package/dist/js/lib/zod.factory.d.ts.map +1 -1
- package/dist/js/lib/zod.factory.js +14 -0
- package/dist/js/lib/zod.factory.js.map +1 -1
- package/dist/js/lib/zod.fields.d.ts +55 -0
- package/dist/js/lib/zod.fields.d.ts.map +1 -1
- package/dist/js/lib/zod.fields.js +56 -0
- package/dist/js/lib/zod.fields.js.map +1 -1
- package/dist/js/middleware/error.middleware.js +1 -0
- package/dist/js/middleware/error.middleware.js.map +1 -1
- package/dist/js/middleware/multer.middleware.d.ts +1 -1
- package/dist/js/middleware/multer.middleware.d.ts.map +1 -1
- package/dist/js/middleware/multer.middleware.js +22 -7
- package/dist/js/middleware/multer.middleware.js.map +1 -1
- package/dist/js/terminal/appInfo.js +11 -11
- package/dist/js/terminal/appInfo.js.map +1 -1
- package/dist/js/terminal/logger.js +1 -1
- package/dist/js/terminal/logger.js.map +1 -1
- package/dist/js/types/ActionHandler.d.ts +86 -11
- package/dist/js/types/ActionHandler.d.ts.map +1 -1
- package/dist/js/types/Collection.d.ts +104 -15
- package/dist/js/types/Collection.d.ts.map +1 -1
- package/dist/js/types/Constructor.d.ts +1 -1
- package/dist/js/types/Constructor.d.ts.map +1 -1
- package/dist/js/types/Route.d.ts +131 -14
- package/dist/js/types/Route.d.ts.map +1 -1
- package/dist/js/types/Routepath.js +15 -0
- package/dist/js/types/Routepath.js.map +1 -1
- package/dist/js/types/email.js +13 -0
- package/dist/js/types/email.js.map +1 -1
- package/dist/js/types/upload.d.ts +57 -5
- package/dist/js/types/upload.d.ts.map +1 -1
- package/dist/js/upload/create.js +9 -6
- package/dist/js/upload/create.js.map +1 -1
- package/dist/js/upload/delete.js +21 -21
- package/dist/js/upload/delete.js.map +1 -1
- package/dist/js/upload/update.js +21 -21
- package/dist/js/upload/update.js.map +1 -1
- package/dist/js/utils/getErrorDetail.d.ts +2 -2
- package/dist/js/utils/getErrorDetail.d.ts.map +1 -1
- package/dist/js/utils/getErrorDetail.js +2 -2
- package/dist/js/utils/getErrorDetail.js.map +1 -1
- package/dist/js/utils/getModel.d.ts +3 -3
- package/dist/js/utils/getModel.d.ts.map +1 -1
- package/dist/js/utils/getModel.js +6 -6
- package/dist/js/utils/getModel.js.map +1 -1
- package/dist/js/utils/libsodium.js +6 -0
- package/dist/js/utils/libsodium.js.map +1 -1
- package/dist/js/utils/otpPurposes.js +38 -0
- package/dist/js/utils/otpPurposes.js.map +1 -1
- package/dist/js/utils/sanitize.js +23 -2
- package/dist/js/utils/sanitize.js.map +1 -1
- package/dist/js/utils/saveRefreshToken.js +2 -1
- package/dist/js/utils/saveRefreshToken.js.map +1 -1
- package/dist/js/utils/validate.js +5 -3
- package/dist/js/utils/validate.js.map +1 -1
- package/dist/js/utils/validationKeyError.d.ts +1 -1
- package/dist/js/utils/validationKeyError.d.ts.map +1 -1
- package/dist/js/utils/validationKeyError.js +13 -8
- package/dist/js/utils/validationKeyError.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +29 -29
|
@@ -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;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,aAAa,GAAG,KAAK,EAAE,EAC3B,IAAI,EACJ,GAAG,EACH,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"createOTPUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createOTPUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Response, Request } from "express";
|
|
2
2
|
import type { Route } from "../../types/Collection.js";
|
|
3
|
-
declare const createUser: ({ body,
|
|
3
|
+
declare const createUser: ({ body, model, res, route, routeObj, req, }: {
|
|
4
4
|
body: any;
|
|
5
|
-
|
|
5
|
+
model: string;
|
|
6
6
|
res: Response;
|
|
7
|
-
|
|
7
|
+
route: string;
|
|
8
8
|
routeObj: Route;
|
|
9
9
|
req: Request;
|
|
10
10
|
}) => Promise<void>;
|
|
@@ -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,
|
|
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,6CAOvB;IACD,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd,kBAuFA,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -9,16 +9,20 @@ import { sendCookie } from "./sendCookie.js";
|
|
|
9
9
|
import { getEnvs } from "../../config/envs.js";
|
|
10
10
|
import tokenInfo from "./UAParser.js";
|
|
11
11
|
import saveRefreshToken from "../../utils/saveRefreshToken.js";
|
|
12
|
-
const createUser = async ({ body,
|
|
12
|
+
const createUser = async ({ body, model, res, route, routeObj, req, }) => {
|
|
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
|
-
|
|
20
|
+
// models
|
|
21
|
+
const Model = getModel({ model, route, routeObj });
|
|
20
22
|
const OTPModel = getOTPModel(routeObj);
|
|
23
|
+
// token info
|
|
21
24
|
const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
|
|
25
|
+
// isVerified - mode:otp
|
|
22
26
|
let isVerified = false;
|
|
23
27
|
let isOTPUser = null;
|
|
24
28
|
if ("isVerified" in body)
|
|
@@ -27,6 +31,7 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
|
|
|
27
31
|
purpose: "signup",
|
|
28
32
|
routeObj,
|
|
29
33
|
}));
|
|
34
|
+
// delete body._id | hash password
|
|
30
35
|
if (body instanceof mongoose.Document) {
|
|
31
36
|
body = body.toObject();
|
|
32
37
|
body.role = "user";
|
|
@@ -36,10 +41,13 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
|
|
|
36
41
|
body[passwordKey] = await hash(body[passwordKey], routeObj);
|
|
37
42
|
body.role = "user";
|
|
38
43
|
}
|
|
44
|
+
// new user
|
|
39
45
|
const newUser = await Model.create(body);
|
|
46
|
+
// if from otp, remove it
|
|
40
47
|
if (isVerified)
|
|
41
48
|
await OTPModel.deleteOne({ _id: isOTPUser._id });
|
|
42
49
|
const { _id } = newUser.toObject();
|
|
50
|
+
// send cookie
|
|
43
51
|
const { accessToken, refreshToken, refreshTokenAge } = sendCookie({
|
|
44
52
|
res,
|
|
45
53
|
accessTokenName: authConfigObj.accessTokenName,
|
|
@@ -51,6 +59,7 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
|
|
|
51
59
|
familyId,
|
|
52
60
|
jti,
|
|
53
61
|
});
|
|
62
|
+
// save refreshToken
|
|
54
63
|
const hashedToken = await hash(refreshToken);
|
|
55
64
|
await saveRefreshToken({
|
|
56
65
|
hashedToken,
|
|
@@ -64,6 +73,7 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) =
|
|
|
64
73
|
os,
|
|
65
74
|
ipAddress,
|
|
66
75
|
});
|
|
76
|
+
// send response
|
|
67
77
|
appResponse({
|
|
68
78
|
res,
|
|
69
79
|
message: "Your account has been created successfully!",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAE/D,MAAM,UAAU,GAAG,KAAK,EAAE,EACxB,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"createUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,14 @@ import getModel from "../../utils/getModel.js";
|
|
|
2
2
|
import AppError from "../../utils/AppError.js";
|
|
3
3
|
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
4
4
|
const findRefreshToken = async (owner, jti, routeObj) => {
|
|
5
|
-
|
|
5
|
+
// Model
|
|
6
|
+
const RefreshToken = getModel({ model: "RefreshToken", routeObj });
|
|
7
|
+
// find same device tokens
|
|
6
8
|
const foundRefreshToken = await RefreshToken.findOne({
|
|
7
9
|
owner,
|
|
8
10
|
jti,
|
|
9
11
|
});
|
|
12
|
+
// token not found
|
|
10
13
|
if (!foundRefreshToken)
|
|
11
14
|
throw new AppError({
|
|
12
15
|
message: "Refresh token session was not found",
|
|
@@ -15,6 +18,7 @@ const findRefreshToken = async (owner, jti, routeObj) => {
|
|
|
15
18
|
details: getErrorDetail(routeObj),
|
|
16
19
|
statusCode: 401,
|
|
17
20
|
});
|
|
21
|
+
// if token is revoked
|
|
18
22
|
if (foundRefreshToken.revoked)
|
|
19
23
|
throw new AppError({
|
|
20
24
|
message: "Refresh token has been revoked",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findRefreshToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshToken.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,KAAK,EAC5B,KAAa,EACb,GAAW,EACX,QAAe,EACf,EAAE;
|
|
1
|
+
{"version":3,"file":"findRefreshToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshToken.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,KAAK,EAC5B,KAAa,EACb,GAAW,EACX,QAAe,EACf,EAAE;IACF,QAAQ;IACR,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnE,0BAA0B;IAC1B,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;QACnD,KAAK;QACL,GAAG;KACJ,CAAC,CAAC;IAEH,kBAAkB;IAClB,IAAI,CAAC,iBAAiB;QACpB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,qCAAqC;YAC9C,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IAEL,sBAAsB;IACtB,IAAI,iBAAiB,CAAC,OAAO;QAC3B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,gCAAgC;YACzC,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAEL,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -5,6 +5,7 @@ import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
|
5
5
|
const findRefreshTokenUser = async (id, routeObj) => {
|
|
6
6
|
const { userModelName } = getEnvs();
|
|
7
7
|
const user = await findUser(id, routeObj, userModelName);
|
|
8
|
+
// if user not found
|
|
8
9
|
if (!user)
|
|
9
10
|
throw new AppError({
|
|
10
11
|
message: "User associated with the refresh token was not found",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findRefreshTokenUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshTokenUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAAU,EAAE,QAAe,EAAE,EAAE;IACjE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAuB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"findRefreshTokenUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshTokenUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAAU,EAAE,QAAe,EAAE,EAAE;IACjE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAuB,CAAC,CAAC;IAEnE,oBAAoB;IACpB,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,wBAAwB;YAC9B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,yCAAyC;YAC/C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;AACP,CAAC,CAAC;AACF,eAAe,oBAAoB,CAAC"}
|
|
@@ -2,11 +2,14 @@ import getOTPModel from "./getOTPModel.js";
|
|
|
2
2
|
import AppError from "../../utils/AppError.js";
|
|
3
3
|
import { getEnvs } from "../../config/envs.js";
|
|
4
4
|
const getOTPUser = async ({ email, purpose, routeObj, }) => {
|
|
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 purposeKey = fieldsObj?.purpose;
|
|
10
|
+
// otp model
|
|
9
11
|
const OTPModel = getOTPModel(routeObj);
|
|
12
|
+
// otp user
|
|
10
13
|
const OTPUser = await OTPModel.findOne({
|
|
11
14
|
[emailKey]: email,
|
|
12
15
|
[purposeKey]: purpose,
|
|
@@ -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;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;
|
|
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;IACH,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,UAAU,GAAG,SAAS,EAAE,OAAO,CAAC;IAEtC,YAAY;IACZ,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEvC,WAAW;IACX,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,7 +1,7 @@
|
|
|
1
1
|
import type { Route } from "../../types/Collection.js";
|
|
2
|
-
declare const getUser: ({
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
declare const getUser: ({ model, route, email, needPassword, routeObj, }: {
|
|
3
|
+
model: string;
|
|
4
|
+
route: string;
|
|
5
5
|
email: string;
|
|
6
6
|
needPassword?: boolean;
|
|
7
7
|
routeObj: Route;
|
|
@@ -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;AAGvD,QAAA,MAAM,OAAO,GAAU,
|
|
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,kDAMpB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;CACjB,iBAsCA,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import getModel from "../../utils/getModel.js";
|
|
2
2
|
import AppError from "../../utils/AppError.js";
|
|
3
3
|
import { getEnvs } from "../../config/envs.js";
|
|
4
|
-
const getUser = async ({
|
|
4
|
+
const getUser = async ({ model, route, email, needPassword, routeObj, }) => {
|
|
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 passwordKey = fieldsObj?.password;
|
|
9
|
-
|
|
10
|
+
// model
|
|
11
|
+
const Model = getModel({ model, route, routeObj });
|
|
12
|
+
// user
|
|
10
13
|
let user = null;
|
|
11
14
|
if (needPassword) {
|
|
12
15
|
user = await Model.findOne({
|
|
@@ -18,6 +21,7 @@ const getUser = async ({ modelName, routeName, email, needPassword, routeObj, })
|
|
|
18
21
|
[emailKey]: email,
|
|
19
22
|
});
|
|
20
23
|
}
|
|
24
|
+
// if user not found
|
|
21
25
|
if (!user)
|
|
22
26
|
throw new AppError({
|
|
23
27
|
message: "User not found.",
|
|
@@ -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;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,
|
|
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,KAAK,EACL,KAAK,EACL,KAAK,EACL,YAAY,EACZ,QAAQ,GAOT,EAAE,EAAE;IACH,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,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC;IAExC,QAAQ;IACR,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnD,OAAO;IACP,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;IAED,oBAAoB;IACpB,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"}
|
|
@@ -4,8 +4,11 @@ import getModel from "../../utils/getModel.js";
|
|
|
4
4
|
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
5
5
|
import findRefreshToken from "./findRefreshToken.js";
|
|
6
6
|
const handleRefreshTokenValidation = async (token, routeObj, owner, jti) => {
|
|
7
|
-
|
|
7
|
+
// Model
|
|
8
|
+
const RefreshToken = getModel({ model: "RefreshToken", routeObj });
|
|
9
|
+
// find same device tokens
|
|
8
10
|
const foundToken = await findRefreshToken(owner, jti, routeObj);
|
|
11
|
+
// if token not found
|
|
9
12
|
if (!foundToken)
|
|
10
13
|
throw new AppError({
|
|
11
14
|
message: "Refresh token is not found.",
|
|
@@ -14,7 +17,9 @@ const handleRefreshTokenValidation = async (token, routeObj, owner, jti) => {
|
|
|
14
17
|
hint: "This refresh token is deleted. Sign in again to create a new authentication session.",
|
|
15
18
|
details: getErrorDetail(routeObj),
|
|
16
19
|
});
|
|
20
|
+
// token hash verification
|
|
17
21
|
const isValid = await verifyHash(token, foundToken.refreshTokenHash, routeObj);
|
|
22
|
+
// if token is revoked
|
|
18
23
|
if (foundToken.revoked)
|
|
19
24
|
throw new AppError({
|
|
20
25
|
message: "Refresh token black listed.",
|
|
@@ -23,6 +28,7 @@ const handleRefreshTokenValidation = async (token, routeObj, owner, jti) => {
|
|
|
23
28
|
hint: "This refresh token can't be used. Sign in again to create a new authentication session.",
|
|
24
29
|
details: getErrorDetail(routeObj),
|
|
25
30
|
});
|
|
31
|
+
// if invalid hash
|
|
26
32
|
if (!isValid) {
|
|
27
33
|
await RefreshToken.updateOne({
|
|
28
34
|
owner,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleRefreshTokenValidation.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRefreshTokenValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,4BAA4B,GAAG,KAAK,EACxC,KAAa,EACb,QAAe,EACf,KAAa,EACb,GAAW,EACX,EAAE;
|
|
1
|
+
{"version":3,"file":"handleRefreshTokenValidation.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRefreshTokenValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,MAAM,4BAA4B,GAAG,KAAK,EACxC,KAAa,EACb,QAAe,EACf,KAAa,EACb,GAAW,EACX,EAAE;IACF,QAAQ;IACR,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnE,0BAA0B;IAC1B,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEhE,qBAAqB;IACrB,IAAI,CAAC,UAAU;QACb,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,sFAAsF;YAC5F,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAEL,0BAA0B;IAC1B,MAAM,OAAO,GAAG,MAAM,UAAU,CAC9B,KAAK,EACL,UAAU,CAAC,gBAAgB,EAC3B,QAAQ,CACT,CAAC;IAEF,sBAAsB;IACtB,IAAI,UAAU,CAAC,OAAO;QACpB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,yFAAyF;YAC/F,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAEL,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,SAAS,CAC1B;YACE,KAAK;YACL,GAAG;YACH,OAAO,EAAE,KAAK;SACf,EACD,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAC5B,CAAC;QAEF,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,0BAA0B;YACnC,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,eAAe,4BAA4B,CAAC"}
|
|
@@ -5,10 +5,11 @@ import { hash } from "../../utils/libsodium.js";
|
|
|
5
5
|
import saveRefreshToken from "../../utils/saveRefreshToken.js";
|
|
6
6
|
import getDuration from "../../config/duration.js";
|
|
7
7
|
const handleRotateRefreshToken = async ({ owner, currentTokenJTI, rotateTokenJTI, deviceType, familyId, res, routeObj, deviceName, ipAddress, os, iat, }) => {
|
|
8
|
-
const RefreshToken = getModel({
|
|
8
|
+
const RefreshToken = getModel({ model: "RefreshToken" });
|
|
9
9
|
const { authConfigObj } = getEnvs();
|
|
10
10
|
const { refreshTokenName, rotateRefreshToken, refreshTokenRotationInterval } = authConfigObj;
|
|
11
11
|
let REFRESH_TOKEN = null;
|
|
12
|
+
// update - last used
|
|
12
13
|
const updateLastUsed = async () => {
|
|
13
14
|
await RefreshToken.updateOne({
|
|
14
15
|
owner,
|
|
@@ -17,9 +18,11 @@ const handleRotateRefreshToken = async ({ owner, currentTokenJTI, rotateTokenJTI
|
|
|
17
18
|
}, { $set: { lastUsedAt: Date.now() } });
|
|
18
19
|
};
|
|
19
20
|
if (!rotateRefreshToken) {
|
|
21
|
+
// update lastUsed
|
|
20
22
|
await updateLastUsed();
|
|
21
23
|
}
|
|
22
24
|
else {
|
|
25
|
+
// check if rotationInterval is found
|
|
23
26
|
const rotationInterval = getDuration(refreshTokenRotationInterval, routeObj);
|
|
24
27
|
if (!!rotationInterval) {
|
|
25
28
|
const timeLeft = iat * 1000 + rotationInterval;
|
|
@@ -28,6 +31,7 @@ const handleRotateRefreshToken = async ({ owner, currentTokenJTI, rotateTokenJTI
|
|
|
28
31
|
return;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
34
|
+
// cookie
|
|
31
35
|
const { refreshToken, refreshTokenAge } = sendCookie({
|
|
32
36
|
deviceType,
|
|
33
37
|
refreshTokenName: refreshTokenName,
|
|
@@ -40,7 +44,9 @@ const handleRotateRefreshToken = async ({ owner, currentTokenJTI, rotateTokenJTI
|
|
|
40
44
|
routeObj,
|
|
41
45
|
});
|
|
42
46
|
REFRESH_TOKEN = refreshToken;
|
|
47
|
+
// hashedToken
|
|
43
48
|
const hashedToken = await hash(refreshToken);
|
|
49
|
+
// check if old token
|
|
44
50
|
await RefreshToken.updateMany({
|
|
45
51
|
owner,
|
|
46
52
|
refreshTokenHash: { $ne: hashedToken },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleRotateRefreshToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRotateRefreshToken.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAgBnD,MAAM,wBAAwB,GAAG,KAAK,EAAE,EACtC,KAAK,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,UAAU,EACV,SAAS,EACT,EAAE,EACF,GAAG,GACkB,EAAE,EAAE;IACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"handleRotateRefreshToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRotateRefreshToken.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAgBnD,MAAM,wBAAwB,GAAG,KAAK,EAAE,EACtC,KAAK,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,UAAU,EACV,SAAS,EACT,EAAE,EACF,GAAG,GACkB,EAAE,EAAE;IACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,GAC1E,aAAa,CAAC;IAEhB,IAAI,aAAa,GAAG,IAAI,CAAC;IAEzB,qBAAqB;IACrB,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,YAAY,CAAC,SAAS,CAC1B;YACE,KAAK;YACL,GAAG,EAAE,eAAe;YACpB,OAAO,EAAE,KAAK;SACf,EACD,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CACrC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB;QAClB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,WAAW,CAClC,4BAA6B,EAC7B,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,gBAAgB,CAAC;YAE/C,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1B,MAAM,cAAc,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,SAAS;QACT,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;YACnD,UAAU;YACV,gBAAgB,EAAE,gBAAiB;YACnC,GAAG,EAAE,cAAc;YACnB,QAAQ;YACR,mBAAmB,EAAE;gBACnB,GAAG,EAAE,KAAK;aACX;YACD,GAAG;YACH,QAAQ;SACT,CAAC,CAAC;QAEH,aAAa,GAAG,YAAY,CAAC;QAE7B,cAAc;QACd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,CAAC;QAE9C,qBAAqB;QACrB,MAAM,YAAY,CAAC,UAAU,CAC3B;YACE,KAAK;YACL,gBAAgB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;YACtC,QAAQ;YACR,OAAO,EAAE,KAAK;SACf,EACD,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAC5B,CAAC;QAEF,MAAM,gBAAgB,CAAC;YACrB,GAAG,EAAE,KAAK;YACV,QAAQ;YACR,GAAG,EAAE,cAAc;YACnB,WAAW;YACX,eAAe;YACf,QAAQ;YACR,UAAU;YACV,UAAU;YACV,SAAS;YACT,EAAE;SACH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
declare const modeMap: {
|
|
2
2
|
signup: {
|
|
3
|
-
otp: ({ body, res, purpose,
|
|
3
|
+
otp: ({ body, res, purpose, route, model, routeObj, }: {
|
|
4
4
|
body: any;
|
|
5
5
|
res: import("express").Response;
|
|
6
6
|
purpose: string;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
route: string;
|
|
8
|
+
model: string;
|
|
9
9
|
routeObj: import("../../types/Route.js").Route;
|
|
10
10
|
}) => Promise<void>;
|
|
11
|
-
credentials: ({ body,
|
|
11
|
+
credentials: ({ body, model, res, route, routeObj, req, }: {
|
|
12
12
|
body: any;
|
|
13
|
-
|
|
13
|
+
model: string;
|
|
14
14
|
res: import("express").Response;
|
|
15
|
-
|
|
15
|
+
route: string;
|
|
16
16
|
routeObj: import("../../types/Route.js").Route;
|
|
17
17
|
req: import("express").Request;
|
|
18
18
|
}) => Promise<void>;
|
|
19
19
|
};
|
|
20
20
|
login: {
|
|
21
|
-
otp: ({ body, res, purpose,
|
|
21
|
+
otp: ({ body, res, purpose, route, model, routeObj, }: {
|
|
22
22
|
body: any;
|
|
23
23
|
res: import("express").Response;
|
|
24
24
|
purpose: string;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
route: string;
|
|
26
|
+
model: string;
|
|
27
27
|
routeObj: import("../../types/Route.js").Route;
|
|
28
28
|
}) => Promise<void>;
|
|
29
|
-
credentials: ({ body,
|
|
29
|
+
credentials: ({ body, model, res, req, route, routeObj, }: {
|
|
30
30
|
body: any;
|
|
31
|
-
|
|
31
|
+
model: string;
|
|
32
32
|
res: import("express").Response;
|
|
33
33
|
req: import("express").Request;
|
|
34
|
-
|
|
34
|
+
route: string;
|
|
35
35
|
routeObj: import("../../types/Route.js").Route;
|
|
36
36
|
}) => Promise<void>;
|
|
37
37
|
};
|
|
@@ -2,6 +2,7 @@ import appResponse from "../../utils/response.js";
|
|
|
2
2
|
import AppError from "../../utils/AppError.js";
|
|
3
3
|
import { getEnvs } from "../../config/envs.js";
|
|
4
4
|
const otpVerifiedResponse = ({ res, body, routeObj, }) => {
|
|
5
|
+
// get dynamic auth field key
|
|
5
6
|
const { authConfigObj } = getEnvs();
|
|
6
7
|
const { fieldsObj } = authConfigObj;
|
|
7
8
|
const purposeKey = fieldsObj?.purpose;
|
|
@@ -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;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,mBAAmB,GAAG,CAAC,EAC3B,GAAG,EACH,IAAI,EACJ,QAAQ,GAKT,EAAE,EAAE;
|
|
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;IACH,6BAA6B;IAC7B,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"}
|
|
@@ -2,9 +2,13 @@ import getDuration from "../../config/duration.js";
|
|
|
2
2
|
import { getEnvs } from "../../config/envs.js";
|
|
3
3
|
import AppError from "../../utils/AppError.js";
|
|
4
4
|
import { signJWT } from "../../utils/handleJWT.js";
|
|
5
|
+
// send cookie
|
|
5
6
|
export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTokenName, refreshTokenPayload, routeObj, jti, familyId, deviceType, }) => {
|
|
7
|
+
// envs
|
|
6
8
|
const { ENV, domain, authConfigObj } = getEnvs();
|
|
9
|
+
// authConfigObj
|
|
7
10
|
const { accessTokenAge, refreshTokenAge } = authConfigObj;
|
|
11
|
+
// if domain not found in production
|
|
8
12
|
if (ENV === "production" && !domain)
|
|
9
13
|
throw new AppError({
|
|
10
14
|
message: "domain is required in production.",
|
|
@@ -16,6 +20,7 @@ export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTo
|
|
|
16
20
|
path: routeObj.path,
|
|
17
21
|
},
|
|
18
22
|
});
|
|
23
|
+
// sign accessToken
|
|
19
24
|
let accessToken = null;
|
|
20
25
|
if (accessTokenName)
|
|
21
26
|
accessToken = signJWT({
|
|
@@ -23,8 +28,10 @@ export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTo
|
|
|
23
28
|
routeObj,
|
|
24
29
|
age: accessTokenAge,
|
|
25
30
|
});
|
|
31
|
+
// if refreshToken to send
|
|
26
32
|
let refreshToken = null;
|
|
27
33
|
if (refreshTokenName)
|
|
34
|
+
// sign refreshToken
|
|
28
35
|
refreshToken = signJWT({
|
|
29
36
|
routeObj,
|
|
30
37
|
age: refreshTokenAge,
|
|
@@ -35,6 +42,7 @@ export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTo
|
|
|
35
42
|
...refreshTokenPayload,
|
|
36
43
|
},
|
|
37
44
|
});
|
|
45
|
+
// send access token cookie
|
|
38
46
|
if (accessToken)
|
|
39
47
|
res.cookie(accessTokenName, accessToken, {
|
|
40
48
|
httpOnly: true,
|
|
@@ -43,6 +51,7 @@ export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTo
|
|
|
43
51
|
secure: ENV === "production",
|
|
44
52
|
domain: ENV === "production" ? domain : undefined,
|
|
45
53
|
});
|
|
54
|
+
// if refreshToken to send
|
|
46
55
|
if (refreshToken)
|
|
47
56
|
res.cookie(refreshTokenName, refreshToken, {
|
|
48
57
|
httpOnly: true,
|
|
@@ -57,6 +66,7 @@ export const sendCookie = ({ res, accessTokenName, accessTokenPayload, refreshTo
|
|
|
57
66
|
refreshTokenAge,
|
|
58
67
|
};
|
|
59
68
|
};
|
|
69
|
+
// clear cookie
|
|
60
70
|
export const clearCookie = ({ res, cookieName, routeObj, }) => {
|
|
61
71
|
const { ENV, domain } = getEnvs();
|
|
62
72
|
if (!ENV)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendCookie.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/sendCookie.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sendCookie.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/sendCookie.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Route } from "../../types/Collection.js";
|
|
2
|
-
declare const verifyCredentials: ({
|
|
3
|
-
|
|
2
|
+
declare const verifyCredentials: ({ model, body, route, routeObj, }: {
|
|
3
|
+
model: string;
|
|
4
4
|
body: any;
|
|
5
|
-
|
|
5
|
+
route: string;
|
|
6
6
|
routeObj: Route;
|
|
7
7
|
}) => Promise<void>;
|
|
8
8
|
export default verifyCredentials;
|
|
@@ -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;AAGvD,QAAA,MAAM,iBAAiB,GAAU,
|
|
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,mCAK9B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,kBA8CA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -2,25 +2,27 @@ import AppError from "../../utils/AppError.js";
|
|
|
2
2
|
import { verifyHash } from "../../utils/libsodium.js";
|
|
3
3
|
import getUser from "./getUser.js";
|
|
4
4
|
import { getEnvs } from "../../config/envs.js";
|
|
5
|
-
const verifyCredentials = async ({
|
|
5
|
+
const verifyCredentials = async ({ model, body, route, routeObj, }) => {
|
|
6
|
+
// get dynamic auth field keys
|
|
6
7
|
const { authConfigObj } = getEnvs();
|
|
7
8
|
const { fieldsObj } = authConfigObj;
|
|
8
9
|
const emailKey = fieldsObj?.email;
|
|
9
10
|
const passwordKey = fieldsObj?.password;
|
|
10
|
-
if (!
|
|
11
|
+
if (!model || !body)
|
|
11
12
|
throw new AppError({
|
|
12
|
-
message: "
|
|
13
|
+
message: "model and body are required.",
|
|
13
14
|
statusCode: 400,
|
|
14
|
-
hint: "Provide
|
|
15
|
+
hint: "Provide model and body before verifying credentials.",
|
|
15
16
|
details: {
|
|
16
17
|
handler: routeObj.handler,
|
|
17
18
|
method: routeObj.method,
|
|
18
19
|
path: routeObj.path,
|
|
19
20
|
},
|
|
20
21
|
});
|
|
22
|
+
// user
|
|
21
23
|
const user = await getUser({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
model,
|
|
25
|
+
route,
|
|
24
26
|
email: body[emailKey],
|
|
25
27
|
needPassword: true,
|
|
26
28
|
routeObj,
|
|
@@ -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;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,iBAAiB,GAAG,KAAK,EAAE,EAC/B,
|
|
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,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,GAMT,EAAE,EAAE;IACH,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,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC;IAExC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QACjB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,8BAA8B;YACvC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,sDAAsD;YAC5D,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;IACP,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,KAAK;QACL,KAAK;QACL,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,9 +1,9 @@
|
|
|
1
1
|
import type { Request, Response } from "express";
|
|
2
2
|
import type { Route, ValidationsObj } from "../types/Collection.js";
|
|
3
|
-
declare const verifyOTP: ({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
declare const verifyOTP: ({ model, validations, route, routeObj, }: {
|
|
4
|
+
model: string;
|
|
5
|
+
validations: ValidationsObj;
|
|
6
|
+
route: string;
|
|
7
7
|
routeObj: Route;
|
|
8
8
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
9
|
export default verifyOTP;
|
|
@@ -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,
|
|
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,0CAKhB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA4H1C,CAAC;AAEF,eAAe,SAAS,CAAC"}
|