@nauth-toolkit/nestjs 0.1.3
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/LICENSE +90 -0
- package/README.md +53 -0
- package/dist/auth.module.d.ts +14 -0
- package/dist/auth.module.d.ts.map +1 -0
- package/dist/auth.module.js +718 -0
- package/dist/auth.module.js.map +1 -0
- package/dist/decorators/client-info.decorator.d.ts +3 -0
- package/dist/decorators/client-info.decorator.d.ts.map +1 -0
- package/dist/decorators/client-info.decorator.js +13 -0
- package/dist/decorators/client-info.decorator.js.map +1 -0
- package/dist/decorators/current-user.decorator.d.ts +2 -0
- package/dist/decorators/current-user.decorator.d.ts.map +1 -0
- package/dist/decorators/current-user.decorator.js +9 -0
- package/dist/decorators/current-user.decorator.js.map +1 -0
- package/dist/decorators/index.d.ts +5 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +21 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/public.decorator.d.ts +3 -0
- package/dist/decorators/public.decorator.d.ts.map +1 -0
- package/dist/decorators/public.decorator.js +8 -0
- package/dist/decorators/public.decorator.js.map +1 -0
- package/dist/decorators/token-delivery.decorator.d.ts +4 -0
- package/dist/decorators/token-delivery.decorator.d.ts.map +1 -0
- package/dist/decorators/token-delivery.decorator.js +8 -0
- package/dist/decorators/token-delivery.decorator.js.map +1 -0
- package/dist/dto/index.d.ts +2 -0
- package/dist/dto/index.d.ts.map +1 -0
- package/dist/dto/index.js +18 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/factories/storage-adapter.factory.d.ts +7 -0
- package/dist/factories/storage-adapter.factory.d.ts.map +1 -0
- package/dist/factories/storage-adapter.factory.js +24 -0
- package/dist/factories/storage-adapter.factory.js.map +1 -0
- package/dist/filters/nauth-http-exception.filter.d.ts +7 -0
- package/dist/filters/nauth-http-exception.filter.d.ts.map +1 -0
- package/dist/filters/nauth-http-exception.filter.js +81 -0
- package/dist/filters/nauth-http-exception.filter.js.map +1 -0
- package/dist/guards/auth.guard.d.ts +16 -0
- package/dist/guards/auth.guard.d.ts.map +1 -0
- package/dist/guards/auth.guard.js +158 -0
- package/dist/guards/auth.guard.js.map +1 -0
- package/dist/guards/csrf.guard.d.ts +12 -0
- package/dist/guards/csrf.guard.d.ts.map +1 -0
- package/dist/guards/csrf.guard.js +95 -0
- package/dist/guards/csrf.guard.js.map +1 -0
- package/dist/guards/index.d.ts +2 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/guards/index.js +18 -0
- package/dist/guards/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/client-info.interceptor.d.ts +13 -0
- package/dist/interceptors/client-info.interceptor.d.ts.map +1 -0
- package/dist/interceptors/client-info.interceptor.js +108 -0
- package/dist/interceptors/client-info.interceptor.js.map +1 -0
- package/dist/interceptors/cookie-token.interceptor.d.ts +15 -0
- package/dist/interceptors/cookie-token.interceptor.d.ts.map +1 -0
- package/dist/interceptors/cookie-token.interceptor.js +164 -0
- package/dist/interceptors/cookie-token.interceptor.js.map +1 -0
- package/dist/interceptors/index.d.ts +3 -0
- package/dist/interceptors/index.d.ts.map +1 -0
- package/dist/interceptors/index.js +19 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/providers/nestjs-logger.adapter.d.ts +18 -0
- package/dist/providers/nestjs-logger.adapter.d.ts.map +1 -0
- package/dist/providers/nestjs-logger.adapter.js +83 -0
- package/dist/providers/nestjs-logger.adapter.js.map +1 -0
- package/dist/services/csrf.service.d.ts +16 -0
- package/dist/services/csrf.service.d.ts.map +1 -0
- package/dist/services/csrf.service.js +51 -0
- package/dist/services/csrf.service.js.map +1 -0
- package/dist/services/migrations-bootstrap.service.d.ts +4 -0
- package/dist/services/migrations-bootstrap.service.d.ts.map +1 -0
- package/dist/services/migrations-bootstrap.service.js +75 -0
- package/dist/services/migrations-bootstrap.service.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CsrfGuard = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const core_1 = require("@nestjs/core");
|
|
18
|
+
const core_2 = require("@nauth-toolkit/core");
|
|
19
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
20
|
+
const token_delivery_decorator_1 = require("../decorators/token-delivery.decorator");
|
|
21
|
+
const csrf_service_1 = require("../services/csrf.service");
|
|
22
|
+
let CsrfGuard = class CsrfGuard {
|
|
23
|
+
config;
|
|
24
|
+
csrfService;
|
|
25
|
+
reflector;
|
|
26
|
+
constructor(config, csrfService, reflector) {
|
|
27
|
+
this.config = config;
|
|
28
|
+
this.csrfService = csrfService;
|
|
29
|
+
this.reflector = reflector;
|
|
30
|
+
}
|
|
31
|
+
canActivate(context) {
|
|
32
|
+
if (context.getType() !== 'http') {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
const request = context.switchToHttp().getRequest();
|
|
36
|
+
const csrfConfig = this.config.security?.csrf;
|
|
37
|
+
if (!csrfConfig) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
if (['GET', 'HEAD', 'OPTIONS'].includes(request.method)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const isPublic = this.reflector.getAllAndOverride(public_decorator_1.IS_PUBLIC_KEY, [
|
|
44
|
+
context.getHandler(),
|
|
45
|
+
context.getClass(),
|
|
46
|
+
]);
|
|
47
|
+
if (isPublic) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (csrfConfig.excludedPaths?.some((path) => request.url.startsWith(path))) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
const deliveryConfig = this.config.tokenDelivery;
|
|
54
|
+
const routeMode = this.reflector.get(token_delivery_decorator_1.TOKEN_DELIVERY_KEY, context.getHandler());
|
|
55
|
+
const method = deliveryConfig?.method || 'json';
|
|
56
|
+
let effective = 'json';
|
|
57
|
+
if (routeMode) {
|
|
58
|
+
effective = routeMode;
|
|
59
|
+
}
|
|
60
|
+
else if (method === 'hybrid') {
|
|
61
|
+
effective = (0, core_2.resolveDeliveryForRequest)(request, deliveryConfig?.hybridPolicy);
|
|
62
|
+
}
|
|
63
|
+
else if (method === 'cookies') {
|
|
64
|
+
effective = 'cookies';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
effective = 'json';
|
|
68
|
+
}
|
|
69
|
+
if (effective !== 'cookies') {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
const cookieName = this.csrfService.getCookieName();
|
|
73
|
+
const headerName = this.csrfService.getHeaderName();
|
|
74
|
+
const csrfToken = request.headers[headerName.toLowerCase()];
|
|
75
|
+
const csrfCookie = request.cookies?.[cookieName];
|
|
76
|
+
if (!csrfToken) {
|
|
77
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.CSRF_TOKEN_MISSING, `CSRF token missing in header: ${headerName}`);
|
|
78
|
+
}
|
|
79
|
+
if (!csrfCookie) {
|
|
80
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.CSRF_TOKEN_MISSING, `CSRF token missing in cookie: ${cookieName}`);
|
|
81
|
+
}
|
|
82
|
+
if (csrfToken !== csrfCookie) {
|
|
83
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.CSRF_TOKEN_INVALID, 'CSRF token mismatch');
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.CsrfGuard = CsrfGuard;
|
|
89
|
+
exports.CsrfGuard = CsrfGuard = __decorate([
|
|
90
|
+
(0, common_1.Injectable)(),
|
|
91
|
+
__param(0, (0, common_1.Inject)('NAUTH_CONFIG')),
|
|
92
|
+
__metadata("design:paramtypes", [Object, csrf_service_1.CsrfService,
|
|
93
|
+
core_1.Reflector])
|
|
94
|
+
], CsrfGuard);
|
|
95
|
+
//# sourceMappingURL=csrf.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csrf.guard.js","sourceRoot":"","sources":["../../src/guards/csrf.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./auth.guard"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from '@nauth-toolkit/core';
|
|
2
|
+
export { AuthModule, NAuthModuleConfig } from './auth.module';
|
|
3
|
+
export { AuthGuard } from './guards/auth.guard';
|
|
4
|
+
export { CsrfGuard } from './guards/csrf.guard';
|
|
5
|
+
export { ClientInfoInterceptor } from './interceptors/client-info.interceptor';
|
|
6
|
+
export { CookieTokenInterceptor } from './interceptors/cookie-token.interceptor';
|
|
7
|
+
export { CurrentUser } from './decorators/current-user.decorator';
|
|
8
|
+
export { Public, IS_PUBLIC_KEY } from './decorators/public.decorator';
|
|
9
|
+
export { ClientInfo } from './decorators/client-info.decorator';
|
|
10
|
+
export { TokenDelivery, TOKEN_DELIVERY_KEY, RouteDelivery } from './decorators/token-delivery.decorator';
|
|
11
|
+
export { NAuthHttpExceptionFilter } from './filters/nauth-http-exception.filter';
|
|
12
|
+
export { NestJsLoggerAdapter } from './providers/nestjs-logger.adapter';
|
|
13
|
+
export { CsrfService } from './services/csrf.service';
|
|
14
|
+
export * from './dto';
|
|
15
|
+
export { createDatabaseStorageAdapter, createRedisStorageAdapter, createRedisClusterAdapter, } from './factories/storage-adapter.factory';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,qBAAqB,CAAC;AASpC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAK9D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKjF,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAKzG,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAKjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAKxE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKtD,cAAc,OAAO,CAAC;AAKtB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,qCAAqC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.createRedisClusterAdapter = exports.createRedisStorageAdapter = exports.createDatabaseStorageAdapter = exports.CsrfService = exports.NestJsLoggerAdapter = exports.NAuthHttpExceptionFilter = exports.TOKEN_DELIVERY_KEY = exports.TokenDelivery = exports.ClientInfo = exports.IS_PUBLIC_KEY = exports.Public = exports.CurrentUser = exports.CookieTokenInterceptor = exports.ClientInfoInterceptor = exports.CsrfGuard = exports.AuthGuard = exports.AuthModule = void 0;
|
|
18
|
+
__exportStar(require("@nauth-toolkit/core"), exports);
|
|
19
|
+
var auth_module_1 = require("./auth.module");
|
|
20
|
+
Object.defineProperty(exports, "AuthModule", { enumerable: true, get: function () { return auth_module_1.AuthModule; } });
|
|
21
|
+
var auth_guard_1 = require("./guards/auth.guard");
|
|
22
|
+
Object.defineProperty(exports, "AuthGuard", { enumerable: true, get: function () { return auth_guard_1.AuthGuard; } });
|
|
23
|
+
var csrf_guard_1 = require("./guards/csrf.guard");
|
|
24
|
+
Object.defineProperty(exports, "CsrfGuard", { enumerable: true, get: function () { return csrf_guard_1.CsrfGuard; } });
|
|
25
|
+
var client_info_interceptor_1 = require("./interceptors/client-info.interceptor");
|
|
26
|
+
Object.defineProperty(exports, "ClientInfoInterceptor", { enumerable: true, get: function () { return client_info_interceptor_1.ClientInfoInterceptor; } });
|
|
27
|
+
var cookie_token_interceptor_1 = require("./interceptors/cookie-token.interceptor");
|
|
28
|
+
Object.defineProperty(exports, "CookieTokenInterceptor", { enumerable: true, get: function () { return cookie_token_interceptor_1.CookieTokenInterceptor; } });
|
|
29
|
+
var current_user_decorator_1 = require("./decorators/current-user.decorator");
|
|
30
|
+
Object.defineProperty(exports, "CurrentUser", { enumerable: true, get: function () { return current_user_decorator_1.CurrentUser; } });
|
|
31
|
+
var public_decorator_1 = require("./decorators/public.decorator");
|
|
32
|
+
Object.defineProperty(exports, "Public", { enumerable: true, get: function () { return public_decorator_1.Public; } });
|
|
33
|
+
Object.defineProperty(exports, "IS_PUBLIC_KEY", { enumerable: true, get: function () { return public_decorator_1.IS_PUBLIC_KEY; } });
|
|
34
|
+
var client_info_decorator_1 = require("./decorators/client-info.decorator");
|
|
35
|
+
Object.defineProperty(exports, "ClientInfo", { enumerable: true, get: function () { return client_info_decorator_1.ClientInfo; } });
|
|
36
|
+
var token_delivery_decorator_1 = require("./decorators/token-delivery.decorator");
|
|
37
|
+
Object.defineProperty(exports, "TokenDelivery", { enumerable: true, get: function () { return token_delivery_decorator_1.TokenDelivery; } });
|
|
38
|
+
Object.defineProperty(exports, "TOKEN_DELIVERY_KEY", { enumerable: true, get: function () { return token_delivery_decorator_1.TOKEN_DELIVERY_KEY; } });
|
|
39
|
+
var nauth_http_exception_filter_1 = require("./filters/nauth-http-exception.filter");
|
|
40
|
+
Object.defineProperty(exports, "NAuthHttpExceptionFilter", { enumerable: true, get: function () { return nauth_http_exception_filter_1.NAuthHttpExceptionFilter; } });
|
|
41
|
+
var nestjs_logger_adapter_1 = require("./providers/nestjs-logger.adapter");
|
|
42
|
+
Object.defineProperty(exports, "NestJsLoggerAdapter", { enumerable: true, get: function () { return nestjs_logger_adapter_1.NestJsLoggerAdapter; } });
|
|
43
|
+
var csrf_service_1 = require("./services/csrf.service");
|
|
44
|
+
Object.defineProperty(exports, "CsrfService", { enumerable: true, get: function () { return csrf_service_1.CsrfService; } });
|
|
45
|
+
__exportStar(require("./dto"), exports);
|
|
46
|
+
var storage_adapter_factory_1 = require("./factories/storage-adapter.factory");
|
|
47
|
+
Object.defineProperty(exports, "createDatabaseStorageAdapter", { enumerable: true, get: function () { return storage_adapter_factory_1.createDatabaseStorageAdapter; } });
|
|
48
|
+
Object.defineProperty(exports, "createRedisStorageAdapter", { enumerable: true, get: function () { return storage_adapter_factory_1.createRedisStorageAdapter; } });
|
|
49
|
+
Object.defineProperty(exports, "createRedisClusterAdapter", { enumerable: true, get: function () { return storage_adapter_factory_1.createRedisClusterAdapter; } });
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBA,sDAAoC;AASpC,6CAA8D;AAArD,yGAAA,UAAU,OAAA;AAKnB,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAClB,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAKlB,kFAA+E;AAAtE,gIAAA,qBAAqB,OAAA;AAC9B,oFAAiF;AAAxE,kIAAA,sBAAsB,OAAA;AAK/B,8EAAkE;AAAzD,qHAAA,WAAW,OAAA;AACpB,kEAAsE;AAA7D,0GAAA,MAAM,OAAA;AAAE,iHAAA,aAAa,OAAA;AAC9B,4EAAgE;AAAvD,mHAAA,UAAU,OAAA;AACnB,kFAAyG;AAAhG,yHAAA,aAAa,OAAA;AAAE,8HAAA,kBAAkB,OAAA;AAK1C,qFAAiF;AAAxE,uIAAA,wBAAwB,OAAA;AAKjC,2EAAwE;AAA/D,4HAAA,mBAAmB,OAAA;AAK5B,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAKpB,wCAAsB;AAKtB,+EAI6C;AAH3C,uIAAA,4BAA4B,OAAA;AAC5B,oIAAA,yBAAyB,OAAA;AACzB,oIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { NAuthConfig } from '@nauth-toolkit/core';
|
|
4
|
+
import { GeoLocationService } from '@nauth-toolkit/core/internal';
|
|
5
|
+
export declare class ClientInfoInterceptor implements NestInterceptor {
|
|
6
|
+
private readonly config?;
|
|
7
|
+
private readonly geoLocationService?;
|
|
8
|
+
private readonly clientInfoService;
|
|
9
|
+
constructor(config?: NAuthConfig | undefined, geoLocationService?: GeoLocationService | undefined);
|
|
10
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
11
|
+
private extractAndStoreClientInfo;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=client-info.interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-info.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/client-info.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAY,MAAM,MAAM,CAAC;AAE5C,OAAO,EAKL,WAAW,EAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAgClE,qBACa,qBAAsB,YAAW,eAAe;IAMzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAPtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;gBAK1C,MAAM,CAAC,EAAE,WAAW,YAAA,EAEpB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAG1D,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IAoB5E,OAAO,CAAC,yBAAyB;CAkIlC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ClientInfoInterceptor = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const operators_1 = require("rxjs/operators");
|
|
19
|
+
const core_1 = require("@nauth-toolkit/core");
|
|
20
|
+
const internal_1 = require("@nauth-toolkit/core/internal");
|
|
21
|
+
let ClientInfoInterceptor = class ClientInfoInterceptor {
|
|
22
|
+
config;
|
|
23
|
+
geoLocationService;
|
|
24
|
+
clientInfoService = new core_1.ClientInfoService();
|
|
25
|
+
constructor(config, geoLocationService) {
|
|
26
|
+
this.config = config;
|
|
27
|
+
this.geoLocationService = geoLocationService;
|
|
28
|
+
}
|
|
29
|
+
intercept(context, next) {
|
|
30
|
+
return new rxjs_1.Observable((subscriber) => {
|
|
31
|
+
core_1.ContextStorage.run(() => {
|
|
32
|
+
this.extractAndStoreClientInfo(context, next).subscribe({
|
|
33
|
+
next: (value) => subscriber.next(value),
|
|
34
|
+
error: (err) => subscriber.error(err),
|
|
35
|
+
complete: () => subscriber.complete(),
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
extractAndStoreClientInfo(context, next) {
|
|
41
|
+
const request = context.switchToHttp().getRequest();
|
|
42
|
+
const response = context.switchToHttp().getResponse();
|
|
43
|
+
const headers = request.headers || {};
|
|
44
|
+
const userAgent = headers['user-agent'];
|
|
45
|
+
const userAgentString = typeof userAgent === 'string' ? userAgent : 'unknown';
|
|
46
|
+
const parsedUA = this.clientInfoService.parseUserAgent(userAgentString);
|
|
47
|
+
const deviceTokenCookieName = this.config ? (0, core_1.getDeviceTokenCookieName)(this.config) : 'nauth_device_token';
|
|
48
|
+
const deviceTokenCookie = request.cookies?.[deviceTokenCookieName];
|
|
49
|
+
const deviceTokenHeader = headers['x-device-token'] || headers['X-Device-Token'];
|
|
50
|
+
const deviceToken = (typeof deviceTokenCookie === 'string' ? deviceTokenCookie : undefined) ||
|
|
51
|
+
(typeof deviceTokenHeader === 'string' ? deviceTokenHeader : undefined) ||
|
|
52
|
+
(deviceTokenHeader ? String(deviceTokenHeader) : undefined);
|
|
53
|
+
const sessionIdFromToken = request?.token?.sessionId;
|
|
54
|
+
const sessionIdNumber = sessionIdFromToken ? parseInt(sessionIdFromToken, 10) : undefined;
|
|
55
|
+
const userIdFromToken = request?.token?.sub;
|
|
56
|
+
const userIdNumber = userIdFromToken ? parseInt(userIdFromToken, 10) : undefined;
|
|
57
|
+
const clientInfo = {
|
|
58
|
+
ipAddress: (0, core_1.extractClientIp)(request),
|
|
59
|
+
userAgent: userAgentString,
|
|
60
|
+
deviceToken,
|
|
61
|
+
deviceName: request.body?.deviceName || parsedUA.deviceName || undefined,
|
|
62
|
+
deviceType: request.body?.deviceType || parsedUA.deviceType || undefined,
|
|
63
|
+
platform: parsedUA.platform || undefined,
|
|
64
|
+
browser: parsedUA.browser || undefined,
|
|
65
|
+
sessionId: sessionIdNumber && !isNaN(sessionIdNumber) ? sessionIdNumber : undefined,
|
|
66
|
+
userId: userIdNumber && !isNaN(userIdNumber) ? userIdNumber : undefined,
|
|
67
|
+
ipCountry: undefined,
|
|
68
|
+
ipCity: undefined,
|
|
69
|
+
ipLatitude: undefined,
|
|
70
|
+
ipLongitude: undefined,
|
|
71
|
+
};
|
|
72
|
+
if (this.geoLocationService && clientInfo.ipAddress) {
|
|
73
|
+
return (0, rxjs_1.from)(this.geoLocationService.getIpGeolocation(clientInfo.ipAddress)).pipe((0, operators_1.catchError)(() => {
|
|
74
|
+
return (0, rxjs_1.of)({ country: undefined, city: undefined, latitude: undefined, longitude: undefined });
|
|
75
|
+
}), (0, operators_1.switchMap)((geo) => {
|
|
76
|
+
clientInfo.ipCountry = geo.country;
|
|
77
|
+
clientInfo.ipCity = geo.city;
|
|
78
|
+
clientInfo.ipLatitude = geo.latitude;
|
|
79
|
+
clientInfo.ipLongitude = geo.longitude;
|
|
80
|
+
core_1.ContextStorage.set('CLIENT_INFO', clientInfo);
|
|
81
|
+
core_1.ContextStorage.set('HTTP_RESPONSE', response);
|
|
82
|
+
request.clientInfo = clientInfo;
|
|
83
|
+
const sessionId = request?.token?.sessionId;
|
|
84
|
+
if (sessionId && typeof response.setHeader === 'function') {
|
|
85
|
+
response.setHeader('X-Session-Id', sessionId);
|
|
86
|
+
}
|
|
87
|
+
return next.handle();
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
core_1.ContextStorage.set('CLIENT_INFO', clientInfo);
|
|
91
|
+
core_1.ContextStorage.set('HTTP_RESPONSE', response);
|
|
92
|
+
request.clientInfo = clientInfo;
|
|
93
|
+
const sessionId = request?.token?.sessionId;
|
|
94
|
+
if (sessionId && typeof response.setHeader === 'function') {
|
|
95
|
+
response.setHeader('X-Session-Id', sessionId);
|
|
96
|
+
}
|
|
97
|
+
return next.handle();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.ClientInfoInterceptor = ClientInfoInterceptor;
|
|
101
|
+
exports.ClientInfoInterceptor = ClientInfoInterceptor = __decorate([
|
|
102
|
+
(0, common_1.Injectable)(),
|
|
103
|
+
__param(0, (0, common_1.Optional)()),
|
|
104
|
+
__param(0, (0, common_1.Inject)('NAUTH_CONFIG')),
|
|
105
|
+
__param(1, (0, common_1.Optional)()),
|
|
106
|
+
__metadata("design:paramtypes", [Object, internal_1.GeoLocationService])
|
|
107
|
+
], ClientInfoInterceptor);
|
|
108
|
+
//# sourceMappingURL=client-info.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-info.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/client-info.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8G;AAC9G,+BAA4C;AAC5C,8CAAuD;AACvD,8CAO6B;AAC7B,2DAAkE;AAiC3D,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAMb;IAEA;IAPF,iBAAiB,GAAG,IAAI,wBAAiB,EAAE,CAAC;IAE7D,YAGmB,MAAoB,EAEpB,kBAAuC;QAFvC,WAAM,GAAN,MAAM,CAAc;QAEpB,uBAAkB,GAAlB,kBAAkB,CAAqB;IACvD,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAEpD,OAAO,IAAI,iBAAU,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,qBAAc,CAAC,GAAG,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;oBACtD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBACrC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;iBACtC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IASO,yBAAyB,CAAC,OAAyB,EAAE,IAAiB;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;QAGtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAG9E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAIxE,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,+BAAwB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACzG,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAC;QACnE,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjF,MAAM,WAAW,GACf,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAI9D,MAAM,kBAAkB,GAAuB,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;QACzE,MAAM,eAAe,GAAuB,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,MAAM,eAAe,GAAuB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC;QAChE,MAAM,YAAY,GAAuB,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAErG,MAAM,UAAU,GAAgB;YAO9B,SAAS,EAAE,IAAA,sBAAe,EAAC,OAAO,CAAC;YAgBnC,SAAS,EAAE,eAAe;YAC1B,WAAW;YAEX,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU,IAAI,SAAS;YACxE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU,IAAI,SAAS;YACxE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,SAAS;YACxC,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,SAAS;YAEtC,SAAS,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;YAEnF,MAAM,EAAE,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAEvE,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,SAAS;SACvB,CAAC;QAKF,IAAI,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YAIpD,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC9E,IAAA,sBAAU,EAAC,GAAG,EAAE;gBAId,OAAO,IAAA,SAAE,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAChG,CAAC,CAAC,EACF,IAAA,qBAAS,EAAC,CAAC,GAAG,EAAE,EAAE;gBAEhB,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;gBACnC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC7B,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC;gBACrC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC;gBAGvC,qBAAc,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBAG9C,qBAAc,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAG9C,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBAIhC,MAAM,SAAS,GAAuB,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;gBAChE,IAAI,SAAS,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;oBAC1D,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAChD,CAAC;gBAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAGD,qBAAc,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAG9C,qBAAc,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAG9C,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAIhC,MAAM,SAAS,GAAuB,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;QAChE,IAAI,SAAS,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAjKY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;IAEtB,WAAA,IAAA,iBAAQ,GAAE,CAAA;6CAC2B,6BAAkB;GAR/C,qBAAqB,CAiKjC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Reflector } from '@nestjs/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { NAuthConfig } from '@nauth-toolkit/core';
|
|
5
|
+
import { JwtService } from '@nauth-toolkit/core/internal';
|
|
6
|
+
import { CsrfService } from '../services/csrf.service';
|
|
7
|
+
export declare class CookieTokenInterceptor implements NestInterceptor {
|
|
8
|
+
private readonly config;
|
|
9
|
+
private readonly jwtService;
|
|
10
|
+
private readonly reflector;
|
|
11
|
+
private readonly csrfService?;
|
|
12
|
+
constructor(config: NAuthConfig, jwtService: JwtService, reflector: Reflector, csrfService?: CsrfService | undefined);
|
|
13
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cookie-token.interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-token.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/cookie-token.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAU,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAEL,WAAW,EAQZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAkBvD,qBACa,sBAAuB,YAAW,eAAe;IAG1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAHZ,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,WAAW,CAAC,EAAE,WAAW,YAAA;IAG5C,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CAwM7E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CookieTokenInterceptor = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const core_1 = require("@nestjs/core");
|
|
18
|
+
const operators_1 = require("rxjs/operators");
|
|
19
|
+
const core_2 = require("@nauth-toolkit/core");
|
|
20
|
+
const internal_1 = require("@nauth-toolkit/core/internal");
|
|
21
|
+
const token_delivery_decorator_1 = require("../decorators/token-delivery.decorator");
|
|
22
|
+
const csrf_service_1 = require("../services/csrf.service");
|
|
23
|
+
let CookieTokenInterceptor = class CookieTokenInterceptor {
|
|
24
|
+
config;
|
|
25
|
+
jwtService;
|
|
26
|
+
reflector;
|
|
27
|
+
csrfService;
|
|
28
|
+
constructor(config, jwtService, reflector, csrfService) {
|
|
29
|
+
this.config = config;
|
|
30
|
+
this.jwtService = jwtService;
|
|
31
|
+
this.reflector = reflector;
|
|
32
|
+
this.csrfService = csrfService;
|
|
33
|
+
}
|
|
34
|
+
intercept(context, next) {
|
|
35
|
+
if (context.getType() !== 'http') {
|
|
36
|
+
return next.handle();
|
|
37
|
+
}
|
|
38
|
+
const deliveryConfig = this.config.tokenDelivery;
|
|
39
|
+
const http = context.switchToHttp();
|
|
40
|
+
const req = http.getRequest();
|
|
41
|
+
const res = http.getResponse();
|
|
42
|
+
const routeMode = this.reflector.get(token_delivery_decorator_1.TOKEN_DELIVERY_KEY, context.getHandler());
|
|
43
|
+
const method = deliveryConfig?.method || 'json';
|
|
44
|
+
if (routeMode === 'cookies') {
|
|
45
|
+
if (method === 'json') {
|
|
46
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.COOKIES_NOT_ALLOWED, "Route-level cookie delivery requested, but tokenDelivery.method is 'json' (cookies disabled)");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (routeMode === 'json') {
|
|
50
|
+
if (method === 'cookies') {
|
|
51
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.BEARER_NOT_ALLOWED, "Route-level JSON delivery requested, but tokenDelivery.method is 'cookies' (JSON/Bearer tokens disabled)");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let effective = 'json';
|
|
55
|
+
if (routeMode) {
|
|
56
|
+
effective = routeMode;
|
|
57
|
+
}
|
|
58
|
+
else if (method === 'hybrid') {
|
|
59
|
+
effective = (0, core_2.resolveDeliveryForRequest)(req, deliveryConfig?.hybridPolicy);
|
|
60
|
+
}
|
|
61
|
+
else if (method === 'cookies') {
|
|
62
|
+
effective = 'cookies';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
effective = 'json';
|
|
66
|
+
}
|
|
67
|
+
return next.handle().pipe((0, operators_1.map)((data) => {
|
|
68
|
+
const hasDeviceTokenOnly = data && 'deviceToken' in data && !('accessToken' in data);
|
|
69
|
+
const hasAccessToken = data && 'accessToken' in data && data.accessToken;
|
|
70
|
+
if (!data || (!hasAccessToken && !hasDeviceTokenOnly)) {
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
|
+
const opt = deliveryConfig?.cookieOptions;
|
|
74
|
+
const cookieOptions = {
|
|
75
|
+
httpOnly: true,
|
|
76
|
+
secure: opt?.secure !== false,
|
|
77
|
+
sameSite: (opt?.sameSite || 'strict'),
|
|
78
|
+
path: opt?.path || '/',
|
|
79
|
+
};
|
|
80
|
+
if (opt?.domain) {
|
|
81
|
+
cookieOptions.domain = opt.domain;
|
|
82
|
+
}
|
|
83
|
+
let accessTokenMaxAgeMs = 0;
|
|
84
|
+
if (hasAccessToken && 'accessToken' in data && data.accessToken) {
|
|
85
|
+
const accessPayload = this.jwtService.decodeToken(data.accessToken);
|
|
86
|
+
if (!accessPayload?.exp) {
|
|
87
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Access token missing or invalid exp claim; refusing to set cookies');
|
|
88
|
+
}
|
|
89
|
+
const accessExpSeconds = accessPayload.exp;
|
|
90
|
+
accessTokenMaxAgeMs = Math.max(0, accessExpSeconds * 1000 - Date.now());
|
|
91
|
+
if (accessTokenMaxAgeMs <= 0) {
|
|
92
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Access token already expired; refusing to set cookies');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const setCookie = (name, value, options) => {
|
|
96
|
+
if (res && typeof res.cookie === 'function') {
|
|
97
|
+
res.cookie(name, value, options);
|
|
98
|
+
}
|
|
99
|
+
else if (res && typeof res.setCookie === 'function') {
|
|
100
|
+
res.setCookie(name, value, options);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
if (effective === 'cookies' && hasAccessToken && 'accessToken' in data && data.accessToken) {
|
|
104
|
+
const accessTokenCookieName = (0, core_2.getAccessTokenCookieName)(this.config);
|
|
105
|
+
setCookie(accessTokenCookieName, data.accessToken, {
|
|
106
|
+
...cookieOptions,
|
|
107
|
+
maxAge: accessTokenMaxAgeMs,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if ('refreshToken' in data && data.refreshToken && effective === 'cookies') {
|
|
111
|
+
const refreshPayload = this.jwtService.decodeToken(data.refreshToken);
|
|
112
|
+
if (!refreshPayload?.exp) {
|
|
113
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Refresh token missing or invalid exp claim; refusing to set cookies');
|
|
114
|
+
}
|
|
115
|
+
const refreshExpSeconds = refreshPayload.exp;
|
|
116
|
+
const refreshTokenMaxAgeMs = Math.max(0, refreshExpSeconds * 1000 - Date.now());
|
|
117
|
+
if (refreshTokenMaxAgeMs <= 0) {
|
|
118
|
+
throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Refresh token already expired; refusing to set cookies');
|
|
119
|
+
}
|
|
120
|
+
const refreshTokenCookieName = (0, core_2.getRefreshTokenCookieName)(this.config);
|
|
121
|
+
setCookie(refreshTokenCookieName, data.refreshToken, {
|
|
122
|
+
...cookieOptions,
|
|
123
|
+
maxAge: refreshTokenMaxAgeMs,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if ('deviceToken' in data && data.deviceToken && effective === 'cookies') {
|
|
127
|
+
const rememberDeviceDays = this.config.mfa?.rememberDeviceDays || 30;
|
|
128
|
+
const deviceTokenMaxAgeMs = rememberDeviceDays * 24 * 60 * 60 * 1000;
|
|
129
|
+
const deviceTokenCookieName = (0, core_2.getDeviceTokenCookieName)(this.config);
|
|
130
|
+
setCookie(deviceTokenCookieName, data.deviceToken, {
|
|
131
|
+
...cookieOptions,
|
|
132
|
+
maxAge: deviceTokenMaxAgeMs,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
if (effective === 'cookies' && this.csrfService && this.config.security?.csrf) {
|
|
136
|
+
const csrfToken = this.csrfService.generateToken();
|
|
137
|
+
const csrfCookieName = this.csrfService.getCookieName();
|
|
138
|
+
const csrfCookieOptions = this.csrfService.getCookieOptions();
|
|
139
|
+
setCookie(csrfCookieName, csrfToken, {
|
|
140
|
+
...csrfCookieOptions,
|
|
141
|
+
maxAge: accessTokenMaxAgeMs > 0 ? accessTokenMaxAgeMs : undefined,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (effective === 'cookies') {
|
|
145
|
+
if (hasDeviceTokenOnly) {
|
|
146
|
+
return {};
|
|
147
|
+
}
|
|
148
|
+
const authData = data;
|
|
149
|
+
const { accessToken, refreshToken, deviceToken, accessTokenExpiresAt, refreshTokenExpiresAt, ...sanitized } = authData;
|
|
150
|
+
return sanitized;
|
|
151
|
+
}
|
|
152
|
+
return data;
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
exports.CookieTokenInterceptor = CookieTokenInterceptor;
|
|
157
|
+
exports.CookieTokenInterceptor = CookieTokenInterceptor = __decorate([
|
|
158
|
+
(0, common_1.Injectable)(),
|
|
159
|
+
__param(0, (0, common_1.Inject)('NAUTH_CONFIG')),
|
|
160
|
+
__metadata("design:paramtypes", [Object, internal_1.JwtService,
|
|
161
|
+
core_1.Reflector,
|
|
162
|
+
csrf_service_1.CsrfService])
|
|
163
|
+
], CookieTokenInterceptor);
|
|
164
|
+
//# sourceMappingURL=cookie-token.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-token.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/cookie-token.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./client-info.interceptor"), exports);
|
|
18
|
+
__exportStar(require("./cookie-token.interceptor"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,6DAA2C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoggerProvider, LogMetadata, LogLevel } from '@nauth-toolkit/core';
|
|
2
|
+
export declare class NestJsLoggerAdapter implements LoggerProvider {
|
|
3
|
+
private readonly logger;
|
|
4
|
+
private readonly piiRedactor;
|
|
5
|
+
private readonly enablePiiRedaction;
|
|
6
|
+
constructor(options?: {
|
|
7
|
+
context?: string;
|
|
8
|
+
enablePiiRedaction?: boolean;
|
|
9
|
+
piiRedactionOptions?: any;
|
|
10
|
+
});
|
|
11
|
+
debug(message: string, metadata?: LogMetadata): void;
|
|
12
|
+
log(message: string, metadata?: LogMetadata): void;
|
|
13
|
+
warn(message: string, metadata?: LogMetadata): void;
|
|
14
|
+
error(message: string, metadata?: LogMetadata): void;
|
|
15
|
+
setLogLevel(level: LogLevel): void;
|
|
16
|
+
isLevelEnabled(_level: LogLevel): boolean;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=nestjs-logger.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestjs-logger.adapter.d.ts","sourceRoot":"","sources":["../../src/providers/nestjs-logger.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AA8CzF,qBACa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAOjC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAAC,mBAAmB,CAAC,EAAE,GAAG,CAAA;KAAE;IAkBnG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBpD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IA4BpD,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAYlC,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAK1C"}
|