@fabx.vn/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +270 -0
- package/dist/config/cookie.config.d.ts +3 -0
- package/dist/config/cookie.config.js +7 -0
- package/dist/config/cookie.config.js.map +1 -0
- package/dist/config/cors.config.d.ts +6 -0
- package/dist/config/cors.config.js +15 -0
- package/dist/config/cors.config.js.map +1 -0
- package/dist/config/database.config.d.ts +13 -0
- package/dist/config/database.config.js +17 -0
- package/dist/config/database.config.js.map +1 -0
- package/dist/config/google-oauth.config.d.ts +6 -0
- package/dist/config/google-oauth.config.js +10 -0
- package/dist/config/google-oauth.config.js.map +1 -0
- package/dist/config/internal.config.d.ts +8 -0
- package/dist/config/internal.config.js +15 -0
- package/dist/config/internal.config.js.map +1 -0
- package/dist/config/jwt.config.d.ts +5 -0
- package/dist/config/jwt.config.js +9 -0
- package/dist/config/jwt.config.js.map +1 -0
- package/dist/config/rabbitmq.config.d.ts +19 -0
- package/dist/config/rabbitmq.config.js +25 -0
- package/dist/config/rabbitmq.config.js.map +1 -0
- package/dist/config/redis.config.d.ts +9 -0
- package/dist/config/redis.config.js +13 -0
- package/dist/config/redis.config.js.map +1 -0
- package/dist/constants/http-status.constants.d.ts +106 -0
- package/dist/constants/http-status.constants.js +110 -0
- package/dist/constants/http-status.constants.js.map +1 -0
- package/dist/constants/messages.constants.d.ts +112 -0
- package/dist/constants/messages.constants.js +116 -0
- package/dist/constants/messages.constants.js.map +1 -0
- package/dist/core/core.module.d.ts +2 -0
- package/dist/core/core.module.js +72 -0
- package/dist/core/core.module.js.map +1 -0
- package/dist/core/decorators/current-user.decorator.d.ts +1 -0
- package/dist/core/decorators/current-user.decorator.js +9 -0
- package/dist/core/decorators/current-user.decorator.js.map +1 -0
- package/dist/core/decorators/public.decorator.d.ts +2 -0
- package/dist/core/decorators/public.decorator.js +8 -0
- package/dist/core/decorators/public.decorator.js.map +1 -0
- package/dist/core/decorators/require-permissions.decorator.d.ts +4 -0
- package/dist/core/decorators/require-permissions.decorator.js +11 -0
- package/dist/core/decorators/require-permissions.decorator.js.map +1 -0
- package/dist/core/dtos/api-response.dto.d.ts +10 -0
- package/dist/core/dtos/api-response.dto.js +22 -0
- package/dist/core/dtos/api-response.dto.js.map +1 -0
- package/dist/core/dtos/pagination.dto.d.ts +17 -0
- package/dist/core/dtos/pagination.dto.js +61 -0
- package/dist/core/dtos/pagination.dto.js.map +1 -0
- package/dist/core/filters/http-exception.filter.d.ts +5 -0
- package/dist/core/filters/http-exception.filter.js +47 -0
- package/dist/core/filters/http-exception.filter.js.map +1 -0
- package/dist/core/guards/internal-auth.guard.d.ts +7 -0
- package/dist/core/guards/internal-auth.guard.js +42 -0
- package/dist/core/guards/internal-auth.guard.js.map +1 -0
- package/dist/core/guards/jwt-auth.guard.d.ts +12 -0
- package/dist/core/guards/jwt-auth.guard.js +56 -0
- package/dist/core/guards/jwt-auth.guard.js.map +1 -0
- package/dist/core/guards/permission.guard.d.ts +9 -0
- package/dist/core/guards/permission.guard.js +71 -0
- package/dist/core/guards/permission.guard.js.map +1 -0
- package/dist/core/interceptors/request-context.interceptor.d.ts +8 -0
- package/dist/core/interceptors/request-context.interceptor.js +39 -0
- package/dist/core/interceptors/request-context.interceptor.js.map +1 -0
- package/dist/core/services/cache.service.d.ts +13 -0
- package/dist/core/services/cache.service.js +51 -0
- package/dist/core/services/cache.service.js.map +1 -0
- package/dist/core/services/cookie.service.d.ts +13 -0
- package/dist/core/services/cookie.service.js +50 -0
- package/dist/core/services/cookie.service.js.map +1 -0
- package/dist/core/services/jwt.service.d.ts +37 -0
- package/dist/core/services/jwt.service.js +187 -0
- package/dist/core/services/jwt.service.js.map +1 -0
- package/dist/core/services/permission.service.d.ts +23 -0
- package/dist/core/services/permission.service.js +83 -0
- package/dist/core/services/permission.service.js.map +1 -0
- package/dist/core/services/rabbitmq-publisher.service.d.ts +9 -0
- package/dist/core/services/rabbitmq-publisher.service.js +57 -0
- package/dist/core/services/rabbitmq-publisher.service.js.map +1 -0
- package/dist/core/services/redis.service.d.ts +18 -0
- package/dist/core/services/redis.service.js +66 -0
- package/dist/core/services/redis.service.js.map +1 -0
- package/dist/core/services/request-context.service.d.ts +18 -0
- package/dist/core/services/request-context.service.js +40 -0
- package/dist/core/services/request-context.service.js.map +1 -0
- package/dist/core/services/request-info.service.d.ts +8 -0
- package/dist/core/services/request-info.service.js +32 -0
- package/dist/core/services/request-info.service.js.map +1 -0
- package/dist/core/services/session.service.d.ts +21 -0
- package/dist/core/services/session.service.js +70 -0
- package/dist/core/services/session.service.js.map +1 -0
- package/dist/core/strategies/jwt.strategy.d.ts +7 -0
- package/dist/core/strategies/jwt.strategy.js +38 -0
- package/dist/core/strategies/jwt.strategy.js.map +1 -0
- package/dist/core/subscribers/audit.subscriber.d.ts +8 -0
- package/dist/core/subscribers/audit.subscriber.js +40 -0
- package/dist/core/subscribers/audit.subscriber.js.map +1 -0
- package/dist/core.module.d.ts +2 -0
- package/dist/core.module.js +72 -0
- package/dist/core.module.js.map +1 -0
- package/dist/decorators/current-user.decorator.d.ts +1 -0
- package/dist/decorators/current-user.decorator.js +9 -0
- package/dist/decorators/current-user.decorator.js.map +1 -0
- package/dist/decorators/public.decorator.d.ts +2 -0
- package/dist/decorators/public.decorator.js +8 -0
- package/dist/decorators/public.decorator.js.map +1 -0
- package/dist/decorators/require-permissions.decorator.d.ts +4 -0
- package/dist/decorators/require-permissions.decorator.js +11 -0
- package/dist/decorators/require-permissions.decorator.js.map +1 -0
- package/dist/dtos/api-response.dto.d.ts +10 -0
- package/dist/dtos/api-response.dto.js +22 -0
- package/dist/dtos/api-response.dto.js.map +1 -0
- package/dist/dtos/pagination.dto.d.ts +17 -0
- package/dist/dtos/pagination.dto.js +61 -0
- package/dist/dtos/pagination.dto.js.map +1 -0
- package/dist/filters/http-exception.filter.d.ts +5 -0
- package/dist/filters/http-exception.filter.js +47 -0
- package/dist/filters/http-exception.filter.js.map +1 -0
- package/dist/guards/internal-auth.guard.d.ts +7 -0
- package/dist/guards/internal-auth.guard.js +42 -0
- package/dist/guards/internal-auth.guard.js.map +1 -0
- package/dist/guards/jwt-auth.guard.d.ts +12 -0
- package/dist/guards/jwt-auth.guard.js +56 -0
- package/dist/guards/jwt-auth.guard.js.map +1 -0
- package/dist/guards/permission.guard.d.ts +9 -0
- package/dist/guards/permission.guard.js +71 -0
- package/dist/guards/permission.guard.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/request-context.interceptor.d.ts +8 -0
- package/dist/interceptors/request-context.interceptor.js +39 -0
- package/dist/interceptors/request-context.interceptor.js.map +1 -0
- package/dist/libs/axios/axios-client.d.ts +8 -0
- package/dist/libs/axios/axios-client.js +61 -0
- package/dist/libs/axios/axios-client.js.map +1 -0
- package/dist/libs/axios/index.d.ts +1 -0
- package/dist/libs/axios/index.js +8 -0
- package/dist/libs/axios/index.js.map +1 -0
- package/dist/services/cookie.service.d.ts +13 -0
- package/dist/services/cookie.service.js +50 -0
- package/dist/services/cookie.service.js.map +1 -0
- package/dist/services/jwt.service.d.ts +37 -0
- package/dist/services/jwt.service.js +187 -0
- package/dist/services/jwt.service.js.map +1 -0
- package/dist/services/rabbitmq-publisher.service.d.ts +9 -0
- package/dist/services/rabbitmq-publisher.service.js +57 -0
- package/dist/services/rabbitmq-publisher.service.js.map +1 -0
- package/dist/services/redis.service.d.ts +18 -0
- package/dist/services/redis.service.js +66 -0
- package/dist/services/redis.service.js.map +1 -0
- package/dist/services/request-context.service.d.ts +18 -0
- package/dist/services/request-context.service.js +40 -0
- package/dist/services/request-context.service.js.map +1 -0
- package/dist/services/request-info.service.d.ts +8 -0
- package/dist/services/request-info.service.js +32 -0
- package/dist/services/request-info.service.js.map +1 -0
- package/dist/services/session.service.d.ts +21 -0
- package/dist/services/session.service.js +70 -0
- package/dist/services/session.service.js.map +1 -0
- package/dist/strategies/jwt.strategy.d.ts +7 -0
- package/dist/strategies/jwt.strategy.js +38 -0
- package/dist/strategies/jwt.strategy.js.map +1 -0
- package/dist/subscribers/audit.subscriber.d.ts +8 -0
- package/dist/subscribers/audit.subscriber.js +40 -0
- package/dist/subscribers/audit.subscriber.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/date.utils.d.ts +4 -0
- package/dist/utils/date.utils.js +52 -0
- package/dist/utils/date.utils.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,56 @@
|
|
|
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.JwtAuthGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const passport_1 = require("@nestjs/passport");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
16
|
+
const jwt_service_1 = require("../services/jwt.service");
|
|
17
|
+
const cookie_service_1 = require("../services/cookie.service");
|
|
18
|
+
const messages_constants_1 = require("../constants/messages.constants");
|
|
19
|
+
let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)("jwt") {
|
|
20
|
+
constructor(reflector, coreJwtService) {
|
|
21
|
+
super();
|
|
22
|
+
this.reflector = reflector;
|
|
23
|
+
this.coreJwtService = coreJwtService;
|
|
24
|
+
}
|
|
25
|
+
async canActivate(context) {
|
|
26
|
+
const isPublic = this.reflector.getAllAndOverride("isPublic", [
|
|
27
|
+
context.getHandler(),
|
|
28
|
+
context.getClass(),
|
|
29
|
+
]);
|
|
30
|
+
if (isPublic)
|
|
31
|
+
return true;
|
|
32
|
+
const request = context.switchToHttp().getRequest();
|
|
33
|
+
const tokens = cookie_service_1.CookieService.extractTokensFromCookie(request);
|
|
34
|
+
if (!tokens?.accessToken) {
|
|
35
|
+
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.NO_TOKEN);
|
|
36
|
+
}
|
|
37
|
+
const currentUser = await this.coreJwtService.getCurrentUser(tokens.accessToken);
|
|
38
|
+
if (!currentUser) {
|
|
39
|
+
throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
40
|
+
}
|
|
41
|
+
request.user = currentUser;
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
handleRequest(err, user, info) {
|
|
45
|
+
if (err || !user)
|
|
46
|
+
new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
47
|
+
return user;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.JwtAuthGuard = JwtAuthGuard;
|
|
51
|
+
exports.JwtAuthGuard = JwtAuthGuard = __decorate([
|
|
52
|
+
(0, common_1.Injectable)(),
|
|
53
|
+
__metadata("design:paramtypes", [core_1.Reflector,
|
|
54
|
+
jwt_service_1.CoreJwtService])
|
|
55
|
+
], JwtAuthGuard);
|
|
56
|
+
//# sourceMappingURL=jwt-auth.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAIwB;AACxB,+CAA6C;AAC7C,uCAAyC;AACzC,yDAAyD;AACzD,+DAA2D;AAC3D,wEAA2D;AAGpD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAChD,YACU,SAAoB,EACpB,cAA8B;QAEtC,KAAK,EAAE,CAAC;QAHA,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;IAGxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,UAAU,EAAE;YACrE,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;QAGD,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAC1C,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1CY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAGU,gBAAS;QACJ,4BAAc;GAH7B,YAAY,CA0CxB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CanActivate, ExecutionContext } from "@nestjs/common";
|
|
2
|
+
import { Reflector } from "@nestjs/core";
|
|
3
|
+
import { CoreJwtService } from "../services/jwt.service";
|
|
4
|
+
export declare class PermissionGuard implements CanActivate {
|
|
5
|
+
private reflector;
|
|
6
|
+
private coreJwtService;
|
|
7
|
+
constructor(reflector: Reflector, coreJwtService: CoreJwtService);
|
|
8
|
+
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
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.PermissionGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const require_permissions_decorator_1 = require("../decorators/require-permissions.decorator");
|
|
16
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
17
|
+
const jwt_service_1 = require("../services/jwt.service");
|
|
18
|
+
const cookie_service_1 = require("../services/cookie.service");
|
|
19
|
+
const messages_constants_1 = require("../constants/messages.constants");
|
|
20
|
+
let PermissionGuard = class PermissionGuard {
|
|
21
|
+
constructor(reflector, coreJwtService) {
|
|
22
|
+
this.reflector = reflector;
|
|
23
|
+
this.coreJwtService = coreJwtService;
|
|
24
|
+
}
|
|
25
|
+
async canActivate(context) {
|
|
26
|
+
const request = context.switchToHttp().getRequest();
|
|
27
|
+
const isPublic = this.reflector.getAllAndOverride(public_decorator_1.IS_PUBLIC_KEY, [
|
|
28
|
+
context.getHandler(),
|
|
29
|
+
context.getClass(),
|
|
30
|
+
]);
|
|
31
|
+
if (isPublic)
|
|
32
|
+
return true;
|
|
33
|
+
const tokens = cookie_service_1.CookieService.extractTokensFromCookie(request);
|
|
34
|
+
if (!tokens)
|
|
35
|
+
throw new common_1.ForbiddenException(messages_constants_1.MESSAGES.AUTH.NO_TOKEN);
|
|
36
|
+
try {
|
|
37
|
+
const currentUser = await this.coreJwtService.getCurrentUser(tokens.accessToken);
|
|
38
|
+
if (!currentUser)
|
|
39
|
+
throw new common_1.ForbiddenException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
40
|
+
const userPermissions = currentUser.permissions || [];
|
|
41
|
+
const requiredPermissions = this.reflector.getAllAndOverride(require_permissions_decorator_1.PERMISSIONS_KEY, [context.getHandler(), context.getClass()]);
|
|
42
|
+
const anyPermissions = this.reflector.getAllAndOverride(require_permissions_decorator_1.ANY_PERMISSIONS_KEY, [context.getHandler(), context.getClass()]);
|
|
43
|
+
if ((!requiredPermissions || requiredPermissions.length === 0) &&
|
|
44
|
+
(!anyPermissions || anyPermissions.length === 0))
|
|
45
|
+
return true;
|
|
46
|
+
if (requiredPermissions && requiredPermissions.length > 0) {
|
|
47
|
+
const hasAllPermissions = requiredPermissions.every((permission) => userPermissions.includes(permission));
|
|
48
|
+
if (!hasAllPermissions)
|
|
49
|
+
throw new common_1.ForbiddenException(messages_constants_1.MESSAGES.AUTH.INSUFFICIENT_PERMISSIONS);
|
|
50
|
+
}
|
|
51
|
+
if (anyPermissions && anyPermissions.length > 0) {
|
|
52
|
+
const hasAnyPermission = anyPermissions.some((permission) => userPermissions.includes(permission));
|
|
53
|
+
if (!hasAnyPermission)
|
|
54
|
+
throw new common_1.ForbiddenException(messages_constants_1.MESSAGES.AUTH.INSUFFICIENT_PERMISSIONS);
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof common_1.ForbiddenException)
|
|
60
|
+
throw error;
|
|
61
|
+
throw new common_1.ForbiddenException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.PermissionGuard = PermissionGuard;
|
|
66
|
+
exports.PermissionGuard = PermissionGuard = __decorate([
|
|
67
|
+
(0, common_1.Injectable)(),
|
|
68
|
+
__metadata("design:paramtypes", [core_1.Reflector,
|
|
69
|
+
jwt_service_1.CoreJwtService])
|
|
70
|
+
], PermissionGuard);
|
|
71
|
+
//# sourceMappingURL=permission.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../src/guards/permission.guard.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export { CoreModule } from "./core.module";
|
|
2
|
+
export { CoreJwtService } from "./services/jwt.service";
|
|
3
|
+
export { SessionService, CurrentUserDto } from "./services/session.service";
|
|
4
|
+
export { RedisService } from "./services/redis.service";
|
|
5
|
+
export { CookieService, ExtractedTokensDto } from "./services/cookie.service";
|
|
6
|
+
export { RabbitMQPublisher } from "./services/rabbitmq-publisher.service";
|
|
7
|
+
export { RequestContextService, RequestContext, } from "./services/request-context.service";
|
|
8
|
+
export { RequestInfoService } from "./services/request-info.service";
|
|
9
|
+
export { JwtAuthGuard } from "./guards/jwt-auth.guard";
|
|
10
|
+
export { InternalAuthGuard } from "./guards/internal-auth.guard";
|
|
11
|
+
export { PermissionGuard } from "./guards/permission.guard";
|
|
12
|
+
export { CurrentUser } from "./decorators/current-user.decorator";
|
|
13
|
+
export { Public, IS_PUBLIC_KEY } from "./decorators/public.decorator";
|
|
14
|
+
export { RequirePermissions, RequireAnyPermission, PERMISSIONS_KEY, ANY_PERMISSIONS_KEY, } from "./decorators/require-permissions.decorator";
|
|
15
|
+
export { ApiResponseDto } from "./dtos/api-response.dto";
|
|
16
|
+
export { PaginationDto, PaginationResponseDto, PaginationMetaDto, } from "./dtos/pagination.dto";
|
|
17
|
+
export { HttpExceptionFilter } from "./filters/http-exception.filter";
|
|
18
|
+
export { RequestContextInterceptor } from "./interceptors/request-context.interceptor";
|
|
19
|
+
export { JwtStrategy } from "./strategies/jwt.strategy";
|
|
20
|
+
export { AuditSubscriber } from "./subscribers/audit.subscriber";
|
|
21
|
+
export { jwtConfig } from "./config/jwt.config";
|
|
22
|
+
export { redisConfig } from "./config/redis.config";
|
|
23
|
+
export { databaseConfig } from "./config/database.config";
|
|
24
|
+
export { rabbitmqConfig, RABBITMQ_ROUTING_KEYS, } from "./config/rabbitmq.config";
|
|
25
|
+
export { cookieConfig } from "./config/cookie.config";
|
|
26
|
+
export { internalConfig } from "./config/internal.config";
|
|
27
|
+
export { corsConfig } from "./config/cors.config";
|
|
28
|
+
export { googleOAuthConfig } from "./config/google-oauth.config";
|
|
29
|
+
export { MESSAGES } from "./constants/messages.constants";
|
|
30
|
+
export { ERROR_MESSAGES, ERROR_RESPONSES, SUCCESS_MESSAGES, SUCCESS_RESPONSES, } from "./constants/http-status.constants";
|
|
31
|
+
export { DateUtils } from "./utils/date.utils";
|
|
32
|
+
export { AxiosClient, apiClient, createServiceClient } from "./libs/axios";
|
|
33
|
+
export type { JwtTokenData, JwtValidationResult } from "./services/jwt.service";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
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;
|
|
4
|
+
var core_module_1 = require("./core.module");
|
|
5
|
+
Object.defineProperty(exports, "CoreModule", { enumerable: true, get: function () { return core_module_1.CoreModule; } });
|
|
6
|
+
var jwt_service_1 = require("./services/jwt.service");
|
|
7
|
+
Object.defineProperty(exports, "CoreJwtService", { enumerable: true, get: function () { return jwt_service_1.CoreJwtService; } });
|
|
8
|
+
var session_service_1 = require("./services/session.service");
|
|
9
|
+
Object.defineProperty(exports, "SessionService", { enumerable: true, get: function () { return session_service_1.SessionService; } });
|
|
10
|
+
var redis_service_1 = require("./services/redis.service");
|
|
11
|
+
Object.defineProperty(exports, "RedisService", { enumerable: true, get: function () { return redis_service_1.RedisService; } });
|
|
12
|
+
var cookie_service_1 = require("./services/cookie.service");
|
|
13
|
+
Object.defineProperty(exports, "CookieService", { enumerable: true, get: function () { return cookie_service_1.CookieService; } });
|
|
14
|
+
var rabbitmq_publisher_service_1 = require("./services/rabbitmq-publisher.service");
|
|
15
|
+
Object.defineProperty(exports, "RabbitMQPublisher", { enumerable: true, get: function () { return rabbitmq_publisher_service_1.RabbitMQPublisher; } });
|
|
16
|
+
var request_context_service_1 = require("./services/request-context.service");
|
|
17
|
+
Object.defineProperty(exports, "RequestContextService", { enumerable: true, get: function () { return request_context_service_1.RequestContextService; } });
|
|
18
|
+
var request_info_service_1 = require("./services/request-info.service");
|
|
19
|
+
Object.defineProperty(exports, "RequestInfoService", { enumerable: true, get: function () { return request_info_service_1.RequestInfoService; } });
|
|
20
|
+
var jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
|
|
21
|
+
Object.defineProperty(exports, "JwtAuthGuard", { enumerable: true, get: function () { return jwt_auth_guard_1.JwtAuthGuard; } });
|
|
22
|
+
var internal_auth_guard_1 = require("./guards/internal-auth.guard");
|
|
23
|
+
Object.defineProperty(exports, "InternalAuthGuard", { enumerable: true, get: function () { return internal_auth_guard_1.InternalAuthGuard; } });
|
|
24
|
+
var permission_guard_1 = require("./guards/permission.guard");
|
|
25
|
+
Object.defineProperty(exports, "PermissionGuard", { enumerable: true, get: function () { return permission_guard_1.PermissionGuard; } });
|
|
26
|
+
var current_user_decorator_1 = require("./decorators/current-user.decorator");
|
|
27
|
+
Object.defineProperty(exports, "CurrentUser", { enumerable: true, get: function () { return current_user_decorator_1.CurrentUser; } });
|
|
28
|
+
var public_decorator_1 = require("./decorators/public.decorator");
|
|
29
|
+
Object.defineProperty(exports, "Public", { enumerable: true, get: function () { return public_decorator_1.Public; } });
|
|
30
|
+
Object.defineProperty(exports, "IS_PUBLIC_KEY", { enumerable: true, get: function () { return public_decorator_1.IS_PUBLIC_KEY; } });
|
|
31
|
+
var require_permissions_decorator_1 = require("./decorators/require-permissions.decorator");
|
|
32
|
+
Object.defineProperty(exports, "RequirePermissions", { enumerable: true, get: function () { return require_permissions_decorator_1.RequirePermissions; } });
|
|
33
|
+
Object.defineProperty(exports, "RequireAnyPermission", { enumerable: true, get: function () { return require_permissions_decorator_1.RequireAnyPermission; } });
|
|
34
|
+
Object.defineProperty(exports, "PERMISSIONS_KEY", { enumerable: true, get: function () { return require_permissions_decorator_1.PERMISSIONS_KEY; } });
|
|
35
|
+
Object.defineProperty(exports, "ANY_PERMISSIONS_KEY", { enumerable: true, get: function () { return require_permissions_decorator_1.ANY_PERMISSIONS_KEY; } });
|
|
36
|
+
var api_response_dto_1 = require("./dtos/api-response.dto");
|
|
37
|
+
Object.defineProperty(exports, "ApiResponseDto", { enumerable: true, get: function () { return api_response_dto_1.ApiResponseDto; } });
|
|
38
|
+
var pagination_dto_1 = require("./dtos/pagination.dto");
|
|
39
|
+
Object.defineProperty(exports, "PaginationDto", { enumerable: true, get: function () { return pagination_dto_1.PaginationDto; } });
|
|
40
|
+
Object.defineProperty(exports, "PaginationResponseDto", { enumerable: true, get: function () { return pagination_dto_1.PaginationResponseDto; } });
|
|
41
|
+
Object.defineProperty(exports, "PaginationMetaDto", { enumerable: true, get: function () { return pagination_dto_1.PaginationMetaDto; } });
|
|
42
|
+
var http_exception_filter_1 = require("./filters/http-exception.filter");
|
|
43
|
+
Object.defineProperty(exports, "HttpExceptionFilter", { enumerable: true, get: function () { return http_exception_filter_1.HttpExceptionFilter; } });
|
|
44
|
+
var request_context_interceptor_1 = require("./interceptors/request-context.interceptor");
|
|
45
|
+
Object.defineProperty(exports, "RequestContextInterceptor", { enumerable: true, get: function () { return request_context_interceptor_1.RequestContextInterceptor; } });
|
|
46
|
+
var jwt_strategy_1 = require("./strategies/jwt.strategy");
|
|
47
|
+
Object.defineProperty(exports, "JwtStrategy", { enumerable: true, get: function () { return jwt_strategy_1.JwtStrategy; } });
|
|
48
|
+
var audit_subscriber_1 = require("./subscribers/audit.subscriber");
|
|
49
|
+
Object.defineProperty(exports, "AuditSubscriber", { enumerable: true, get: function () { return audit_subscriber_1.AuditSubscriber; } });
|
|
50
|
+
var jwt_config_1 = require("./config/jwt.config");
|
|
51
|
+
Object.defineProperty(exports, "jwtConfig", { enumerable: true, get: function () { return jwt_config_1.jwtConfig; } });
|
|
52
|
+
var redis_config_1 = require("./config/redis.config");
|
|
53
|
+
Object.defineProperty(exports, "redisConfig", { enumerable: true, get: function () { return redis_config_1.redisConfig; } });
|
|
54
|
+
var database_config_1 = require("./config/database.config");
|
|
55
|
+
Object.defineProperty(exports, "databaseConfig", { enumerable: true, get: function () { return database_config_1.databaseConfig; } });
|
|
56
|
+
var rabbitmq_config_1 = require("./config/rabbitmq.config");
|
|
57
|
+
Object.defineProperty(exports, "rabbitmqConfig", { enumerable: true, get: function () { return rabbitmq_config_1.rabbitmqConfig; } });
|
|
58
|
+
Object.defineProperty(exports, "RABBITMQ_ROUTING_KEYS", { enumerable: true, get: function () { return rabbitmq_config_1.RABBITMQ_ROUTING_KEYS; } });
|
|
59
|
+
var cookie_config_1 = require("./config/cookie.config");
|
|
60
|
+
Object.defineProperty(exports, "cookieConfig", { enumerable: true, get: function () { return cookie_config_1.cookieConfig; } });
|
|
61
|
+
var internal_config_1 = require("./config/internal.config");
|
|
62
|
+
Object.defineProperty(exports, "internalConfig", { enumerable: true, get: function () { return internal_config_1.internalConfig; } });
|
|
63
|
+
var cors_config_1 = require("./config/cors.config");
|
|
64
|
+
Object.defineProperty(exports, "corsConfig", { enumerable: true, get: function () { return cors_config_1.corsConfig; } });
|
|
65
|
+
var google_oauth_config_1 = require("./config/google-oauth.config");
|
|
66
|
+
Object.defineProperty(exports, "googleOAuthConfig", { enumerable: true, get: function () { return google_oauth_config_1.googleOAuthConfig; } });
|
|
67
|
+
var messages_constants_1 = require("./constants/messages.constants");
|
|
68
|
+
Object.defineProperty(exports, "MESSAGES", { enumerable: true, get: function () { return messages_constants_1.MESSAGES; } });
|
|
69
|
+
var http_status_constants_1 = require("./constants/http-status.constants");
|
|
70
|
+
Object.defineProperty(exports, "ERROR_MESSAGES", { enumerable: true, get: function () { return http_status_constants_1.ERROR_MESSAGES; } });
|
|
71
|
+
Object.defineProperty(exports, "ERROR_RESPONSES", { enumerable: true, get: function () { return http_status_constants_1.ERROR_RESPONSES; } });
|
|
72
|
+
Object.defineProperty(exports, "SUCCESS_MESSAGES", { enumerable: true, get: function () { return http_status_constants_1.SUCCESS_MESSAGES; } });
|
|
73
|
+
Object.defineProperty(exports, "SUCCESS_RESPONSES", { enumerable: true, get: function () { return http_status_constants_1.SUCCESS_RESPONSES; } });
|
|
74
|
+
var date_utils_1 = require("./utils/date.utils");
|
|
75
|
+
Object.defineProperty(exports, "DateUtils", { enumerable: true, get: function () { return date_utils_1.DateUtils; } });
|
|
76
|
+
var axios_1 = require("./libs/axios");
|
|
77
|
+
Object.defineProperty(exports, "AxiosClient", { enumerable: true, get: function () { return axios_1.AxiosClient; } });
|
|
78
|
+
Object.defineProperty(exports, "apiClient", { enumerable: true, get: function () { return axios_1.apiClient; } });
|
|
79
|
+
Object.defineProperty(exports, "createServiceClient", { enumerable: true, get: function () { return axios_1.createServiceClient; } });
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,sDAAwD;AAA/C,6GAAA,cAAc,OAAA;AACvB,8DAA4E;AAAnE,iHAAA,cAAc,OAAA;AACvB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,4DAA8E;AAArE,+GAAA,aAAa,OAAA;AACtB,oFAA0E;AAAjE,+HAAA,iBAAiB,OAAA;AAC1B,8EAG4C;AAF1C,gIAAA,qBAAqB,OAAA;AAGvB,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAG3B,0DAAuD;AAA9C,8GAAA,YAAY,OAAA;AACrB,oEAAiE;AAAxD,wHAAA,iBAAiB,OAAA;AAC1B,8DAA4D;AAAnD,mHAAA,eAAe,OAAA;AAGxB,8EAAkE;AAAzD,qHAAA,WAAW,OAAA;AACpB,kEAAsE;AAA7D,0GAAA,MAAM,OAAA;AAAE,iHAAA,aAAa,OAAA;AAC9B,4FAKoD;AAJlD,mIAAA,kBAAkB,OAAA;AAClB,qIAAA,oBAAoB,OAAA;AACpB,gIAAA,eAAe,OAAA;AACf,oIAAA,mBAAmB,OAAA;AAIrB,4DAAyD;AAAhD,kHAAA,cAAc,OAAA;AACvB,wDAI+B;AAH7B,+GAAA,aAAa,OAAA;AACb,uHAAA,qBAAqB,OAAA;AACrB,mHAAA,iBAAiB,OAAA;AAInB,yEAAsE;AAA7D,4HAAA,mBAAmB,OAAA;AAG5B,0FAAuF;AAA9E,wIAAA,yBAAyB,OAAA;AAGlC,0DAAwD;AAA/C,2GAAA,WAAW,OAAA;AAGpB,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AAGxB,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAClB,sDAAoD;AAA3C,2GAAA,WAAW,OAAA;AACpB,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,4DAGkC;AAFhC,iHAAA,cAAc,OAAA;AACd,wHAAA,qBAAqB,OAAA;AAEvB,wDAAsD;AAA7C,6GAAA,YAAY,OAAA;AACrB,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,oDAAkD;AAAzC,yGAAA,UAAU,OAAA;AACnB,oEAAiE;AAAxD,wHAAA,iBAAiB,OAAA;AAG1B,qEAA0D;AAAjD,8GAAA,QAAQ,OAAA;AACjB,2EAK2C;AAJzC,uHAAA,cAAc,OAAA;AACd,wHAAA,eAAe,OAAA;AACf,yHAAA,gBAAgB,OAAA;AAChB,0HAAA,iBAAiB,OAAA;AAInB,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAGlB,sCAA2E;AAAlE,oGAAA,WAAW,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from "@nestjs/common";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { RequestInfoService } from "../services/request-info.service";
|
|
4
|
+
export declare class RequestContextInterceptor implements NestInterceptor {
|
|
5
|
+
private requestInfoService;
|
|
6
|
+
constructor(requestInfoService: RequestInfoService);
|
|
7
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.RequestContextInterceptor = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const request_context_service_1 = require("../services/request-context.service");
|
|
15
|
+
const request_info_service_1 = require("../services/request-info.service");
|
|
16
|
+
let RequestContextInterceptor = class RequestContextInterceptor {
|
|
17
|
+
constructor(requestInfoService) {
|
|
18
|
+
this.requestInfoService = requestInfoService;
|
|
19
|
+
}
|
|
20
|
+
intercept(context, next) {
|
|
21
|
+
const request = context.switchToHttp().getRequest();
|
|
22
|
+
const user = request.user;
|
|
23
|
+
const requestInfo = this.requestInfoService.getRequestInfo(request);
|
|
24
|
+
const requestContext = {
|
|
25
|
+
user,
|
|
26
|
+
requestId: request.headers["x-request-id"] ||
|
|
27
|
+
Math.random().toString(36).substring(7),
|
|
28
|
+
ipAddress: requestInfo.ipAddress,
|
|
29
|
+
userAgent: requestInfo.userAgent,
|
|
30
|
+
};
|
|
31
|
+
return request_context_service_1.RequestContextService.run(requestContext, () => next.handle());
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.RequestContextInterceptor = RequestContextInterceptor;
|
|
35
|
+
exports.RequestContextInterceptor = RequestContextInterceptor = __decorate([
|
|
36
|
+
(0, common_1.Injectable)(),
|
|
37
|
+
__metadata("design:paramtypes", [request_info_service_1.RequestInfoService])
|
|
38
|
+
], RequestContextInterceptor);
|
|
39
|
+
//# sourceMappingURL=request-context.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/request-context.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AAExB,iFAA4E;AAC5E,2EAAsE;AAG/D,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAAoB,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAE9D,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAG1B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG;YACrB,IAAI;YACJ,SAAS,EACP,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC/B,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,SAAS,EAAE,WAAW,CAAC,SAAS;SACjC,CAAC;QAEF,OAAO,+CAAqB,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AArBY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAE6B,yCAAkB;GAD/C,yBAAyB,CAqBrC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
export declare class AxiosClient {
|
|
3
|
+
private static instance;
|
|
4
|
+
static getInstance(): AxiosInstance;
|
|
5
|
+
static createInstance(baseURL?: string, timeout?: number, headers?: Record<string, string>): AxiosInstance;
|
|
6
|
+
}
|
|
7
|
+
export declare const apiClient: AxiosInstance;
|
|
8
|
+
export declare function createServiceClient(serviceName: string, baseURL: string, defaultHeaders?: Record<string, string>): AxiosInstance;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.apiClient = exports.AxiosClient = void 0;
|
|
4
|
+
exports.createServiceClient = createServiceClient;
|
|
5
|
+
const axios_1 = require("axios");
|
|
6
|
+
class AxiosClient {
|
|
7
|
+
static getInstance() {
|
|
8
|
+
if (!AxiosClient.instance) {
|
|
9
|
+
AxiosClient.instance = axios_1.default.create();
|
|
10
|
+
AxiosClient.instance.interceptors.response.use((response) => {
|
|
11
|
+
if (response.data && response.data.data) {
|
|
12
|
+
response.data = response.data.data;
|
|
13
|
+
}
|
|
14
|
+
return response;
|
|
15
|
+
}, (error) => {
|
|
16
|
+
return Promise.reject(error);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return AxiosClient.instance;
|
|
20
|
+
}
|
|
21
|
+
static createInstance(baseURL, timeout = 10000, headers = {}) {
|
|
22
|
+
const instance = axios_1.default.create({
|
|
23
|
+
baseURL,
|
|
24
|
+
timeout,
|
|
25
|
+
headers: {
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
...headers,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
instance.interceptors.response.use((response) => {
|
|
31
|
+
if (response.data && response.data.data) {
|
|
32
|
+
response.data = response.data.data;
|
|
33
|
+
}
|
|
34
|
+
return response;
|
|
35
|
+
}, (error) => {
|
|
36
|
+
return Promise.reject(error);
|
|
37
|
+
});
|
|
38
|
+
return instance;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.AxiosClient = AxiosClient;
|
|
42
|
+
exports.apiClient = AxiosClient.getInstance();
|
|
43
|
+
function createServiceClient(serviceName, baseURL, defaultHeaders = {}) {
|
|
44
|
+
const client = AxiosClient.createInstance(baseURL, 10000, defaultHeaders);
|
|
45
|
+
client.interceptors.request.use((config) => {
|
|
46
|
+
console.log(`[${serviceName}] Making request to: ${config.method?.toUpperCase()} ${config.url}`);
|
|
47
|
+
return config;
|
|
48
|
+
}, (error) => {
|
|
49
|
+
console.error(`[${serviceName}] Request error:`, error);
|
|
50
|
+
return Promise.reject(error);
|
|
51
|
+
});
|
|
52
|
+
client.interceptors.response.use((response) => {
|
|
53
|
+
console.log(`[${serviceName}] Response received: ${response.status} ${response.statusText}`);
|
|
54
|
+
return response;
|
|
55
|
+
}, (error) => {
|
|
56
|
+
console.error(`[${serviceName}] Response error:`, error.response?.status, error.message);
|
|
57
|
+
return Promise.reject(error);
|
|
58
|
+
});
|
|
59
|
+
return client;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=axios-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-client.js","sourceRoot":"","sources":["../../../src/libs/axios/axios-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AxiosClient, apiClient, createServiceClient } from "./axios-client";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createServiceClient = exports.apiClient = exports.AxiosClient = void 0;
|
|
4
|
+
var axios_client_1 = require("./axios-client");
|
|
5
|
+
Object.defineProperty(exports, "AxiosClient", { enumerable: true, get: function () { return axios_client_1.AxiosClient; } });
|
|
6
|
+
Object.defineProperty(exports, "apiClient", { enumerable: true, get: function () { return axios_client_1.apiClient; } });
|
|
7
|
+
Object.defineProperty(exports, "createServiceClient", { enumerable: true, get: function () { return axios_client_1.createServiceClient; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/axios/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6E;AAApE,2GAAA,WAAW,OAAA;AAAE,yGAAA,SAAS,OAAA;AAAE,mHAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Request, Response } from "express";
|
|
2
|
+
export interface ExtractedTokensDto {
|
|
3
|
+
accessToken?: string;
|
|
4
|
+
refreshToken?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class CookieService {
|
|
7
|
+
private static readonly COOKIE_NAME;
|
|
8
|
+
private static readonly COOKIE_OPTIONS;
|
|
9
|
+
static setAuthCookies(res: Response, accessToken: string, refreshToken: string, refreshTokenExpiresAt: Date): void;
|
|
10
|
+
static clearAuthCookies(res: Response): void;
|
|
11
|
+
static setRefreshedCookies(res: Response, accessToken: string, refreshToken: string, refreshTokenExpiresAt: Date): void;
|
|
12
|
+
static extractTokensFromCookie(request: Request): ExtractedTokensDto | undefined;
|
|
13
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CookieService = void 0;
|
|
4
|
+
const cookie_config_1 = require("../config/cookie.config");
|
|
5
|
+
class CookieService {
|
|
6
|
+
static setAuthCookies(res, accessToken, refreshToken, refreshTokenExpiresAt) {
|
|
7
|
+
const authData = {
|
|
8
|
+
accessToken,
|
|
9
|
+
refreshToken,
|
|
10
|
+
timestamp: Date.now(),
|
|
11
|
+
refreshTokenExpiresAt: refreshTokenExpiresAt.getTime(),
|
|
12
|
+
};
|
|
13
|
+
const cookieMaxAge = refreshTokenExpiresAt.getTime() - Date.now();
|
|
14
|
+
res.cookie(this.COOKIE_NAME, JSON.stringify(authData), {
|
|
15
|
+
...this.COOKIE_OPTIONS,
|
|
16
|
+
maxAge: Math.max(cookieMaxAge, 0),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
static clearAuthCookies(res) {
|
|
20
|
+
res.clearCookie(this.COOKIE_NAME, { path: "/" });
|
|
21
|
+
}
|
|
22
|
+
static setRefreshedCookies(res, accessToken, refreshToken, refreshTokenExpiresAt) {
|
|
23
|
+
this.setAuthCookies(res, accessToken, refreshToken, refreshTokenExpiresAt);
|
|
24
|
+
}
|
|
25
|
+
static extractTokensFromCookie(request) {
|
|
26
|
+
const authCookie = request.cookies?.[this.COOKIE_NAME];
|
|
27
|
+
if (!authCookie)
|
|
28
|
+
return undefined;
|
|
29
|
+
try {
|
|
30
|
+
const authData = JSON.parse(authCookie);
|
|
31
|
+
return {
|
|
32
|
+
accessToken: authData.accessToken,
|
|
33
|
+
refreshToken: authData.refreshToken,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error("Failed to parse auth cookie:", error);
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.CookieService = CookieService;
|
|
43
|
+
CookieService.COOKIE_NAME = cookie_config_1.cookieConfig.cookieName;
|
|
44
|
+
CookieService.COOKIE_OPTIONS = {
|
|
45
|
+
httpOnly: true,
|
|
46
|
+
secure: process.env.NODE_ENV === "production",
|
|
47
|
+
sameSite: process.env.NODE_ENV === "production" ? "none" : "strict",
|
|
48
|
+
path: "/",
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=cookie.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie.service.js","sourceRoot":"","sources":["../../src/services/cookie.service.ts"],"names":[],"mappings":";;;AACA,2DAAuD;AAOvD,MAAa,aAAa;IAaxB,MAAM,CAAC,cAAc,CACnB,GAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,qBAA2B;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;IACnD,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;;AAxEH,sCAyEC;AAxEyB,yBAAW,GAAG,4BAAY,CAAC,UAAU,CAAC;AAEtC,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,IAAI,EAAE,GAAG;CACD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { JwtService } from "@nestjs/jwt";
|
|
2
|
+
import { SessionService, CurrentUserDto } from "./session.service";
|
|
3
|
+
export interface JwtTokenData {
|
|
4
|
+
sub: string | number;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
email?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface JwtValidationResult {
|
|
9
|
+
isValid: boolean;
|
|
10
|
+
payload?: JwtTokenData;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class CoreJwtService {
|
|
14
|
+
private readonly jwtService;
|
|
15
|
+
private readonly sessionService;
|
|
16
|
+
constructor(jwtService: JwtService, sessionService: SessionService);
|
|
17
|
+
createAccessToken(sessionData: CurrentUserDto): Promise<string>;
|
|
18
|
+
createSimpleAccessToken(userId: string | number, email: string): string;
|
|
19
|
+
decodeToken(token: string): JwtTokenData | null;
|
|
20
|
+
verifyToken(token: string): JwtTokenData | null;
|
|
21
|
+
validateTokenSignature(token: string): JwtValidationResult;
|
|
22
|
+
isTokenSignatureValid(token: string): boolean;
|
|
23
|
+
getUserIdFromToken(token: string): string | number | null;
|
|
24
|
+
getSessionIdFromToken(token: string): string | null;
|
|
25
|
+
deleteSessionFromToken(token: string): Promise<boolean>;
|
|
26
|
+
extractTokenFromHeader(request: any): string | null;
|
|
27
|
+
getTokenExpirationTime(token: string): number | null;
|
|
28
|
+
isTokenExpired(token: string): boolean;
|
|
29
|
+
createTokenPayload(userId: string | number, sessionId?: string, email?: string): JwtTokenData;
|
|
30
|
+
signToken(payload: JwtTokenData): string;
|
|
31
|
+
createInternalToken(service: string): string;
|
|
32
|
+
verifyInternalToken(token: string): {
|
|
33
|
+
service: string;
|
|
34
|
+
} | null;
|
|
35
|
+
getCurrentUser(accessToken: string): Promise<CurrentUserDto | null>;
|
|
36
|
+
getEmailFromToken(token: string): string | null;
|
|
37
|
+
}
|