@fabx.vn/core 1.0.104 → 1.1.1
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/README.md +2 -6
- package/dist/config/database.config.d.ts +1 -0
- package/dist/config/database.config.js +2 -1
- package/dist/config/database.config.js.map +1 -1
- package/dist/config/internal.config.d.ts +4 -1
- package/dist/config/internal.config.js +4 -2
- package/dist/config/internal.config.js.map +1 -1
- package/dist/config/rabbitmq.config.d.ts +1 -5
- package/dist/config/rabbitmq.config.js +2 -6
- package/dist/config/rabbitmq.config.js.map +1 -1
- package/dist/config/redis-cache.config.d.ts +9 -0
- package/dist/config/redis-cache.config.js +13 -0
- package/dist/config/redis-cache.config.js.map +1 -0
- package/dist/config/redis.config.js +1 -1
- package/dist/config/redis.config.js.map +1 -1
- package/dist/constants/messages.constants.d.ts +0 -5
- package/dist/constants/messages.constants.js +0 -5
- package/dist/constants/messages.constants.js.map +1 -1
- package/dist/core/core.module.js +6 -0
- package/dist/core/core.module.js.map +1 -1
- package/dist/core/decorators/current-user.decorator.js +17 -1
- package/dist/core/decorators/current-user.decorator.js.map +1 -1
- package/dist/core/dtos/pagination.dto.d.ts +12 -0
- package/dist/core/dtos/pagination.dto.js +25 -1
- package/dist/core/dtos/pagination.dto.js.map +1 -1
- package/dist/core/entities/base.entity.d.ts +1 -0
- package/dist/core/entities/base.entity.js +4 -0
- package/dist/core/entities/base.entity.js.map +1 -1
- package/dist/core/guards/jwt-auth.guard.js +2 -0
- package/dist/core/guards/jwt-auth.guard.js.map +1 -1
- package/dist/core/modules/typeorm-filter.module.d.ts +5 -0
- package/dist/core/modules/typeorm-filter.module.js +41 -0
- package/dist/core/modules/typeorm-filter.module.js.map +1 -0
- package/dist/core/services/base-pagination.service.d.ts +9 -1
- package/dist/core/services/base-pagination.service.js +91 -0
- package/dist/core/services/base-pagination.service.js.map +1 -1
- package/dist/core/services/cookie.service.d.ts +1 -0
- package/dist/core/services/cookie.service.js +4 -1
- package/dist/core/services/cookie.service.js.map +1 -1
- package/dist/{services/redis.service.d.ts → core/services/redis-cache.service.d.ts} +6 -1
- package/dist/{services/redis.service.js → core/services/redis-cache.service.js} +37 -9
- package/dist/core/services/redis-cache.service.js.map +1 -0
- package/dist/core/services/redis.service.d.ts +1 -0
- package/dist/core/services/redis.service.js +15 -2
- package/dist/core/services/redis.service.js.map +1 -1
- package/dist/core/services/repository-wrapper.service.d.ts +7 -0
- package/dist/core/services/repository-wrapper.service.js +95 -0
- package/dist/core/services/repository-wrapper.service.js.map +1 -0
- package/dist/core/services/session.service.d.ts +2 -1
- package/dist/core/services/session.service.js.map +1 -1
- package/dist/core/subscribers/audit.subscriber.js +3 -0
- package/dist/core/subscribers/audit.subscriber.js.map +1 -1
- package/dist/enums/object-type.enum.d.ts +9 -0
- package/dist/enums/object-type.enum.js +14 -0
- package/dist/enums/object-type.enum.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/libs/axios/axios-client.js +2 -2
- package/dist/libs/axios/axios-client.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/date.utils.d.ts +1 -0
- package/dist/utils/date.utils.js +10 -0
- package/dist/utils/date.utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/config/google-oauth.config.d.ts +0 -6
- package/dist/config/google-oauth.config.js +0 -10
- package/dist/config/google-oauth.config.js.map +0 -1
- package/dist/core/services/cache.service.d.ts +0 -13
- package/dist/core/services/cache.service.js +0 -51
- package/dist/core/services/cache.service.js.map +0 -1
- package/dist/core/services/permission.service.d.ts +0 -23
- package/dist/core/services/permission.service.js +0 -83
- package/dist/core/services/permission.service.js.map +0 -1
- package/dist/core.module.d.ts +0 -2
- package/dist/core.module.js +0 -72
- package/dist/core.module.js.map +0 -1
- package/dist/decorators/current-user.decorator.d.ts +0 -1
- package/dist/decorators/current-user.decorator.js +0 -9
- package/dist/decorators/current-user.decorator.js.map +0 -1
- package/dist/decorators/public.decorator.d.ts +0 -2
- package/dist/decorators/public.decorator.js +0 -8
- package/dist/decorators/public.decorator.js.map +0 -1
- package/dist/decorators/require-permissions.decorator.d.ts +0 -4
- package/dist/decorators/require-permissions.decorator.js +0 -11
- package/dist/decorators/require-permissions.decorator.js.map +0 -1
- package/dist/dtos/api-response.dto.d.ts +0 -10
- package/dist/dtos/api-response.dto.js +0 -22
- package/dist/dtos/api-response.dto.js.map +0 -1
- package/dist/dtos/pagination.dto.d.ts +0 -17
- package/dist/dtos/pagination.dto.js +0 -61
- package/dist/dtos/pagination.dto.js.map +0 -1
- package/dist/filters/http-exception.filter.d.ts +0 -5
- package/dist/filters/http-exception.filter.js +0 -47
- package/dist/filters/http-exception.filter.js.map +0 -1
- package/dist/guards/internal-auth.guard.d.ts +0 -7
- package/dist/guards/internal-auth.guard.js +0 -42
- package/dist/guards/internal-auth.guard.js.map +0 -1
- package/dist/guards/jwt-auth.guard.d.ts +0 -12
- package/dist/guards/jwt-auth.guard.js +0 -56
- package/dist/guards/jwt-auth.guard.js.map +0 -1
- package/dist/guards/permission.guard.d.ts +0 -9
- package/dist/guards/permission.guard.js +0 -71
- package/dist/guards/permission.guard.js.map +0 -1
- package/dist/interceptors/request-context.interceptor.d.ts +0 -8
- package/dist/interceptors/request-context.interceptor.js +0 -39
- package/dist/interceptors/request-context.interceptor.js.map +0 -1
- package/dist/services/cookie.service.d.ts +0 -13
- package/dist/services/cookie.service.js +0 -50
- package/dist/services/cookie.service.js.map +0 -1
- package/dist/services/jwt.service.d.ts +0 -37
- package/dist/services/jwt.service.js +0 -187
- package/dist/services/jwt.service.js.map +0 -1
- package/dist/services/rabbitmq-publisher.service.d.ts +0 -9
- package/dist/services/rabbitmq-publisher.service.js +0 -57
- package/dist/services/rabbitmq-publisher.service.js.map +0 -1
- package/dist/services/redis.service.js.map +0 -1
- package/dist/services/request-context.service.d.ts +0 -18
- package/dist/services/request-context.service.js +0 -40
- package/dist/services/request-context.service.js.map +0 -1
- package/dist/services/request-info.service.d.ts +0 -8
- package/dist/services/request-info.service.js +0 -32
- package/dist/services/request-info.service.js.map +0 -1
- package/dist/services/session.service.d.ts +0 -21
- package/dist/services/session.service.js +0 -70
- package/dist/services/session.service.js.map +0 -1
- package/dist/strategies/jwt.strategy.d.ts +0 -7
- package/dist/strategies/jwt.strategy.js +0 -38
- package/dist/strategies/jwt.strategy.js.map +0 -1
- package/dist/subscribers/audit.subscriber.d.ts +0 -8
- package/dist/subscribers/audit.subscriber.js +0 -40
- package/dist/subscribers/audit.subscriber.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../src/services/redis.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2E;AAC3E,qCAA4B;AAC5B,yDAAqD;AAG9C,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAK,CAAC,0BAAW,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAY;QAChD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,GAAW,EACX,KAAa,EACb,GAAG,OAAc;QAEjB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAW;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAGD,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAG,OAA4B;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAG,OAA4B;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;IAC1C,CAAC;IAGD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF,CAAA;AApEY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;GACA,YAAY,CAoExB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { CurrentUserDto } from "./session.service";
|
|
2
|
-
export interface RequestContext {
|
|
3
|
-
user?: CurrentUserDto;
|
|
4
|
-
requestId?: string;
|
|
5
|
-
ipAddress?: string;
|
|
6
|
-
userAgent?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class RequestContextService {
|
|
9
|
-
private static asyncLocalStorage;
|
|
10
|
-
static run<T>(context: RequestContext, callback: () => T): T;
|
|
11
|
-
static getCurrentContext(): RequestContext | undefined;
|
|
12
|
-
static getCurrentUser(): CurrentUserDto | undefined;
|
|
13
|
-
static getCurrentUserId(): number | undefined;
|
|
14
|
-
static getCurrentRequestInfo(): {
|
|
15
|
-
ipAddress?: string;
|
|
16
|
-
userAgent?: string;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.RequestContextService = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const async_hooks_1 = require("async_hooks");
|
|
12
|
-
let RequestContextService = class RequestContextService {
|
|
13
|
-
static run(context, callback) {
|
|
14
|
-
return this.asyncLocalStorage.run(context, callback);
|
|
15
|
-
}
|
|
16
|
-
static getCurrentContext() {
|
|
17
|
-
return this.asyncLocalStorage.getStore();
|
|
18
|
-
}
|
|
19
|
-
static getCurrentUser() {
|
|
20
|
-
const context = this.getCurrentContext();
|
|
21
|
-
return context?.user;
|
|
22
|
-
}
|
|
23
|
-
static getCurrentUserId() {
|
|
24
|
-
const user = this.getCurrentUser();
|
|
25
|
-
return user?.userId || undefined;
|
|
26
|
-
}
|
|
27
|
-
static getCurrentRequestInfo() {
|
|
28
|
-
const context = this.getCurrentContext();
|
|
29
|
-
return {
|
|
30
|
-
ipAddress: context?.ipAddress,
|
|
31
|
-
userAgent: context?.userAgent,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
exports.RequestContextService = RequestContextService;
|
|
36
|
-
RequestContextService.asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();
|
|
37
|
-
exports.RequestContextService = RequestContextService = __decorate([
|
|
38
|
-
(0, common_1.Injectable)()
|
|
39
|
-
], RequestContextService);
|
|
40
|
-
//# sourceMappingURL=request-context.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.service.js","sourceRoot":"","sources":["../../src/services/request-context.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAgD;AAWzC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,MAAM,CAAC,GAAG,CAAI,OAAuB,EAAE,QAAiB;QACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,cAAc;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,OAAO,EAAE,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,OAAO,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,qBAAqB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO;YACL,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B,CAAC;IACJ,CAAC;;AA3BU,sDAAqB;AACjB,uCAAiB,GAAG,IAAI,+BAAiB,EAAkB,AAA1C,CAA2C;gCADhE,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CA4BjC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.RequestInfoService = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
let RequestInfoService = class RequestInfoService {
|
|
12
|
-
getRequestInfo(request) {
|
|
13
|
-
return {
|
|
14
|
-
ipAddress: this.getClientIP(request),
|
|
15
|
-
userAgent: request.headers["user-agent"] || "Unknown",
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
getClientIP(request) {
|
|
19
|
-
return (request.headers["x-forwarded-for"]?.toString().split(",")[0].trim() ||
|
|
20
|
-
request.headers["x-real-ip"]?.toString() ||
|
|
21
|
-
request.headers["cf-connecting-ip"]?.toString() ||
|
|
22
|
-
request.connection?.remoteAddress ||
|
|
23
|
-
request.socket?.remoteAddress ||
|
|
24
|
-
request.ip ||
|
|
25
|
-
"127.0.0.1");
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
exports.RequestInfoService = RequestInfoService;
|
|
29
|
-
exports.RequestInfoService = RequestInfoService = __decorate([
|
|
30
|
-
(0, common_1.Injectable)()
|
|
31
|
-
], RequestInfoService);
|
|
32
|
-
//# sourceMappingURL=request-info.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-info.service.js","sourceRoot":"","sources":["../../src/services/request-info.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,cAAc,CAAC,OAAgB;QAC7B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,SAAS;SACtD,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,OAAgB;QAClC,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACnE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE;YACxC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE;YAC/C,OAAO,CAAC,UAAU,EAAE,aAAa;YACjC,OAAO,CAAC,MAAM,EAAE,aAAa;YAC7B,OAAO,CAAC,EAAE;YACV,WAAW,CACZ,CAAC;IACJ,CAAC;CACF,CAAA;AAnBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;GACA,kBAAkB,CAmB9B"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { RedisService } from "./redis.service";
|
|
2
|
-
export interface CurrentUserDto {
|
|
3
|
-
userUuid: string;
|
|
4
|
-
userId: number;
|
|
5
|
-
email: string;
|
|
6
|
-
fullName: string;
|
|
7
|
-
employeeCode: string;
|
|
8
|
-
avatar: string;
|
|
9
|
-
dataScope: string;
|
|
10
|
-
orgUnitIds: number[];
|
|
11
|
-
permissions: string[];
|
|
12
|
-
}
|
|
13
|
-
export declare class SessionService {
|
|
14
|
-
private readonly redisService;
|
|
15
|
-
constructor(redisService: RedisService);
|
|
16
|
-
createSession(data: CurrentUserDto, ttlSec: number): Promise<`${string}-${string}-${string}-${string}-${string}`>;
|
|
17
|
-
getSession(sid: string): Promise<CurrentUserDto | null>;
|
|
18
|
-
extendSession(sid: string, ttlSec: number): Promise<boolean>;
|
|
19
|
-
deleteSession(sid: string): Promise<number>;
|
|
20
|
-
revokeAllForUser(userId: number | string): Promise<boolean>;
|
|
21
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SessionService = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const crypto_1 = require("crypto");
|
|
15
|
-
const redis_service_1 = require("./redis.service");
|
|
16
|
-
let SessionService = class SessionService {
|
|
17
|
-
constructor(redisService) {
|
|
18
|
-
this.redisService = redisService;
|
|
19
|
-
}
|
|
20
|
-
async createSession(data, ttlSec) {
|
|
21
|
-
const sid = (0, crypto_1.randomUUID)();
|
|
22
|
-
const key = `session:${sid}`;
|
|
23
|
-
await this.redisService.setWithOptions(key, JSON.stringify(data), "EX", ttlSec);
|
|
24
|
-
if (data.userId) {
|
|
25
|
-
await this.redisService.sadd(`user_sessions:${data.userId}`, sid);
|
|
26
|
-
await this.redisService.expire(`user_sessions:${data.userId}`, ttlSec);
|
|
27
|
-
}
|
|
28
|
-
return sid;
|
|
29
|
-
}
|
|
30
|
-
async getSession(sid) {
|
|
31
|
-
const key = `session:${sid}`;
|
|
32
|
-
const json = await this.redisService.get(key);
|
|
33
|
-
if (!json)
|
|
34
|
-
return null;
|
|
35
|
-
return JSON.parse(json);
|
|
36
|
-
}
|
|
37
|
-
async extendSession(sid, ttlSec) {
|
|
38
|
-
const key = `session:${sid}`;
|
|
39
|
-
const res = await this.redisService.expire(key, ttlSec);
|
|
40
|
-
return res === 1;
|
|
41
|
-
}
|
|
42
|
-
async deleteSession(sid) {
|
|
43
|
-
const key = `session:${sid}`;
|
|
44
|
-
const json = await this.redisService.get(key);
|
|
45
|
-
if (json) {
|
|
46
|
-
const data = JSON.parse(json);
|
|
47
|
-
if (data.userId) {
|
|
48
|
-
await this.redisService.srem(`user_sessions:${data.userId}`, sid);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return this.redisService.del(key);
|
|
52
|
-
}
|
|
53
|
-
async revokeAllForUser(userId) {
|
|
54
|
-
const setKey = `user_sessions:${userId}`;
|
|
55
|
-
const sids = await this.redisService.smembers(setKey);
|
|
56
|
-
if (sids.length) {
|
|
57
|
-
const pipeline = this.redisService.pipeline();
|
|
58
|
-
sids.forEach((sid) => pipeline.del(`session:${sid}`));
|
|
59
|
-
pipeline.del(setKey);
|
|
60
|
-
await pipeline.exec();
|
|
61
|
-
}
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
exports.SessionService = SessionService;
|
|
66
|
-
exports.SessionService = SessionService = __decorate([
|
|
67
|
-
(0, common_1.Injectable)(),
|
|
68
|
-
__metadata("design:paramtypes", [redis_service_1.RedisService])
|
|
69
|
-
], SessionService);
|
|
70
|
-
//# sourceMappingURL=session.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.service.js","sourceRoot":"","sources":["../../src/services/session.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CurrentUserDto } from "../services/session.service";
|
|
2
|
-
declare const JwtStrategy_base: new (...args: any[]) => any;
|
|
3
|
-
export declare class JwtStrategy extends JwtStrategy_base {
|
|
4
|
-
constructor();
|
|
5
|
-
validate(payload: any): Promise<CurrentUserDto>;
|
|
6
|
-
}
|
|
7
|
-
export {};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.JwtStrategy = void 0;
|
|
13
|
-
const common_1 = require("@nestjs/common");
|
|
14
|
-
const passport_1 = require("@nestjs/passport");
|
|
15
|
-
const passport_jwt_1 = require("passport-jwt");
|
|
16
|
-
const jwt_config_1 = require("../config/jwt.config");
|
|
17
|
-
const cookie_service_1 = require("../services/cookie.service");
|
|
18
|
-
let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
|
|
19
|
-
constructor() {
|
|
20
|
-
super({
|
|
21
|
-
jwtFromRequest: passport_jwt_1.ExtractJwt.fromExtractors([
|
|
22
|
-
(req) => cookie_service_1.CookieService.extractTokensFromCookie(req)?.accessToken || null,
|
|
23
|
-
]),
|
|
24
|
-
ignoreExpiration: false,
|
|
25
|
-
secretOrKey: jwt_config_1.jwtConfig.secret,
|
|
26
|
-
algorithms: ["HS256"],
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
async validate(payload) {
|
|
30
|
-
return payload;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
exports.JwtStrategy = JwtStrategy;
|
|
34
|
-
exports.JwtStrategy = JwtStrategy = __decorate([
|
|
35
|
-
(0, common_1.Injectable)(),
|
|
36
|
-
__metadata("design:paramtypes", [])
|
|
37
|
-
], JwtStrategy);
|
|
38
|
-
//# sourceMappingURL=jwt.strategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.strategy.js","sourceRoot":"","sources":["../../src/strategies/jwt.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAAoD;AACpD,+CAAoD;AACpD,qDAAiD;AAEjD,+DAA2D;AAIpD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,IAAA,2BAAgB,EAAC,uBAAQ,CAAC;IACzD;QACE,KAAK,CAAC;YACJ,cAAc,EAAE,yBAAU,CAAC,cAAc,CAAC;gBACxC,CAAC,GAAY,EAAE,EAAE,CACf,8BAAa,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,WAAW,IAAI,IAAI;aAClE,CAAC;YACF,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,sBAAS,CAAC,MAAM;YAC7B,UAAU,EAAE,CAAC,OAAO,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAY;QACzB,OAAO,OAAyB,CAAC;IACnC,CAAC;CACF,CAAA;AAhBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;;GACA,WAAW,CAgBvB"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DataSource, EntitySubscriberInterface, InsertEvent, UpdateEvent } from "typeorm";
|
|
2
|
-
export declare class AuditSubscriber implements EntitySubscriberInterface {
|
|
3
|
-
private dataSource;
|
|
4
|
-
constructor(dataSource: DataSource);
|
|
5
|
-
private enrichEntity;
|
|
6
|
-
beforeInsert(event: InsertEvent<any>): void;
|
|
7
|
-
beforeUpdate(event: UpdateEvent<any>): void;
|
|
8
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.AuditSubscriber = void 0;
|
|
13
|
-
const typeorm_1 = require("typeorm");
|
|
14
|
-
const common_1 = require("@nestjs/common");
|
|
15
|
-
const request_context_service_1 = require("../services/request-context.service");
|
|
16
|
-
let AuditSubscriber = class AuditSubscriber {
|
|
17
|
-
constructor(dataSource) {
|
|
18
|
-
this.dataSource = dataSource;
|
|
19
|
-
this.dataSource.subscribers.push(this);
|
|
20
|
-
}
|
|
21
|
-
enrichEntity(entity, context) {
|
|
22
|
-
}
|
|
23
|
-
beforeInsert(event) {
|
|
24
|
-
const context = request_context_service_1.RequestContextService.getCurrentContext();
|
|
25
|
-
if (context && event.entity)
|
|
26
|
-
this.enrichEntity(event.entity, context);
|
|
27
|
-
}
|
|
28
|
-
beforeUpdate(event) {
|
|
29
|
-
const context = request_context_service_1.RequestContextService.getCurrentContext();
|
|
30
|
-
if (context && event.entity)
|
|
31
|
-
this.enrichEntity(event.entity, context);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
exports.AuditSubscriber = AuditSubscriber;
|
|
35
|
-
exports.AuditSubscriber = AuditSubscriber = __decorate([
|
|
36
|
-
(0, common_1.Injectable)(),
|
|
37
|
-
(0, typeorm_1.EventSubscriber)(),
|
|
38
|
-
__metadata("design:paramtypes", [typeorm_1.DataSource])
|
|
39
|
-
], AuditSubscriber);
|
|
40
|
-
//# sourceMappingURL=audit.subscriber.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../src/subscribers/audit.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAMiB;AACjB,2CAA4C;AAC5C,iFAA4E;AAIrE,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QACxC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEO,YAAY,CAAC,MAAW,EAAE,OAAY;IAE9C,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,MAAM,OAAO,GAAG,+CAAqB,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,MAAM,OAAO,GAAG,+CAAqB,CAAC,iBAAiB,EAAE,CAAC;QAC1D,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AAlBY,0CAAe;0BAAf,eAAe;IAF3B,IAAA,mBAAU,GAAE;IACZ,IAAA,yBAAe,GAAE;qCAEgB,oBAAU;GAD/B,eAAe,CAkB3B"}
|