@starklabs/forge 1.3.3 → 1.3.4
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/auth/refresh.d.ts +2 -5
- package/dist/js/auth/refresh.d.ts.map +1 -1
- package/dist/js/auth/refresh.js +27 -14
- package/dist/js/auth/refresh.js.map +1 -1
- package/dist/js/auth/signup.d.ts.map +1 -1
- package/dist/js/auth/signup.js +2 -1
- package/dist/js/auth/signup.js.map +1 -1
- package/dist/js/auth/utils/UAParser.d.ts +11 -0
- package/dist/js/auth/utils/UAParser.d.ts.map +1 -0
- package/dist/js/auth/utils/UAParser.js +16 -0
- package/dist/js/auth/utils/UAParser.js.map +1 -0
- package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
- package/dist/js/auth/utils/authenticateUser.js +19 -1
- package/dist/js/auth/utils/authenticateUser.js.map +1 -1
- package/dist/js/auth/utils/createUser.d.ts +3 -2
- package/dist/js/auth/utils/createUser.d.ts.map +1 -1
- package/dist/js/auth/utils/createUser.js +21 -2
- package/dist/js/auth/utils/createUser.js.map +1 -1
- package/dist/js/auth/utils/findRefreshToken.d.ts +4 -0
- package/dist/js/auth/utils/findRefreshToken.d.ts.map +1 -0
- package/dist/js/auth/utils/findRefreshToken.js +29 -0
- package/dist/js/auth/utils/findRefreshToken.js.map +1 -0
- package/dist/js/auth/utils/findRefreshTokenUser.d.ts +4 -0
- package/dist/js/auth/utils/findRefreshTokenUser.d.ts.map +1 -0
- package/dist/js/auth/utils/findRefreshTokenUser.js +18 -0
- package/dist/js/auth/utils/findRefreshTokenUser.js.map +1 -0
- package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts +4 -0
- package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts.map +1 -0
- package/dist/js/auth/utils/handleRefreshTokenValidation.js +24 -0
- package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -0
- package/dist/js/auth/utils/handleRotateRefreshToken.d.ts +18 -0
- package/dist/js/auth/utils/handleRotateRefreshToken.d.ts.map +1 -0
- package/dist/js/auth/utils/handleRotateRefreshToken.js +66 -0
- package/dist/js/auth/utils/handleRotateRefreshToken.js.map +1 -0
- package/dist/js/auth/utils/modeMap.d.ts +2 -1
- package/dist/js/auth/utils/modeMap.d.ts.map +1 -1
- package/dist/js/auth/utils/returnRotationToken.d.ts +2 -0
- package/dist/js/auth/utils/returnRotationToken.d.ts.map +1 -0
- package/dist/js/auth/utils/returnRotationToken.js +3 -0
- package/dist/js/auth/utils/returnRotationToken.js.map +1 -0
- package/dist/js/auth/utils/rotateRefreshToken.d.ts +16 -0
- package/dist/js/auth/utils/rotateRefreshToken.d.ts.map +1 -0
- package/dist/js/auth/utils/rotateRefreshToken.js +53 -0
- package/dist/js/auth/utils/rotateRefreshToken.js.map +1 -0
- package/dist/js/auth/utils/sendCookie.d.ts +10 -6
- package/dist/js/auth/utils/sendCookie.d.ts.map +1 -1
- package/dist/js/auth/utils/sendCookie.js +27 -15
- package/dist/js/auth/utils/sendCookie.js.map +1 -1
- package/dist/js/config/duration.d.ts +36 -0
- package/dist/js/config/duration.d.ts.map +1 -1
- package/dist/js/config/duration.js +40 -4
- package/dist/js/config/duration.js.map +1 -1
- package/dist/js/config/envs.d.ts.map +1 -1
- package/dist/js/config/envs.js +2 -0
- package/dist/js/config/envs.js.map +1 -1
- package/dist/js/config/refreshModel.d.ts.map +1 -1
- package/dist/js/config/refreshModel.js +15 -1
- package/dist/js/config/refreshModel.js.map +1 -1
- package/dist/js/middleware/auth.middleware.d.ts.map +1 -1
- package/dist/js/middleware/auth.middleware.js +14 -13
- package/dist/js/middleware/auth.middleware.js.map +1 -1
- package/dist/js/types/Constructor.d.ts +3 -0
- package/dist/js/types/Constructor.d.ts.map +1 -1
- package/dist/js/utils/saveRefreshToken.d.ts +8 -4
- package/dist/js/utils/saveRefreshToken.d.ts.map +1 -1
- package/dist/js/utils/saveRefreshToken.js +9 -19
- package/dist/js/utils/saveRefreshToken.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type { Route
|
|
1
|
+
import type { Route } from "../types/Collection.ts";
|
|
2
2
|
import type { Request, Response } from "express";
|
|
3
|
-
declare const refresh: ({ routeObj
|
|
4
|
-
modelName: string;
|
|
3
|
+
declare const refresh: ({ routeObj }: {
|
|
5
4
|
routeObj: Route;
|
|
6
|
-
routeName: string;
|
|
7
|
-
validationsObj: ValidationsObj;
|
|
8
5
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
6
|
export default refresh;
|
|
10
7
|
//# sourceMappingURL=refresh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAajD,QAAA,MAAM,OAAO,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAA;CAAE,MAClC,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAwF1C,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/dist/js/auth/refresh.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import AppError from "../utils/AppError.js";
|
|
2
2
|
import getErrorDetail from "../utils/getErrorDetail.js";
|
|
3
3
|
import { verifyJWT } from "../utils/handleJWT.js";
|
|
4
|
-
import { findUser } from "../middleware/auth.middleware.js";
|
|
5
4
|
import { sendCookie } from "./utils/sendCookie.js";
|
|
6
5
|
import appResponse from "../utils/response.js";
|
|
7
6
|
import { getEnvs } from "../config/envs.js";
|
|
8
|
-
|
|
7
|
+
import tokenInfo from "./utils/UAParser.js";
|
|
8
|
+
import findRefreshToken from "./utils/findRefreshToken.js";
|
|
9
|
+
import handleRefreshTokenValidation from "./utils/handleRefreshTokenValidation.js";
|
|
10
|
+
import findRefreshTokenUser from "./utils/findRefreshTokenUser.js";
|
|
11
|
+
import handleRotateRefreshToken from "./utils/handleRotateRefreshToken.js";
|
|
12
|
+
const refresh = ({ routeObj }) => {
|
|
9
13
|
return async (req, res) => {
|
|
10
14
|
const { authConfigObj, userModelName } = getEnvs();
|
|
11
|
-
const
|
|
15
|
+
const { deviceType, jti, deviceName, os, ipAddress, familyId } = tokenInfo(req);
|
|
16
|
+
let token = req.cookies?.[authConfigObj.refreshTokenName];
|
|
12
17
|
if (!token)
|
|
13
18
|
throw new AppError({
|
|
14
19
|
message: "Refresh token is missing",
|
|
@@ -21,7 +26,7 @@ const refresh = ({ routeObj, }) => {
|
|
|
21
26
|
token,
|
|
22
27
|
routeObj,
|
|
23
28
|
});
|
|
24
|
-
if (typeof payload === "string" || !payload.sub)
|
|
29
|
+
if (typeof payload === "string" || !payload.sub || !payload.jti)
|
|
25
30
|
throw new AppError({
|
|
26
31
|
message: "Refresh token payload is invalid",
|
|
27
32
|
code: "REFRESH_TOKEN_PAYLOAD_INVALID",
|
|
@@ -29,27 +34,35 @@ const refresh = ({ routeObj, }) => {
|
|
|
29
34
|
hint: "Sign in again to obtain a valid refresh token.",
|
|
30
35
|
details: getErrorDetail(routeObj),
|
|
31
36
|
});
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
message: "User associated with the refresh token was not found",
|
|
36
|
-
code: "REFRESH_USER_NOT_FOUND",
|
|
37
|
-
statusCode: 401,
|
|
38
|
-
hint: "Sign in again with an existing account.",
|
|
39
|
-
details: getErrorDetail(routeObj),
|
|
40
|
-
});
|
|
37
|
+
const foundRefreshToken = await findRefreshToken(payload.sub, payload.jti, routeObj);
|
|
38
|
+
await handleRefreshTokenValidation(token, foundRefreshToken.refreshTokenHash, routeObj, payload.owner, payload.jti);
|
|
39
|
+
await findRefreshTokenUser(payload.sub, routeObj);
|
|
41
40
|
const { accessToken } = sendCookie({
|
|
42
41
|
res,
|
|
43
42
|
accessTokenName: authConfigObj.accessTokenName,
|
|
43
|
+
routeObj,
|
|
44
44
|
accessTokenPayload: {
|
|
45
45
|
sub: payload.sub,
|
|
46
46
|
},
|
|
47
|
+
});
|
|
48
|
+
await handleRotateRefreshToken({
|
|
49
|
+
deviceName: deviceName,
|
|
50
|
+
deviceType,
|
|
51
|
+
familyId,
|
|
52
|
+
ipAddress: ipAddress,
|
|
53
|
+
currentTokenJTI: payload.jti,
|
|
54
|
+
rotateTokenJTI: jti,
|
|
55
|
+
os,
|
|
56
|
+
owner: payload.sub,
|
|
57
|
+
res,
|
|
47
58
|
routeObj,
|
|
59
|
+
iat: payload.iat,
|
|
48
60
|
});
|
|
49
61
|
appResponse({
|
|
50
62
|
res,
|
|
51
|
-
message: "Access token
|
|
63
|
+
message: "Access token refreshed successfully",
|
|
52
64
|
accessToken: authConfigObj?.returnAccessToken ? accessToken : undefined,
|
|
65
|
+
refreshToken: authConfigObj?.returnRefreshToken ? token : undefined,
|
|
53
66
|
});
|
|
54
67
|
};
|
|
55
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/js/auth/refresh.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AASpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAuC1C,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/js/auth/signup.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAGxD,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAE3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAGjE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;YACvC,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,iDAAiD;gBACvD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAGL,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,QAAQ;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,sCAAsC;gBAC/C,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,mEAAmE;gBACzE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;YACnC,IAAI;YACJ,GAAG;YACH,SAAS;YACT,SAAS;YACT,OAAO,EAAE,QAAQ;YACjB,QAAQ;
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/js/auth/signup.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAGxD,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAE3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAGjE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;YACvC,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,kCAAkC;gBAC3C,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,iDAAiD;gBACvD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAGL,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,QAAQ;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,sCAAsC;gBAC/C,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,mEAAmE;gBACzE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;YACnC,IAAI;YACJ,GAAG;YACH,SAAS;YACT,SAAS;YACT,OAAO,EAAE,QAAQ;YACjB,QAAQ;YACR,GAAG;SACJ,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request } from "express";
|
|
2
|
+
declare const tokenInfo: (req: Request) => {
|
|
3
|
+
deviceType: import("ua-parser-js").DeviceTypes;
|
|
4
|
+
deviceName: string | undefined;
|
|
5
|
+
ipAddress: string | undefined;
|
|
6
|
+
os: string;
|
|
7
|
+
jti: string;
|
|
8
|
+
familyId: string;
|
|
9
|
+
};
|
|
10
|
+
export default tokenInfo;
|
|
11
|
+
//# sourceMappingURL=UAParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UAParser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/UAParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,QAAA,MAAM,SAAS,GAAI,KAAK,OAAO;;;;;;;CAY9B,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UAParser } from "ua-parser-js";
|
|
2
|
+
import crypto from "crypto";
|
|
3
|
+
const tokenInfo = (req) => {
|
|
4
|
+
const parser = new UAParser(req.get("user-agent"));
|
|
5
|
+
const result = parser.getResult();
|
|
6
|
+
return {
|
|
7
|
+
deviceType: result.device.type || "desktop",
|
|
8
|
+
deviceName: result.device.model || undefined,
|
|
9
|
+
ipAddress: req.ip || undefined,
|
|
10
|
+
os: `${result.os.name} ${result.os.version || ""}`,
|
|
11
|
+
jti: crypto.randomBytes(16).toString("hex"),
|
|
12
|
+
familyId: crypto.randomBytes(16).toString("hex"),
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default tokenInfo;
|
|
16
|
+
//# sourceMappingURL=UAParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UAParser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/UAParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,EAAE;IACjC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAElC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS;QAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS;QAC5C,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS;QAC9B,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,EAAE;QAClD,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3C,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticateUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"authenticateUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAOvD,QAAA,MAAM,gBAAgB,GAAU,qDAO7B;IACD,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,kBA0FA,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -9,8 +9,11 @@ import { sendCookie } from "./sendCookie.js";
|
|
|
9
9
|
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
10
10
|
import { getEnvs } from "../../config/envs.js";
|
|
11
11
|
import saveRefreshToken from "../../utils/saveRefreshToken.js";
|
|
12
|
+
import tokenInfo from "./UAParser.js";
|
|
13
|
+
import { hash } from "../../utils/libsodium.js";
|
|
12
14
|
const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj, }) => {
|
|
13
15
|
const OTPModel = getOTPModel(routeObj);
|
|
16
|
+
const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
|
|
14
17
|
const { authConfigObj } = getEnvs();
|
|
15
18
|
let isVerified = false;
|
|
16
19
|
let isOTPUser = null;
|
|
@@ -49,8 +52,23 @@ const authenticateUser = async ({ body, modelName, res, req, routeName, routeObj
|
|
|
49
52
|
accessTokenPayload: { sub: _id },
|
|
50
53
|
refreshTokenPayload: { sub: _id },
|
|
51
54
|
routeObj,
|
|
55
|
+
deviceType,
|
|
56
|
+
familyId,
|
|
57
|
+
jti,
|
|
58
|
+
});
|
|
59
|
+
const hashedToken = await hash(refreshToken);
|
|
60
|
+
await saveRefreshToken({
|
|
61
|
+
hashedToken,
|
|
62
|
+
refreshTokenAge,
|
|
63
|
+
_id,
|
|
64
|
+
routeObj,
|
|
65
|
+
jti: jti,
|
|
66
|
+
familyId,
|
|
67
|
+
deviceName,
|
|
68
|
+
deviceType,
|
|
69
|
+
ipAddress,
|
|
70
|
+
os,
|
|
52
71
|
});
|
|
53
|
-
await saveRefreshToken({ req, refreshToken: refreshToken, refreshTokenAge, _id, routeObj });
|
|
54
72
|
appResponse({
|
|
55
73
|
res,
|
|
56
74
|
message: "Authenticated successfully!",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/authenticateUser.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,iCAAiC,CAAC;AAC/D,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEhD,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,IAAI,EACJ,SAAS,EACT,GAAG,EACH,GAAG,EACH,SAAS,EACT,QAAQ,GAQT,EAAE,EAAE;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,GAC5D,SAAS,CAAC,GAAG,CAAC,CAAC;IAGjB,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAGpC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAQ,IAAI,CAAC;IAE1B,IAAI,YAAY,IAAI,IAAI;QACtB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,KAAe;YAC3B,OAAO,EAAE,OAAO;YAChB,QAAQ;SACT,CAAC,CAAC,CAAC;IAGN,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QACzB,SAAS;QACT,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,KAAe;QAC3B,YAAY,EAAE,IAAI;QAClB,QAAQ;KACT,CAAC,CAAC;IAGH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzE,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,mBAAmB;gBAC5B,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,qCAAqC;gBAC3C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,UAAU;QACZ,MAAM,QAAS,CAAC,SAAS,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IAEL,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAGhC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;QAChE,GAAG;QACH,eAAe,EAAE,aAAa,CAAC,eAAgB;QAC/C,gBAAgB,EAAE,aAAa,CAAC,gBAAiB;QACjD,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QAChC,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;QACjC,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,GAAG;KACJ,CAAC,CAAC;IAGF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,CAAA;IAC9C,MAAM,gBAAgB,CAAC;QACrB,WAAW;QACX,eAAe;QACf,GAAG;QACH,QAAQ;QACR,GAAG,EAAE,GAAa;QAClB,QAAQ;QACR,UAAU;QACV,UAAU;QACV,SAAS;QACT,EAAE;KACH,CAAC,CAAC;IAGH,WAAW,CAAC;QACV,GAAG;QACH,OAAO,EAAE,6BAA6B;QACtC,UAAU,EAAE,GAAG;QACf,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;QAC5C,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,WAAY,CAAC,CAAC,CAAC,SAAS;QACxE,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAa,CAAC,CAAC,CAAC,SAAS;QAC3E,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import type { Response } from "express";
|
|
1
|
+
import type { Response, Request } from "express";
|
|
2
2
|
import type { Route } from "../../types/Collection.js";
|
|
3
|
-
declare const createUser: ({ body, modelName, res, routeName, routeObj, }: {
|
|
3
|
+
declare const createUser: ({ body, modelName, res, routeName, routeObj, req, }: {
|
|
4
4
|
body: any;
|
|
5
5
|
modelName: string;
|
|
6
6
|
res: Response;
|
|
7
7
|
routeName: string;
|
|
8
8
|
routeObj: Route;
|
|
9
|
+
req: Request;
|
|
9
10
|
}) => Promise<void>;
|
|
10
11
|
export default createUser;
|
|
11
12
|
//# sourceMappingURL=createUser.d.ts.map
|
|
@@ -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,MAAM,SAAS,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,kBA+EA,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -7,9 +7,12 @@ import getOTPModel from "./getOTPModel.js";
|
|
|
7
7
|
import handleIsVerified from "./handleIsVerified.js";
|
|
8
8
|
import { sendCookie } from "./sendCookie.js";
|
|
9
9
|
import { getEnvs } from "../../config/envs.js";
|
|
10
|
-
|
|
10
|
+
import tokenInfo from "./UAParser.js";
|
|
11
|
+
import saveRefreshToken from "../../utils/saveRefreshToken.js";
|
|
12
|
+
const createUser = async ({ body, modelName, res, routeName, routeObj, req, }) => {
|
|
11
13
|
const Model = getModel({ modelName, routeName, routeObj });
|
|
12
14
|
const OTPModel = getOTPModel(routeObj);
|
|
15
|
+
const { deviceType, familyId, jti, deviceName, ipAddress, os } = tokenInfo(req);
|
|
13
16
|
const { authConfigObj } = getEnvs();
|
|
14
17
|
let isVerified = false;
|
|
15
18
|
let isOTPUser = null;
|
|
@@ -32,13 +35,29 @@ const createUser = async ({ body, modelName, res, routeName, routeObj, }) => {
|
|
|
32
35
|
if (isVerified)
|
|
33
36
|
await OTPModel.deleteOne({ _id: isOTPUser._id });
|
|
34
37
|
const { _id } = newUser.toObject();
|
|
35
|
-
const { accessToken, refreshToken } = sendCookie({
|
|
38
|
+
const { accessToken, refreshToken, refreshTokenAge } = sendCookie({
|
|
36
39
|
res,
|
|
37
40
|
accessTokenName: authConfigObj.accessTokenName,
|
|
38
41
|
refreshTokenName: authConfigObj.refreshTokenName,
|
|
39
42
|
accessTokenPayload: { sub: _id },
|
|
40
43
|
refreshTokenPayload: { sub: _id },
|
|
41
44
|
routeObj,
|
|
45
|
+
deviceType,
|
|
46
|
+
familyId,
|
|
47
|
+
jti,
|
|
48
|
+
});
|
|
49
|
+
const hashedToken = await hash(refreshToken);
|
|
50
|
+
await saveRefreshToken({
|
|
51
|
+
hashedToken,
|
|
52
|
+
refreshTokenAge,
|
|
53
|
+
_id,
|
|
54
|
+
routeObj,
|
|
55
|
+
jti: jti,
|
|
56
|
+
familyId,
|
|
57
|
+
deviceName,
|
|
58
|
+
deviceType,
|
|
59
|
+
os,
|
|
60
|
+
ipAddress,
|
|
42
61
|
});
|
|
43
62
|
appResponse({
|
|
44
63
|
res,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"createUser.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/createUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findRefreshToken.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,gBAAgB,GACpB,OAAO,MAAM,EACb,KAAK,MAAM,EACX,UAAU,KAAK,iBAgChB,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import getModel from "../../utils/getModel.js";
|
|
2
|
+
import AppError from "../../utils/AppError.js";
|
|
3
|
+
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
4
|
+
const findRefreshToken = async (owner, jti, routeObj) => {
|
|
5
|
+
const RefreshToken = getModel({ modelName: "RefreshToken", routeObj });
|
|
6
|
+
const foundRefreshToken = await RefreshToken.findOne({
|
|
7
|
+
owner,
|
|
8
|
+
jti,
|
|
9
|
+
});
|
|
10
|
+
if (!foundRefreshToken)
|
|
11
|
+
throw new AppError({
|
|
12
|
+
message: "Refresh token session was not found",
|
|
13
|
+
code: "REFRESH_TOKEN_NOT_FOUND",
|
|
14
|
+
hint: "Sign in again to create a new authentication session.",
|
|
15
|
+
details: getErrorDetail(routeObj),
|
|
16
|
+
statusCode: 401,
|
|
17
|
+
});
|
|
18
|
+
if (foundRefreshToken.revoked)
|
|
19
|
+
throw new AppError({
|
|
20
|
+
message: "Refresh token has been revoked",
|
|
21
|
+
code: "REFRESH_TOKEN_REVOKED",
|
|
22
|
+
statusCode: 401,
|
|
23
|
+
hint: "Sign in again to create a new authentication session.",
|
|
24
|
+
details: getErrorDetail(routeObj),
|
|
25
|
+
});
|
|
26
|
+
return foundRefreshToken;
|
|
27
|
+
};
|
|
28
|
+
export default findRefreshToken;
|
|
29
|
+
//# sourceMappingURL=findRefreshToken.js.map
|
|
@@ -0,0 +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;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAGvE,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;QACnD,KAAK;QACL,GAAG;KACJ,CAAC,CAAC;IAGH,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;IAGL,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findRefreshTokenUser.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/findRefreshTokenUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,oBAAoB,GAAU,IAAI,MAAM,EAAE,UAAU,KAAK,kBAc9D,CAAC;AACF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { findUser } from "../../middleware/auth.middleware.js";
|
|
2
|
+
import { getEnvs } from "../../config/envs.js";
|
|
3
|
+
import AppError from "../../utils/AppError.js";
|
|
4
|
+
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
5
|
+
const findRefreshTokenUser = async (id, routeObj) => {
|
|
6
|
+
const { userModelName } = getEnvs();
|
|
7
|
+
const user = await findUser(id, routeObj, userModelName);
|
|
8
|
+
if (!user)
|
|
9
|
+
throw new AppError({
|
|
10
|
+
message: "User associated with the refresh token was not found",
|
|
11
|
+
code: "REFRESH_USER_NOT_FOUND",
|
|
12
|
+
statusCode: 401,
|
|
13
|
+
hint: "Sign in again with an existing account.",
|
|
14
|
+
details: getErrorDetail(routeObj),
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
export default findRefreshTokenUser;
|
|
18
|
+
//# sourceMappingURL=findRefreshTokenUser.js.map
|
|
@@ -0,0 +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;IAGnE,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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Route } from "../../types/Collection.js";
|
|
2
|
+
declare const handleRefreshTokenValidation: (token: string, hash: string, routeObj: Route, owner: string, jti: string) => Promise<void>;
|
|
3
|
+
export default handleRefreshTokenValidation;
|
|
4
|
+
//# sourceMappingURL=handleRefreshTokenValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleRefreshTokenValidation.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRefreshTokenValidation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,4BAA4B,GAChC,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,UAAU,KAAK,EACf,OAAO,MAAM,EACb,KAAK,MAAM,kBAuBZ,CAAC;AACF,eAAe,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { verifyHash } from "../../utils/libsodium.js";
|
|
2
|
+
import AppError from "../../utils/AppError.js";
|
|
3
|
+
import getModel from "../../utils/getModel.js";
|
|
4
|
+
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
5
|
+
const handleRefreshTokenValidation = async (token, hash, routeObj, owner, jti) => {
|
|
6
|
+
const RefreshToken = getModel({ modelName: "RefreshToken", routeObj });
|
|
7
|
+
const isValid = await verifyHash(token, hash, routeObj);
|
|
8
|
+
if (!isValid) {
|
|
9
|
+
await RefreshToken.updateOne({
|
|
10
|
+
owner,
|
|
11
|
+
jti,
|
|
12
|
+
revoked: false,
|
|
13
|
+
}, { $set: { revoked: true } });
|
|
14
|
+
throw new AppError({
|
|
15
|
+
message: "Refresh token is invalid",
|
|
16
|
+
code: "REFRESH_TOKEN_INVALID",
|
|
17
|
+
statusCode: 401,
|
|
18
|
+
hint: "Sign in again to create a new authentication session.",
|
|
19
|
+
details: getErrorDetail(routeObj),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export default handleRefreshTokenValidation;
|
|
24
|
+
//# sourceMappingURL=handleRefreshTokenValidation.js.map
|
|
@@ -0,0 +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;AAE3D,MAAM,4BAA4B,GAAG,KAAK,EACxC,KAAa,EACb,IAAY,EACZ,QAAe,EACf,KAAa,EACb,GAAW,EACX,EAAE;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,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;QACF,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;AACH,CAAC,CAAC;AACF,eAAe,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Response } from "express";
|
|
2
|
+
import type { Route } from "../../types/Collection.js";
|
|
3
|
+
export interface ROTATE_REFRESH_TOKEN {
|
|
4
|
+
owner: string;
|
|
5
|
+
currentTokenJTI: string;
|
|
6
|
+
rotateTokenJTI: string;
|
|
7
|
+
deviceType: string;
|
|
8
|
+
familyId: string;
|
|
9
|
+
res: Response;
|
|
10
|
+
routeObj: Route;
|
|
11
|
+
deviceName: string;
|
|
12
|
+
ipAddress: string;
|
|
13
|
+
os: string;
|
|
14
|
+
iat: number;
|
|
15
|
+
}
|
|
16
|
+
declare const handleRotateRefreshToken: ({ owner, currentTokenJTI, rotateTokenJTI, deviceType, familyId, res, routeObj, deviceName, ipAddress, os, iat, }: ROTATE_REFRESH_TOKEN) => Promise<string | null | undefined>;
|
|
17
|
+
export default handleRotateRefreshToken;
|
|
18
|
+
//# sourceMappingURL=handleRotateRefreshToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleRotateRefreshToken.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/handleRotateRefreshToken.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,QAAA,MAAM,wBAAwB,GAAU,kHAYrC,oBAAoB,uCAoFtB,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import getModel from "../../utils/getModel.js";
|
|
2
|
+
import { sendCookie } from "./sendCookie.js";
|
|
3
|
+
import { getEnvs } from "../../config/envs.js";
|
|
4
|
+
import { hash } from "../../utils/libsodium.js";
|
|
5
|
+
import saveRefreshToken from "../../utils/saveRefreshToken.js";
|
|
6
|
+
import getDuration from "../../config/duration.js";
|
|
7
|
+
const handleRotateRefreshToken = async ({ owner, currentTokenJTI, rotateTokenJTI, deviceType, familyId, res, routeObj, deviceName, ipAddress, os, iat, }) => {
|
|
8
|
+
const RefreshToken = getModel({ modelName: "RefreshToken" });
|
|
9
|
+
const { authConfigObj } = getEnvs();
|
|
10
|
+
const { refreshTokenName, rotateRefreshToken, refreshTokenRotationInterval } = authConfigObj;
|
|
11
|
+
let REFRESH_TOKEN = null;
|
|
12
|
+
const updateLastUsed = async () => {
|
|
13
|
+
await RefreshToken.updateOne({
|
|
14
|
+
owner,
|
|
15
|
+
jti: currentTokenJTI,
|
|
16
|
+
revoked: false,
|
|
17
|
+
}, { $set: { lastUsedAt: Date.now() } });
|
|
18
|
+
};
|
|
19
|
+
if (!rotateRefreshToken) {
|
|
20
|
+
await updateLastUsed();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const rotationInterval = getDuration(refreshTokenRotationInterval, routeObj);
|
|
24
|
+
if (!!rotationInterval) {
|
|
25
|
+
const timeLeft = iat * 1000 + rotationInterval;
|
|
26
|
+
if (timeLeft > Date.now()) {
|
|
27
|
+
await updateLastUsed();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const { refreshToken, refreshTokenAge } = sendCookie({
|
|
32
|
+
deviceType,
|
|
33
|
+
refreshTokenName: refreshTokenName,
|
|
34
|
+
jti: rotateTokenJTI,
|
|
35
|
+
familyId,
|
|
36
|
+
refreshTokenPayload: {
|
|
37
|
+
sub: owner,
|
|
38
|
+
},
|
|
39
|
+
res,
|
|
40
|
+
routeObj,
|
|
41
|
+
});
|
|
42
|
+
REFRESH_TOKEN = refreshToken;
|
|
43
|
+
const hashedToken = await hash(refreshToken);
|
|
44
|
+
await RefreshToken.updateMany({
|
|
45
|
+
owner,
|
|
46
|
+
refreshTokenHash: { $ne: hashedToken },
|
|
47
|
+
familyId,
|
|
48
|
+
revoked: false,
|
|
49
|
+
}, { $set: { revoked: true } });
|
|
50
|
+
await saveRefreshToken({
|
|
51
|
+
_id: owner,
|
|
52
|
+
familyId,
|
|
53
|
+
jti: rotateTokenJTI,
|
|
54
|
+
hashedToken,
|
|
55
|
+
refreshTokenAge,
|
|
56
|
+
routeObj,
|
|
57
|
+
deviceName,
|
|
58
|
+
deviceType,
|
|
59
|
+
ipAddress,
|
|
60
|
+
os,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return REFRESH_TOKEN;
|
|
64
|
+
};
|
|
65
|
+
export default handleRotateRefreshToken;
|
|
66
|
+
//# sourceMappingURL=handleRotateRefreshToken.js.map
|
|
@@ -0,0 +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,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,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;IAGzB,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;QAExB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QAEN,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;QAGD,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;QAG7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAa,CAAC,CAAC;QAG9C,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"}
|
|
@@ -8,12 +8,13 @@ declare const modeMap: {
|
|
|
8
8
|
modelName: string;
|
|
9
9
|
routeObj: import("../../types/Collection.js").Route;
|
|
10
10
|
}) => Promise<void>;
|
|
11
|
-
credentials: ({ body, modelName, res, routeName, routeObj, }: {
|
|
11
|
+
credentials: ({ body, modelName, res, routeName, routeObj, req, }: {
|
|
12
12
|
body: any;
|
|
13
13
|
modelName: string;
|
|
14
14
|
res: import("express").Response;
|
|
15
15
|
routeName: string;
|
|
16
16
|
routeObj: import("../../types/Collection.js").Route;
|
|
17
|
+
req: import("express").Request;
|
|
17
18
|
}) => Promise<void>;
|
|
18
19
|
};
|
|
19
20
|
login: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modeMap.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/modeMap.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"modeMap.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/modeMap.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"returnRotationToken.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/returnRotationToken.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"returnRotationToken.js","sourceRoot":"","sources":["../../../../src/js/auth/utils/returnRotationToken.ts"],"names":[],"mappings":"AAAA,MAAK,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Response } from "express";
|
|
2
|
+
import type { Route } from "../../types/Collection.js";
|
|
3
|
+
export interface ROTATE_REFRESH_TOKEN {
|
|
4
|
+
owner: string;
|
|
5
|
+
jti: string;
|
|
6
|
+
deviceType: string;
|
|
7
|
+
familyId: string;
|
|
8
|
+
res: Response;
|
|
9
|
+
routeObj: Route;
|
|
10
|
+
deviceName: string;
|
|
11
|
+
ipAddress: string;
|
|
12
|
+
os: string;
|
|
13
|
+
}
|
|
14
|
+
declare const handleRotateRefreshToken: ({ owner, jti, deviceType, familyId, res, routeObj, deviceName, ipAddress, os, }: ROTATE_REFRESH_TOKEN) => Promise<string | null>;
|
|
15
|
+
export default handleRotateRefreshToken;
|
|
16
|
+
//# sourceMappingURL=rotateRefreshToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotateRefreshToken.d.ts","sourceRoot":"","sources":["../../../../src/js/auth/utils/rotateRefreshToken.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,QAAA,MAAM,wBAAwB,GAAU,iFAUrC,oBAAoB,2BA6DtB,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|