@fabx.vn/core 1.0.102 → 1.0.104
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/config/cookie.config.d.ts +1 -0
- package/dist/config/cookie.config.js +1 -0
- package/dist/config/cookie.config.js.map +1 -1
- package/dist/core/guards/jwt-auth.guard.js +0 -3
- package/dist/core/guards/jwt-auth.guard.js.map +1 -1
- package/dist/core/services/cookie.service.d.ts +1 -0
- package/dist/core/services/cookie.service.js +14 -18
- package/dist/core/services/cookie.service.js.map +1 -1
- package/dist/core/services/jwt.service.js +0 -10
- package/dist/core/services/jwt.service.js.map +1 -1
- package/dist/core/services/session.service.d.ts +0 -1
- package/dist/core/services/session.service.js +3 -10
- package/dist/core/services/session.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -3,5 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.cookieConfig = void 0;
|
|
4
4
|
exports.cookieConfig = {
|
|
5
5
|
cookieName: process.env.AUTH_COOKIE_NAME || "auth_tokens",
|
|
6
|
+
cookieDomain: process.env.COOKIE_DOMAIN || undefined,
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=cookie.config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.config.js","sourceRoot":"","sources":["../../src/config/cookie.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,aAAa;
|
|
1
|
+
{"version":3,"file":"cookie.config.js","sourceRoot":"","sources":["../../src/config/cookie.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,aAAa;IACzD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS;CACrD,CAAC"}
|
|
@@ -35,13 +35,10 @@ let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard extends (0, passport_1.Au
|
|
|
35
35
|
const request = context.switchToHttp().getRequest();
|
|
36
36
|
const tokens = cookie_service_1.CookieService.extractTokensFromCookie(request);
|
|
37
37
|
if (!tokens?.accessToken) {
|
|
38
|
-
this.logger.warn(`[JwtAuthGuard] No access token found in cookies for ${request.method} ${request.path}`);
|
|
39
38
|
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.NO_TOKEN);
|
|
40
39
|
}
|
|
41
|
-
this.logger.log(`[JwtAuthGuard] Extracted token: ${tokens.accessToken.substring(0, 20)}...`);
|
|
42
40
|
const currentUser = await this.coreJwtService.getCurrentUser(tokens.accessToken);
|
|
43
41
|
if (!currentUser) {
|
|
44
|
-
this.logger.warn(`[JwtAuthGuard] Failed to get current user from token`);
|
|
45
42
|
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
46
43
|
}
|
|
47
44
|
request.user = currentUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/core/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAKwB;AACxB,+CAA6C;AAC7C,uCAAyC;AACzC,4DAA4D;AAC5D,kEAA8D;AAC9D,sEAAyD;AACzD,wEAAkE;AAG3D,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAGhD,YACU,SAAoB,EACpB,cAA8B;QAEtC,KAAK,EAAE,CAAC;QAHA,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAJvB,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAOxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,8BAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/core/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAKwB;AACxB,+CAA6C;AAC7C,uCAAyC;AACzC,4DAA4D;AAC5D,kEAA8D;AAC9D,sEAAyD;AACzD,wEAAkE;AAG3D,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAGhD,YACU,SAAoB,EACpB,cAA8B;QAEtC,KAAK,EAAE,CAAC;QAHA,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAJvB,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAOxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,8BAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAC1D,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA5CY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAKU,gBAAS;QACJ,4BAAc;GAL7B,YAAY,CA4CxB"}
|
|
@@ -5,6 +5,7 @@ export interface ExtractedTokensDto {
|
|
|
5
5
|
}
|
|
6
6
|
export declare class CookieService {
|
|
7
7
|
private static readonly COOKIE_NAME;
|
|
8
|
+
private static readonly COOKIE_DOMAIN;
|
|
8
9
|
private static readonly COOKIE_OPTIONS;
|
|
9
10
|
static setAuthCookies(res: Response, accessToken: string, refreshToken: string, refreshTokenExpiresAt: Date): void;
|
|
10
11
|
static clearAuthCookies(res: Response): void;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.CookieService = void 0;
|
|
4
5
|
const cookie_config_1 = require("../../config/cookie.config");
|
|
5
6
|
class CookieService {
|
|
6
7
|
static setAuthCookies(res, accessToken, refreshToken, refreshTokenExpiresAt) {
|
|
8
|
+
this.clearAuthCookies(res);
|
|
7
9
|
const authData = {
|
|
8
10
|
accessToken,
|
|
9
11
|
refreshToken,
|
|
@@ -11,55 +13,49 @@ class CookieService {
|
|
|
11
13
|
refreshTokenExpiresAt: refreshTokenExpiresAt.getTime(),
|
|
12
14
|
};
|
|
13
15
|
const cookieMaxAge = refreshTokenExpiresAt.getTime() - Date.now();
|
|
14
|
-
console.log(`[CookieService] Setting cookie ${this.COOKIE_NAME} with accessToken: ${accessToken.substring(0, 20)}...`);
|
|
15
|
-
console.log(`[CookieService] Cookie options:`, JSON.stringify({
|
|
16
|
-
...this.COOKIE_OPTIONS,
|
|
17
|
-
maxAge: Math.max(cookieMaxAge, 0),
|
|
18
|
-
}));
|
|
19
16
|
res.cookie(this.COOKIE_NAME, JSON.stringify(authData), {
|
|
20
17
|
...this.COOKIE_OPTIONS,
|
|
21
18
|
maxAge: Math.max(cookieMaxAge, 0),
|
|
22
19
|
});
|
|
23
|
-
console.log(`[CookieService] Cookie set successfully`);
|
|
24
20
|
}
|
|
25
21
|
static clearAuthCookies(res) {
|
|
26
|
-
res.clearCookie(this.COOKIE_NAME, {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
res.clearCookie(this.COOKIE_NAME, { path: "/" });
|
|
23
|
+
if (this.COOKIE_OPTIONS.domain) {
|
|
24
|
+
res.clearCookie(this.COOKIE_NAME, {
|
|
25
|
+
path: "/",
|
|
26
|
+
domain: this.COOKIE_OPTIONS.domain,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
30
29
|
}
|
|
31
30
|
static setRefreshedCookies(res, accessToken, refreshToken, refreshTokenExpiresAt) {
|
|
32
31
|
this.setAuthCookies(res, accessToken, refreshToken, refreshTokenExpiresAt);
|
|
33
32
|
}
|
|
34
33
|
static extractTokensFromCookie(request) {
|
|
35
34
|
const authCookie = request.cookies?.[this.COOKIE_NAME];
|
|
36
|
-
if (!authCookie)
|
|
37
|
-
console.log(`[CookieService] No cookie found with name: ${this.COOKIE_NAME}`);
|
|
38
|
-
console.log(`[CookieService] Available cookies:`, Object.keys(request.cookies || {}));
|
|
35
|
+
if (!authCookie)
|
|
39
36
|
return undefined;
|
|
40
|
-
}
|
|
41
37
|
try {
|
|
42
38
|
const authData = JSON.parse(authCookie);
|
|
43
|
-
console.log(`[CookieService] Extracted accessToken: ${authData.accessToken?.substring(0, 20)}...`);
|
|
44
39
|
return {
|
|
45
40
|
accessToken: authData.accessToken,
|
|
46
41
|
refreshToken: authData.refreshToken,
|
|
47
42
|
};
|
|
48
43
|
}
|
|
49
44
|
catch (error) {
|
|
50
|
-
console.error("
|
|
51
|
-
console.error("[CookieService] Cookie value:", authCookie);
|
|
45
|
+
console.error("Failed to parse auth cookie:", error);
|
|
52
46
|
return undefined;
|
|
53
47
|
}
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
exports.CookieService = CookieService;
|
|
51
|
+
_a = CookieService;
|
|
57
52
|
CookieService.COOKIE_NAME = cookie_config_1.cookieConfig.cookieName;
|
|
53
|
+
CookieService.COOKIE_DOMAIN = cookie_config_1.cookieConfig.cookieDomain;
|
|
58
54
|
CookieService.COOKIE_OPTIONS = {
|
|
59
55
|
httpOnly: true,
|
|
60
56
|
secure: process.env.NODE_ENV === "production",
|
|
61
57
|
sameSite: process.env.NODE_ENV === "production" ? "none" : "strict",
|
|
62
|
-
domain:
|
|
58
|
+
domain: _a.COOKIE_DOMAIN,
|
|
63
59
|
path: "/",
|
|
64
60
|
};
|
|
65
61
|
//# sourceMappingURL=cookie.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.service.js","sourceRoot":"","sources":["../../../src/core/services/cookie.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cookie.service.js","sourceRoot":"","sources":["../../../src/core/services/cookie.service.ts"],"names":[],"mappings":";;;;AACA,yDAAqD;AAOrD,MAAa,aAAa;IAgBxB,MAAM,CAAC,cAAc,CACnB,GAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,qBAA2B;QAI3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG;YACf,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,qBAAqB,EAAE,qBAAqB,CAAC,OAAO,EAAE;SACvD,CAAC;QAEF,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACrD,GAAG,IAAI,CAAC,cAAc;YACtB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAKD,MAAM,CAAC,gBAAgB,CAAC,GAAa;QACnC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAE/B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;gBAChC,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAKD,MAAM,CAAC,mBAAmB,CACxB,GAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,qBAA2B;QAE3B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAC7E,CAAC;IAKD,MAAM,CAAC,uBAAuB,CAC5B,OAAgB;QAEhB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO;gBACL,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;;AAtFH,sCAuFC;;AAtFyB,yBAAW,GAAG,4BAAY,CAAC,UAAU,AAA1B,CAA2B;AACtC,2BAAa,GAAG,4BAAY,CAAC,YAAY,AAA5B,CAA6B;AAE1C,4BAAc,GAAG;IACvC,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IAC7C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;IACnE,MAAM,EAAE,EAAI,CAAC,aAAa;IAC1B,IAAI,EAAE,GAAG;CACD,AAN4B,CAM3B"}
|
|
@@ -25,12 +25,9 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
25
25
|
this.logger = new common_1.Logger(CoreJwtService_1.name);
|
|
26
26
|
}
|
|
27
27
|
async createAccessToken(sessionData) {
|
|
28
|
-
this.logger.log(`Creating access token for session data: ${JSON.stringify(sessionData)}`);
|
|
29
28
|
const ttlSec = date_utils_1.DateUtils.parseExpirationTime(jwt_config_1.jwtConfig.expiresIn);
|
|
30
|
-
this.logger.log(`TTL seconds: ${ttlSec}`);
|
|
31
29
|
const sessionId = await this.sessionService.createSession(sessionData, ttlSec);
|
|
32
30
|
const payload = { sub: sessionId };
|
|
33
|
-
this.logger.log(`Payload: ${JSON.stringify(payload)}`);
|
|
34
31
|
return this.jwtService.sign(payload);
|
|
35
32
|
}
|
|
36
33
|
decodeToken(token) {
|
|
@@ -52,10 +49,8 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
validateTokenSignature(token) {
|
|
55
|
-
this.logger.log(`Validating token signature: ${token}`);
|
|
56
52
|
try {
|
|
57
53
|
const payload = this.verifyToken(token);
|
|
58
|
-
this.logger.log(`Payload: ${JSON.stringify(payload)}`);
|
|
59
54
|
if (!payload) {
|
|
60
55
|
return {
|
|
61
56
|
isValid: false,
|
|
@@ -83,9 +78,7 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
83
78
|
return payload?.sub || null;
|
|
84
79
|
}
|
|
85
80
|
async deleteSessionFromToken(token) {
|
|
86
|
-
this.logger.log(`Deleting session from token: ${token}`);
|
|
87
81
|
const sessionId = this.getSessionIdFromToken(token);
|
|
88
|
-
this.logger.log(`Session ID: ${sessionId}`);
|
|
89
82
|
if (sessionId) {
|
|
90
83
|
await this.sessionService.deleteSession(sessionId);
|
|
91
84
|
return true;
|
|
@@ -93,10 +86,8 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
93
86
|
return false;
|
|
94
87
|
}
|
|
95
88
|
getTokenExpirationTime(token) {
|
|
96
|
-
this.logger.log(`Getting token expiration time: ${token}`);
|
|
97
89
|
try {
|
|
98
90
|
const payload = this.decodeToken(token);
|
|
99
|
-
this.logger.log(`Payload: ${JSON.stringify(payload)}`);
|
|
100
91
|
if (!payload)
|
|
101
92
|
return null;
|
|
102
93
|
const decoded = this.jwtService.decode(token);
|
|
@@ -132,7 +123,6 @@ let CoreJwtService = CoreJwtService_1 = class CoreJwtService {
|
|
|
132
123
|
}
|
|
133
124
|
async getCurrentUser(accessToken) {
|
|
134
125
|
try {
|
|
135
|
-
this.logger.log(`Getting current user from token: ${accessToken}`);
|
|
136
126
|
const payload = this.decodeToken(accessToken);
|
|
137
127
|
this.logger.log(`Payload: ${JSON.stringify(payload)}`);
|
|
138
128
|
if (!payload?.sub)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../src/core/services/jwt.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAyC;AACzC,oEAAgF;AAChF,kDAA8C;AAC9C,mDAA+C;AAC/C,6DAAyD;AACzD,sEAAyD;AAalD,IAAM,cAAc,sBAApB,MAAM,cAAc;IAGzB,YACmB,UAAsB,EACtB,cAA8B;QAD9B,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAgB;QAJhC,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAKvD,CAAC;IAMJ,KAAK,CAAC,iBAAiB,CAAC,WAA2B;QACjD,
|
|
1
|
+
{"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../src/core/services/jwt.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,16 +8,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
-
var SessionService_1;
|
|
12
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
12
|
exports.SessionService = void 0;
|
|
14
13
|
const common_1 = require("@nestjs/common");
|
|
15
14
|
const crypto_1 = require("crypto");
|
|
16
15
|
const redis_service_1 = require("../services/redis.service");
|
|
17
|
-
let SessionService =
|
|
16
|
+
let SessionService = class SessionService {
|
|
18
17
|
constructor(redisService) {
|
|
19
18
|
this.redisService = redisService;
|
|
20
|
-
this.logger = new common_1.Logger(SessionService_1.name);
|
|
21
19
|
}
|
|
22
20
|
sessionKey(sid) {
|
|
23
21
|
return `session:${sid}`;
|
|
@@ -28,21 +26,18 @@ let SessionService = SessionService_1 = class SessionService {
|
|
|
28
26
|
async createSession(data, ttlSec) {
|
|
29
27
|
const sid = (0, crypto_1.randomUUID)();
|
|
30
28
|
await this.redisService.setWithOptions(this.sessionKey(sid), JSON.stringify(data), "EX", ttlSec);
|
|
31
|
-
this.logger.log(`Session created successfully: ${sid}`);
|
|
32
29
|
if (data.userId) {
|
|
33
30
|
const userKey = this.userSessionsKey(data.userId);
|
|
34
31
|
await this.redisService.sadd(userKey, sid);
|
|
35
32
|
await this.redisService.expire(userKey, ttlSec);
|
|
36
|
-
this.logger.log(`User sessions added: ${userKey}`);
|
|
37
33
|
}
|
|
38
34
|
return sid;
|
|
39
35
|
}
|
|
40
36
|
async getSession(sid) {
|
|
41
37
|
const key = this.sessionKey(sid);
|
|
42
38
|
const json = await this.redisService.get(key);
|
|
43
|
-
this.logger.log(`Session JSON: ${json}`);
|
|
44
39
|
if (!json) {
|
|
45
|
-
|
|
40
|
+
console.log(`[SessionService] Session not found for key: ${key}`);
|
|
46
41
|
return null;
|
|
47
42
|
}
|
|
48
43
|
return JSON.parse(json);
|
|
@@ -51,9 +46,7 @@ let SessionService = SessionService_1 = class SessionService {
|
|
|
51
46
|
return (await this.redisService.expire(this.sessionKey(sid), ttlSec)) === 1;
|
|
52
47
|
}
|
|
53
48
|
async deleteSession(sid) {
|
|
54
|
-
this.logger.log(`Deleting session for key: ${this.sessionKey(sid)}`);
|
|
55
49
|
const json = await this.redisService.get(this.sessionKey(sid));
|
|
56
|
-
this.logger.log(`Session JSON: ${json}`);
|
|
57
50
|
if (json) {
|
|
58
51
|
const data = JSON.parse(json);
|
|
59
52
|
if (data?.userId) {
|
|
@@ -74,7 +67,7 @@ let SessionService = SessionService_1 = class SessionService {
|
|
|
74
67
|
}
|
|
75
68
|
};
|
|
76
69
|
exports.SessionService = SessionService;
|
|
77
|
-
exports.SessionService = SessionService =
|
|
70
|
+
exports.SessionService = SessionService = __decorate([
|
|
78
71
|
(0, common_1.Injectable)(),
|
|
79
72
|
__metadata("design:paramtypes", [redis_service_1.RedisService])
|
|
80
73
|
], SessionService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../src/core/services/session.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../../src/core/services/session.service.ts"],"names":[],"mappings":"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"}
|