@nauth-toolkit/nestjs 0.1.13 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.module.d.ts +48 -0
- package/dist/auth.module.d.ts.map +1 -1
- package/dist/auth.module.js +161 -19
- package/dist/auth.module.js.map +1 -1
- package/dist/decorators/client-info.decorator.d.ts +39 -0
- package/dist/decorators/client-info.decorator.d.ts.map +1 -1
- package/dist/decorators/client-info.decorator.js +41 -0
- package/dist/decorators/client-info.decorator.js.map +1 -1
- package/dist/decorators/current-user.decorator.d.ts +6 -0
- package/dist/decorators/current-user.decorator.d.ts.map +1 -1
- package/dist/decorators/current-user.decorator.js +6 -0
- package/dist/decorators/current-user.decorator.js.map +1 -1
- package/dist/decorators/public.decorator.d.ts +7 -0
- package/dist/decorators/public.decorator.d.ts.map +1 -1
- package/dist/decorators/public.decorator.js +7 -0
- package/dist/decorators/public.decorator.js.map +1 -1
- package/dist/decorators/token-delivery.decorator.d.ts +20 -0
- package/dist/decorators/token-delivery.decorator.d.ts.map +1 -1
- package/dist/dto/index.d.ts +9 -0
- package/dist/dto/index.d.ts.map +1 -1
- package/dist/dto/index.js +10 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/factories/storage-adapter.factory.d.ts +107 -0
- package/dist/factories/storage-adapter.factory.d.ts.map +1 -1
- package/dist/factories/storage-adapter.factory.js +129 -0
- package/dist/factories/storage-adapter.factory.js.map +1 -1
- package/dist/filters/nauth-http-exception.filter.d.ts +80 -0
- package/dist/filters/nauth-http-exception.filter.d.ts.map +1 -1
- package/dist/filters/nauth-http-exception.filter.js +96 -0
- package/dist/filters/nauth-http-exception.filter.js.map +1 -1
- package/dist/guards/auth.guard.d.ts +26 -0
- package/dist/guards/auth.guard.d.ts.map +1 -1
- package/dist/guards/auth.guard.js +44 -0
- package/dist/guards/auth.guard.js.map +1 -1
- package/dist/guards/csrf.guard.d.ts +21 -0
- package/dist/guards/csrf.guard.d.ts.map +1 -1
- package/dist/guards/csrf.guard.js +30 -1
- package/dist/guards/csrf.guard.js.map +1 -1
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/client-info.interceptor.d.ts +37 -0
- package/dist/interceptors/client-info.interceptor.d.ts.map +1 -1
- package/dist/interceptors/client-info.interceptor.js +89 -1
- package/dist/interceptors/client-info.interceptor.js.map +1 -1
- package/dist/interceptors/cookie-token.interceptor.d.ts +16 -0
- package/dist/interceptors/cookie-token.interceptor.d.ts.map +1 -1
- package/dist/interceptors/cookie-token.interceptor.js +80 -16
- package/dist/interceptors/cookie-token.interceptor.js.map +1 -1
- package/dist/providers/nestjs-logger.adapter.d.ts +96 -0
- package/dist/providers/nestjs-logger.adapter.d.ts.map +1 -1
- package/dist/providers/nestjs-logger.adapter.js +105 -1
- package/dist/providers/nestjs-logger.adapter.js.map +1 -1
- package/dist/services/csrf.service.d.ts +61 -0
- package/dist/services/csrf.service.d.ts.map +1 -1
- package/dist/services/csrf.service.js +62 -1
- package/dist/services/csrf.service.js.map +1 -1
- package/dist/services/migrations-bootstrap.service.d.ts +6 -0
- package/dist/services/migrations-bootstrap.service.d.ts.map +1 -1
- package/dist/services/migrations-bootstrap.service.js +6 -0
- package/dist/services/migrations-bootstrap.service.js.map +1 -1
- package/package.json +14 -2
|
@@ -16,28 +16,89 @@ exports.CsrfService = void 0;
|
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const crypto_1 = require("crypto");
|
|
18
18
|
const core_1 = require("@nauth-toolkit/core");
|
|
19
|
+
/**
|
|
20
|
+
* CSRF Service
|
|
21
|
+
*
|
|
22
|
+
* Generates and manages CSRF tokens for cookie-based token delivery.
|
|
23
|
+
* CSRF protection prevents Cross-Site Request Forgery attacks when tokens
|
|
24
|
+
* are stored in httpOnly cookies.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const csrfService = new CsrfService(config);
|
|
29
|
+
* const token = csrfService.generateToken();
|
|
30
|
+
* const cookieOptions = csrfService.getCookieOptions();
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
19
33
|
let CsrfService = class CsrfService {
|
|
20
34
|
config;
|
|
21
35
|
constructor(config) {
|
|
22
36
|
this.config = config;
|
|
23
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate a cryptographically secure CSRF token
|
|
40
|
+
*
|
|
41
|
+
* @returns CSRF token as hexadecimal string
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const token = csrfService.generateToken();
|
|
46
|
+
* // Returns: 'a1b2c3d4e5f6...' (length depends on config.security.csrf.tokenLength)
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
24
49
|
generateToken() {
|
|
25
50
|
const tokenLength = this.config.security?.csrf?.tokenLength || 32;
|
|
26
51
|
return (0, crypto_1.randomBytes)(tokenLength).toString('hex');
|
|
27
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Get CSRF cookie options from configuration
|
|
55
|
+
*
|
|
56
|
+
* @returns Cookie options object with defaults
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const options = csrfService.getCookieOptions();
|
|
61
|
+
* res.cookie(csrfService.getCookieName(), token, options);
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
28
64
|
getCookieOptions() {
|
|
29
65
|
const config = this.config.security?.csrf?.cookieOptions;
|
|
30
66
|
return {
|
|
31
|
-
httpOnly: false,
|
|
67
|
+
httpOnly: false, // Fixed: CSRF token must be readable by JavaScript to send in header
|
|
32
68
|
secure: config?.secure ?? true,
|
|
33
69
|
sameSite: config?.sameSite ?? 'strict',
|
|
34
70
|
domain: config?.domain,
|
|
35
71
|
path: config?.path ?? '/',
|
|
36
72
|
};
|
|
37
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Get CSRF cookie name from configuration
|
|
76
|
+
*
|
|
77
|
+
* If explicitly configured via security.csrf.cookieName, uses that value.
|
|
78
|
+
* Otherwise, uses the prefix: `${prefix}csrf_token` (default: 'nauth_csrf_token')
|
|
79
|
+
*
|
|
80
|
+
* @returns Cookie name (default: 'nauth_csrf_token' with default prefix)
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const cookieName = csrfService.getCookieName();
|
|
85
|
+
* // Returns: 'nauth_csrf_token' (or configured value)
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
38
88
|
getCookieName() {
|
|
39
89
|
return (0, core_1.getCsrfTokenCookieName)(this.config);
|
|
40
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Get CSRF header name from configuration
|
|
93
|
+
*
|
|
94
|
+
* @returns Header name (default: 'x-csrf-token')
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const headerName = csrfService.getHeaderName();
|
|
99
|
+
* // Returns: 'x-csrf-token' (or configured value)
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
41
102
|
getHeaderName() {
|
|
42
103
|
return this.config.security?.csrf?.headerName || 'x-csrf-token';
|
|
43
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.service.js","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mCAAqC;AACrC,8CAA0E;
|
|
1
|
+
{"version":3,"file":"csrf.service.js","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mCAAqC;AACrC,8CAA0E;AAE1E;;;;;;;;;;;;;GAaG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAW;IAGH;IAFnB,YAEmB,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IACnC,CAAC;IAEJ;;;;;;;;;;OAUG;IACH,aAAa;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;QAClE,OAAO,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;OAUG;IACH,gBAAgB;QAOd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;QACzD,OAAO;YACL,QAAQ,EAAE,KAAK,EAAE,qEAAqE;YACtF,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI;YAC9B,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ;YACtC,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,GAAG;SAC1B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,aAAa;QACX,OAAO,IAAA,6BAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC;IAClE,CAAC;CACF,CAAA;AAlFY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,cAAc,CAAC,CAAA;;GAFd,WAAW,CAkFvB"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { Provider } from '@nestjs/common';
|
|
2
2
|
export declare const NAUTH_MIGRATIONS_BOOTSTRAP = "NAUTH_MIGRATIONS_BOOTSTRAP";
|
|
3
|
+
/**
|
|
4
|
+
* NestJS provider that auto-runs nauth-toolkit migrations on module init.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* This ensures NestJS apps get the same "zero bootstrap burden" migration behavior as `NAuth.create()`.
|
|
8
|
+
*/
|
|
3
9
|
export declare const nauthMigrationsBootstrapProvider: Provider;
|
|
4
10
|
//# sourceMappingURL=migrations-bootstrap.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-bootstrap.service.d.ts","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations-bootstrap.service.d.ts","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAevE;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,QAkC9C,CAAC"}
|
|
@@ -44,6 +44,12 @@ function getAdapterPackageName(dataSource) {
|
|
|
44
44
|
return '@nauth-toolkit/database-typeorm-mysql';
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* NestJS provider that auto-runs nauth-toolkit migrations on module init.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* This ensures NestJS apps get the same "zero bootstrap burden" migration behavior as `NAuth.create()`.
|
|
52
|
+
*/
|
|
47
53
|
exports.nauthMigrationsBootstrapProvider = {
|
|
48
54
|
provide: exports.NAUTH_MIGRATIONS_BOOTSTRAP,
|
|
49
55
|
useFactory: async (config, logger, dataSource) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-bootstrap.service.js","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAqC;AAExB,QAAA,0BAA0B,GAAG,4BAA4B,CAAC;AAMvE,SAAS,qBAAqB,CAC5B,UAAsB;IAEtB,MAAM,IAAI,GAAI,UAAU,CAAC,OAA0C,EAAE,IAAI,CAAC;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,0CAA0C,CAAC;IAC3E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations-bootstrap.service.js","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAqC;AAExB,QAAA,0BAA0B,GAAG,4BAA4B,CAAC;AAMvE,SAAS,qBAAqB,CAC5B,UAAsB;IAEtB,MAAM,IAAI,GAAI,UAAU,CAAC,OAA0C,EAAE,IAAI,CAAC;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,0CAA0C,CAAC;IAC3E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACU,QAAA,gCAAgC,GAAa;IACxD,OAAO,EAAE,kCAA0B;IACnC,UAAU,EAAE,KAAK,EAAE,MAAmB,EAAE,MAAmB,EAAE,UAAsB,EAAE,EAAE;QACrF,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,CAAC,iEAAiE,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,CACb,6EAA6E,MAAM,CAChF,UAAU,CAAC,OAA0C,EAAE,IAAI,CAC7D,EAAE,CACJ,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAA+B,CAAC;QACpC,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,yBAAa,kBAAkB,uCAAC,CAAqC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,oDAAoD,kBAAkB,KAAK,OAAO,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,OAAO,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,qCAAqC,kBAAkB,uCAAuC,CAAC,CAAC;QAClH,CAAC;QAED,MAAM,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,oBAAU,CAAC;CACrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nauth-toolkit/nestjs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "NestJS adapter for nauth-toolkit - Platform-specific integrations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
7
14
|
"scripts": {
|
|
8
15
|
"build": "tsc -b",
|
|
9
16
|
"test": "jest",
|
|
@@ -32,7 +39,7 @@
|
|
|
32
39
|
"typeorm": "^0.3.0"
|
|
33
40
|
},
|
|
34
41
|
"dependencies": {
|
|
35
|
-
"@nauth-toolkit/core": "0.1.
|
|
42
|
+
"@nauth-toolkit/core": "0.1.17"
|
|
36
43
|
},
|
|
37
44
|
"devDependencies": {
|
|
38
45
|
"@nestjs/common": "^11.1.8",
|
|
@@ -59,5 +66,10 @@
|
|
|
59
66
|
],
|
|
60
67
|
"engines": {
|
|
61
68
|
"node": ">=22.0.0"
|
|
69
|
+
},
|
|
70
|
+
"sideEffects": false,
|
|
71
|
+
"repository": {
|
|
72
|
+
"type": "git",
|
|
73
|
+
"url": "https://github.com/noorix/nauth-toolkit"
|
|
62
74
|
}
|
|
63
75
|
}
|