@fabx.vn/core 1.0.4 → 1.0.6
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/rabbitmq.config.d.ts +3 -0
- package/dist/config/rabbitmq.config.js +3 -0
- package/dist/config/rabbitmq.config.js.map +1 -1
- package/dist/core/guards/jwt-auth.guard.js +0 -2
- package/dist/core/guards/jwt-auth.guard.js.map +1 -1
- package/dist/core/services/base-pagination.service.d.ts +9 -0
- package/dist/core/services/base-pagination.service.js +45 -0
- package/dist/core/services/base-pagination.service.js.map +1 -0
- package/dist/core/services/redis.service.js +1 -7
- package/dist/core/services/redis.service.js.map +1 -1
- package/dist/core/subscribers/audit.subscriber.d.ts +5 -3
- package/dist/core/subscribers/audit.subscriber.js +46 -8
- package/dist/core/subscribers/audit.subscriber.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -16,4 +16,7 @@ export declare const RABBITMQ_ROUTING_KEYS: {
|
|
|
16
16
|
readonly USER_EMAIL_VERIFICATION: "user.email.verification";
|
|
17
17
|
readonly AUTH_USER_CREATED: "auth.user.created";
|
|
18
18
|
readonly USER_PASSWORD_RESET: "user.password.reset";
|
|
19
|
+
readonly USER_PROFILE_CREATED: "user.profile.created";
|
|
20
|
+
readonly USER_PROFILE_DELETED: "user.profile.deleted";
|
|
21
|
+
readonly USER_PROFILE_UPDATED: "user.profile.updated";
|
|
19
22
|
};
|
|
@@ -21,5 +21,8 @@ exports.RABBITMQ_ROUTING_KEYS = {
|
|
|
21
21
|
USER_EMAIL_VERIFICATION: "user.email.verification",
|
|
22
22
|
AUTH_USER_CREATED: "auth.user.created",
|
|
23
23
|
USER_PASSWORD_RESET: "user.password.reset",
|
|
24
|
+
USER_PROFILE_CREATED: "user.profile.created",
|
|
25
|
+
USER_PROFILE_DELETED: "user.profile.deleted",
|
|
26
|
+
USER_PROFILE_UPDATED: "user.profile.updated",
|
|
24
27
|
};
|
|
25
28
|
//# sourceMappingURL=rabbitmq.config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq.config.js","sourceRoot":"","sources":["../../src/config/rabbitmq.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU;IAC7C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI;IACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO;IAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;IACrD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM;IAC3C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY;IACjD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;IAC/D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,qBAAqB;IAC5E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;IACpD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,sBAAsB;IAC7E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,iBAAiB;IACzE,IAAI,GAAG;QACL,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IACtD,IAAI,CAAC,IACP,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC;AAMW,QAAA,qBAAqB,GAAG;IAKnC,uBAAuB,EAAE,yBAAyB;IAMlD,iBAAiB,EAAE,mBAAmB;IAMtC,mBAAmB,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"rabbitmq.config.js","sourceRoot":"","sources":["../../src/config/rabbitmq.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU;IAC7C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI;IACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO;IAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;IACrD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM;IAC3C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY;IACjD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;IAC/D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,qBAAqB;IAC5E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;IACpD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,sBAAsB;IAC7E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,iBAAiB;IACzE,IAAI,GAAG;QACL,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IACtD,IAAI,CAAC,IACP,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC;AAMW,QAAA,qBAAqB,GAAG;IAKnC,uBAAuB,EAAE,yBAAyB;IAMlD,iBAAiB,EAAE,mBAAmB;IAMtC,mBAAmB,EAAE,qBAAqB;IAM1C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;CACpC,CAAC"}
|
|
@@ -34,12 +34,10 @@ let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard extends (0, passport_1.Au
|
|
|
34
34
|
return true;
|
|
35
35
|
const request = context.switchToHttp().getRequest();
|
|
36
36
|
const tokens = cookie_service_1.CookieService.extractTokensFromCookie(request);
|
|
37
|
-
this.logger.log(`Access token: ${tokens?.accessToken}`);
|
|
38
37
|
if (!tokens?.accessToken) {
|
|
39
38
|
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.NO_TOKEN);
|
|
40
39
|
}
|
|
41
40
|
const currentUser = await this.coreJwtService.getCurrentUser(tokens.accessToken);
|
|
42
|
-
this.logger.log(`Current user: ${currentUser}`);
|
|
43
41
|
if (!currentUser) {
|
|
44
42
|
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
45
43
|
}
|
|
@@ -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,
|
|
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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Repository, SelectQueryBuilder } from "typeorm";
|
|
2
|
+
import { PaginationDto, PaginationResponseDto } from "../dtos/pagination.dto";
|
|
3
|
+
export declare abstract class BasePaginationService<T> {
|
|
4
|
+
protected repository: Repository<T>;
|
|
5
|
+
protected constructor(repository: Repository<T>);
|
|
6
|
+
protected paginate<TEntity>(queryBuilder: SelectQueryBuilder<TEntity>, paginationDto: PaginationDto): Promise<PaginationResponseDto<TEntity>>;
|
|
7
|
+
protected buildSearchQuery(queryBuilder: SelectQueryBuilder<T>, searchFields: string[], search?: string): SelectQueryBuilder<T>;
|
|
8
|
+
protected buildOrderQuery(queryBuilder: SelectQueryBuilder<T>, sortBy?: string, sortType?: "ASC" | "DESC", fieldMapping?: Record<string, string>): SelectQueryBuilder<T>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BasePaginationService = void 0;
|
|
4
|
+
class BasePaginationService {
|
|
5
|
+
constructor(repository) {
|
|
6
|
+
this.repository = repository;
|
|
7
|
+
}
|
|
8
|
+
async paginate(queryBuilder, paginationDto) {
|
|
9
|
+
const { page = 1, limit = 10 } = paginationDto;
|
|
10
|
+
const skip = (page - 1) * limit;
|
|
11
|
+
const total = await queryBuilder.getCount();
|
|
12
|
+
const data = await queryBuilder.skip(skip).take(limit).getMany();
|
|
13
|
+
const totalPages = Math.ceil(total / limit);
|
|
14
|
+
const meta = {
|
|
15
|
+
page,
|
|
16
|
+
limit,
|
|
17
|
+
total,
|
|
18
|
+
totalPages,
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
data,
|
|
22
|
+
meta,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
buildSearchQuery(queryBuilder, searchFields, search) {
|
|
26
|
+
if (!search || !search.trim()) {
|
|
27
|
+
return queryBuilder;
|
|
28
|
+
}
|
|
29
|
+
const searchTerm = `%${search.trim()}%`;
|
|
30
|
+
const conditions = searchFields.map((field, index) => `${field} LIKE :search${index}`);
|
|
31
|
+
return queryBuilder.andWhere(`(${conditions.join(" OR ")})`, searchFields.reduce((params, field, index) => {
|
|
32
|
+
params[`search${index}`] = searchTerm;
|
|
33
|
+
return params;
|
|
34
|
+
}, {}));
|
|
35
|
+
}
|
|
36
|
+
buildOrderQuery(queryBuilder, sortBy, sortType = "DESC", fieldMapping) {
|
|
37
|
+
if (sortBy && fieldMapping?.[sortBy]) {
|
|
38
|
+
const dbField = fieldMapping[sortBy];
|
|
39
|
+
return queryBuilder.orderBy(dbField, sortType);
|
|
40
|
+
}
|
|
41
|
+
return queryBuilder;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.BasePaginationService = BasePaginationService;
|
|
45
|
+
//# sourceMappingURL=base-pagination.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-pagination.service.js","sourceRoot":"","sources":["../../../src/core/services/base-pagination.service.ts"],"names":[],"mappings":";;;AAOA,MAAsB,qBAAqB;IACzC,YAAgC,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAEnD,KAAK,CAAC,QAAQ,CACtB,YAAyC,EACzC,aAA4B;QAE5B,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAGhC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC;QAG5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAGjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAsB;YAC9B,IAAI;YACJ,KAAK;YACL,KAAK;YACL,UAAU;SACX,CAAC;QAEF,OAAO;YACL,IAAI;YACJ,IAAI;SACL,CAAC;IACJ,CAAC;IAES,gBAAgB,CACxB,YAAmC,EACnC,YAAsB,EACtB,MAAe;QAEf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;QACxC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CACjC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,KAAK,EAAE,CAClD,CAAC;QAEF,OAAO,YAAY,CAAC,QAAQ,CAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAC9B,YAAY,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,EAA4B,CAC7B,CACF,CAAC;IACJ,CAAC;IAES,eAAe,CACvB,YAAmC,EACnC,MAAe,EACf,WAA2B,MAAM,EACjC,YAAqC;QAErC,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAErC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAtED,sDAsEC"}
|
|
@@ -7,23 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.RedisService = void 0;
|
|
10
|
+
const redis_config_1 = require("../../config/redis.config");
|
|
10
11
|
const common_1 = require("@nestjs/common");
|
|
11
12
|
const ioredis_1 = require("ioredis");
|
|
12
|
-
const redis_config_1 = require("../../config/redis.config");
|
|
13
13
|
let RedisService = class RedisService {
|
|
14
14
|
async onModuleInit() {
|
|
15
|
-
console.log(`[RedisService] Initializing Redis connection to ${redis_config_1.redisConfig.host}:${redis_config_1.redisConfig.port}, DB: ${redis_config_1.redisConfig.db}`);
|
|
16
15
|
this.redis = new ioredis_1.default(redis_config_1.redisConfig);
|
|
17
|
-
await this.redis.ping();
|
|
18
|
-
console.log(`[RedisService] Redis connection established successfully`);
|
|
19
16
|
}
|
|
20
17
|
async onModuleDestroy() {
|
|
21
18
|
await this.redis.quit();
|
|
22
19
|
}
|
|
23
20
|
async get(key) {
|
|
24
|
-
if (!this.redis) {
|
|
25
|
-
throw new Error("Redis is not initialized. Make sure RedisService.onModuleInit() has been called.");
|
|
26
|
-
}
|
|
27
21
|
return this.redis.get(key);
|
|
28
22
|
}
|
|
29
23
|
async set(key, value, ttl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../src/core/services/redis.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2E;AAC3E,qCAA4B;
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../src/core/services/redis.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uDAAmD;AACnD,2CAA2E;AAC3E,qCAA4B;AAGrB,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,8 +1,10 @@
|
|
|
1
|
-
import { DataSource, EntitySubscriberInterface, InsertEvent, UpdateEvent } from "typeorm";
|
|
1
|
+
import { DataSource, EntitySubscriberInterface, InsertEvent, UpdateEvent, RemoveEvent, SoftRemoveEvent } from "typeorm";
|
|
2
2
|
export declare class AuditSubscriber implements EntitySubscriberInterface {
|
|
3
3
|
private dataSource;
|
|
4
4
|
constructor(dataSource: DataSource);
|
|
5
|
-
private
|
|
6
|
-
beforeInsert(event: InsertEvent<any>): void
|
|
5
|
+
private safeSetProperty;
|
|
6
|
+
beforeInsert(event: InsertEvent<any>): Promise<void>;
|
|
7
7
|
beforeUpdate(event: UpdateEvent<any>): void;
|
|
8
|
+
beforeRemove(event: RemoveEvent<any>): void;
|
|
9
|
+
beforeSoftRemove(event: SoftRemoveEvent<any>): void;
|
|
8
10
|
}
|
|
@@ -18,17 +18,55 @@ let AuditSubscriber = class AuditSubscriber {
|
|
|
18
18
|
this.dataSource = dataSource;
|
|
19
19
|
this.dataSource.subscribers.push(this);
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
safeSetProperty(entity, property, value) {
|
|
22
|
+
if (!entity)
|
|
23
|
+
return;
|
|
24
|
+
try {
|
|
25
|
+
entity[property] = value;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
}
|
|
22
29
|
}
|
|
23
|
-
beforeInsert(event) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
async beforeInsert(event) {
|
|
31
|
+
if (!event.entity)
|
|
32
|
+
return;
|
|
33
|
+
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
34
|
+
if (user?.userId) {
|
|
35
|
+
this.safeSetProperty(event.entity, "createdBy", user.userId);
|
|
36
|
+
const orgUnitId = user.orgUnitIds && user.orgUnitIds.length > 0
|
|
37
|
+
? user.orgUnitIds[0]
|
|
38
|
+
: event.entity.orgUnitId || null;
|
|
39
|
+
this.safeSetProperty(event.entity, "orgUnitId", orgUnitId);
|
|
40
|
+
}
|
|
27
41
|
}
|
|
28
42
|
beforeUpdate(event) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
43
|
+
if (!event.entity)
|
|
44
|
+
return;
|
|
45
|
+
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
46
|
+
if (user?.userId) {
|
|
47
|
+
if (event.entity.deletedAt) {
|
|
48
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.safeSetProperty(event.entity, "updatedBy", user.userId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
beforeRemove(event) {
|
|
56
|
+
if (!event.entity)
|
|
57
|
+
return;
|
|
58
|
+
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
59
|
+
if (user?.userId) {
|
|
60
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
beforeSoftRemove(event) {
|
|
64
|
+
if (!event.entity)
|
|
65
|
+
return;
|
|
66
|
+
const user = request_context_service_1.RequestContextService.getCurrentUser();
|
|
67
|
+
if (user?.userId) {
|
|
68
|
+
this.safeSetProperty(event.entity, "deletedBy", user.userId);
|
|
69
|
+
}
|
|
32
70
|
}
|
|
33
71
|
};
|
|
34
72
|
exports.AuditSubscriber = AuditSubscriber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../../src/core/subscribers/audit.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"audit.subscriber.js","sourceRoot":"","sources":["../../../src/core/subscribers/audit.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAQiB;AACjB,2CAA4C;AAC5C,oFAA+E;AAIxE,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;IAQO,eAAe,CAAC,MAAW,EAAE,QAAgB,EAAE,KAAU;QAC/D,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC;YAGH,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;QAGjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAuB;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,MAAM,IAAI,GAAG,+CAAqB,CAAC,cAAc,EAAE,CAAC;QACpD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YAEjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAG7D,MAAM,SAAS,GACb,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,MAAM,IAAI,GAAG,+CAAqB,CAAC,cAAc,EAAE,CAAC;QACpD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YAEjB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,MAAM,IAAI,GAAG,+CAAqB,CAAC,cAAc,EAAE,CAAC;QACpD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAA2B;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAE1B,MAAM,IAAI,GAAG,+CAAqB,CAAC,cAAc,EAAE,CAAC;QACpD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF,CAAA;AAxEY,0CAAe;0BAAf,eAAe;IAF3B,IAAA,mBAAU,GAAE;IACZ,IAAA,yBAAe,GAAE;qCAEgB,oBAAU;GAD/B,eAAe,CAwE3B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { CookieService, ExtractedTokensDto, } from "./core/services/cookie.servi
|
|
|
6
6
|
export { RabbitMQPublisher } from "./core/services/rabbitmq-publisher.service";
|
|
7
7
|
export { RequestContextService, RequestContext, } from "./core/services/request-context.service";
|
|
8
8
|
export { RequestInfoService } from "./core/services/request-info.service";
|
|
9
|
+
export { BasePaginationService } from "./core/services/base-pagination.service";
|
|
9
10
|
export { JwtAuthGuard } from "./core/guards/jwt-auth.guard";
|
|
10
11
|
export { InternalAuthGuard } from "./core/guards/internal-auth.guard";
|
|
11
12
|
export { PermissionGuard } from "./core/guards/permission.guard";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createServiceClient = exports.apiClient = exports.AxiosClient = exports.DateUtils = exports.SUCCESS_RESPONSES = exports.SUCCESS_MESSAGES = exports.ERROR_RESPONSES = exports.ERROR_MESSAGES = exports.MESSAGES = exports.googleOAuthConfig = exports.corsConfig = exports.internalConfig = exports.cookieConfig = exports.RABBITMQ_ROUTING_KEYS = exports.rabbitmqConfig = exports.databaseConfig = exports.redisConfig = exports.jwtConfig = exports.AuditSubscriber = exports.JwtStrategy = exports.RequestContextInterceptor = exports.HttpExceptionFilter = exports.PaginationMetaDto = exports.PaginationResponseDto = exports.PaginationDto = exports.ApiResponseDto = exports.ANY_PERMISSIONS_KEY = exports.PERMISSIONS_KEY = exports.RequireAnyPermission = exports.RequirePermissions = exports.IS_PUBLIC_KEY = exports.Public = exports.CurrentUser = exports.PermissionGuard = exports.InternalAuthGuard = exports.JwtAuthGuard = exports.RequestInfoService = exports.RequestContextService = exports.RabbitMQPublisher = exports.CookieService = exports.RedisService = exports.SessionService = exports.CoreJwtService = exports.CoreModule = void 0;
|
|
3
|
+
exports.createServiceClient = exports.apiClient = exports.AxiosClient = exports.DateUtils = exports.SUCCESS_RESPONSES = exports.SUCCESS_MESSAGES = exports.ERROR_RESPONSES = exports.ERROR_MESSAGES = exports.MESSAGES = exports.googleOAuthConfig = exports.corsConfig = exports.internalConfig = exports.cookieConfig = exports.RABBITMQ_ROUTING_KEYS = exports.rabbitmqConfig = exports.databaseConfig = exports.redisConfig = exports.jwtConfig = exports.AuditSubscriber = exports.JwtStrategy = exports.RequestContextInterceptor = exports.HttpExceptionFilter = exports.PaginationMetaDto = exports.PaginationResponseDto = exports.PaginationDto = exports.ApiResponseDto = exports.ANY_PERMISSIONS_KEY = exports.PERMISSIONS_KEY = exports.RequireAnyPermission = exports.RequirePermissions = exports.IS_PUBLIC_KEY = exports.Public = exports.CurrentUser = exports.PermissionGuard = exports.InternalAuthGuard = exports.JwtAuthGuard = exports.BasePaginationService = exports.RequestInfoService = exports.RequestContextService = exports.RabbitMQPublisher = exports.CookieService = exports.RedisService = exports.SessionService = exports.CoreJwtService = exports.CoreModule = void 0;
|
|
4
4
|
var core_module_1 = require("./core/core.module");
|
|
5
5
|
Object.defineProperty(exports, "CoreModule", { enumerable: true, get: function () { return core_module_1.CoreModule; } });
|
|
6
6
|
var jwt_service_1 = require("./core/services/jwt.service");
|
|
@@ -17,6 +17,8 @@ var request_context_service_1 = require("./core/services/request-context.service
|
|
|
17
17
|
Object.defineProperty(exports, "RequestContextService", { enumerable: true, get: function () { return request_context_service_1.RequestContextService; } });
|
|
18
18
|
var request_info_service_1 = require("./core/services/request-info.service");
|
|
19
19
|
Object.defineProperty(exports, "RequestInfoService", { enumerable: true, get: function () { return request_info_service_1.RequestInfoService; } });
|
|
20
|
+
var base_pagination_service_1 = require("./core/services/base-pagination.service");
|
|
21
|
+
Object.defineProperty(exports, "BasePaginationService", { enumerable: true, get: function () { return base_pagination_service_1.BasePaginationService; } });
|
|
20
22
|
var jwt_auth_guard_1 = require("./core/guards/jwt-auth.guard");
|
|
21
23
|
Object.defineProperty(exports, "JwtAuthGuard", { enumerable: true, get: function () { return jwt_auth_guard_1.JwtAuthGuard; } });
|
|
22
24
|
var internal_auth_guard_1 = require("./core/guards/internal-auth.guard");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAGnB,0DAA4D;AAAnD,6GAAA,cAAc,OAAA;AACvB,kEAAgF;AAAvE,iHAAA,cAAc,OAAA;AACvB,8DAA4D;AAAnD,6GAAA,YAAY,OAAA;AACrB,gEAGuC;AAFrC,+GAAA,aAAa,OAAA;AAGf,wFAA8E;AAArE,+HAAA,iBAAiB,OAAA;AAC1B,kFAGgD;AAF9C,gIAAA,qBAAqB,OAAA;AAGvB,4EAAyE;AAAhE,0HAAA,kBAAkB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAGnB,0DAA4D;AAAnD,6GAAA,cAAc,OAAA;AACvB,kEAAgF;AAAvE,iHAAA,cAAc,OAAA;AACvB,8DAA4D;AAAnD,6GAAA,YAAY,OAAA;AACrB,gEAGuC;AAFrC,+GAAA,aAAa,OAAA;AAGf,wFAA8E;AAArE,+HAAA,iBAAiB,OAAA;AAC1B,kFAGgD;AAF9C,gIAAA,qBAAqB,OAAA;AAGvB,4EAAyE;AAAhE,0HAAA,kBAAkB,OAAA;AAC3B,kFAA+E;AAAtE,gIAAA,qBAAqB,OAAA;AAG9B,8DAA2D;AAAlD,8GAAA,YAAY,OAAA;AACrB,wEAAqE;AAA5D,wHAAA,iBAAiB,OAAA;AAC1B,kEAAgE;AAAvD,mHAAA,eAAe,OAAA;AAGxB,kFAAsE;AAA7D,qHAAA,WAAW,OAAA;AACpB,sEAA0E;AAAjE,0GAAA,MAAM,OAAA;AAAE,iHAAA,aAAa,OAAA;AAC9B,gGAKwD;AAJtD,mIAAA,kBAAkB,OAAA;AAClB,qIAAA,oBAAoB,OAAA;AACpB,gIAAA,eAAe,OAAA;AACf,oIAAA,mBAAmB,OAAA;AAIrB,gEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,4DAImC;AAHjC,+GAAA,aAAa,OAAA;AACb,uHAAA,qBAAqB,OAAA;AACrB,mHAAA,iBAAiB,OAAA;AAInB,6EAA0E;AAAjE,4HAAA,mBAAmB,OAAA;AAG5B,8FAA2F;AAAlF,wIAAA,yBAAyB,OAAA;AAGlC,8DAA4D;AAAnD,2GAAA,WAAW,OAAA;AAGpB,uEAAqE;AAA5D,mHAAA,eAAe,OAAA;AAGxB,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAClB,qDAAmD;AAA1C,2GAAA,WAAW,OAAA;AACpB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,2DAAgF;AAAvE,iHAAA,cAAc,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAC9C,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,mEAAgE;AAAvD,wHAAA,iBAAiB,OAAA;AAG1B,oEAAyD;AAAhD,8GAAA,QAAQ,OAAA;AACjB,0EAK0C;AAJxC,uHAAA,cAAc,OAAA;AACd,wHAAA,eAAe,OAAA;AACf,yHAAA,gBAAgB,OAAA;AAChB,0HAAA,iBAAiB,OAAA;AAInB,gDAA8C;AAArC,uGAAA,SAAS,OAAA;AAGlB,qCAA0E;AAAjE,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
|