@zintrust/core 0.4.18 → 0.4.20
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/package.json +1 -1
- package/src/cli/commands/AddCommand.d.ts +16 -0
- package/src/cli/commands/AddCommand.d.ts.map +1 -1
- package/src/cli/commands/AddCommand.js +157 -28
- package/src/cli/commands/DockerCommand.d.ts.map +1 -1
- package/src/cli/commands/DockerCommand.js +32 -4
- package/src/cli/commands/StartCommand.d.ts +7 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +109 -20
- package/src/config/middleware.d.ts +23 -0
- package/src/config/middleware.d.ts.map +1 -1
- package/src/config/middleware.js +66 -31
- package/src/functions/cloudflare.d.ts.map +1 -1
- package/src/functions/cloudflare.js +28 -12
- package/src/http/Kernel.d.ts.map +1 -1
- package/src/http/Kernel.js +27 -1
- package/src/index.d.ts +2 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -3
- package/src/middleware/AuthMiddleware.d.ts +2 -0
- package/src/middleware/AuthMiddleware.d.ts.map +1 -1
- package/src/middleware/AuthMiddleware.js +8 -1
- package/src/middleware/BulletproofAuthMiddleware.d.ts +2 -0
- package/src/middleware/BulletproofAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/BulletproofAuthMiddleware.js +13 -5
- package/src/middleware/CsrfMiddleware.d.ts +2 -0
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +9 -3
- package/src/middleware/ErrorHandlerMiddleware.d.ts +5 -1
- package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -1
- package/src/middleware/ErrorHandlerMiddleware.js +12 -2
- package/src/middleware/JwtAuthMiddleware.d.ts +2 -0
- package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
- package/src/middleware/JwtAuthMiddleware.js +39 -4
- package/src/middleware/MiddlewareFailureResponder.d.ts +15 -0
- package/src/middleware/MiddlewareFailureResponder.d.ts.map +1 -0
- package/src/middleware/MiddlewareFailureResponder.js +15 -0
- package/src/middleware/RateLimiter.d.ts +2 -0
- package/src/middleware/RateLimiter.d.ts.map +1 -1
- package/src/middleware/RateLimiter.js +10 -4
- package/src/middleware/SecurityMiddleware.d.ts +1 -1
- package/src/middleware/SecurityMiddleware.d.ts.map +1 -1
- package/src/middleware/SecurityMiddleware.js +38 -7
- package/src/middleware/ValidationMiddleware.d.ts +11 -6
- package/src/middleware/ValidationMiddleware.d.ts.map +1 -1
- package/src/middleware/ValidationMiddleware.js +48 -19
- package/src/middleware/index.d.ts +1 -0
- package/src/middleware/index.d.ts.map +1 -1
- package/src/middleware/index.js +1 -0
- package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
- package/src/runtime/RuntimeAdapter.js +12 -2
- package/src/runtime/WorkersModule.d.ts.map +1 -1
- package/src/runtime/WorkersModule.js +4 -3
- package/src/security/Xss.d.ts +2 -2
- package/src/security/Xss.d.ts.map +1 -1
- package/src/security/Xss.js +3 -4
- package/src/templates/project/basic/app/Middleware/AuthFailureResponder.ts.tpl +10 -0
- package/src/templates/project/basic/config/middleware.ts.tpl +18 -0
package/src/config/middleware.js
CHANGED
|
@@ -17,7 +17,7 @@ import { Sanitizer } from '../security/Sanitizer.js';
|
|
|
17
17
|
import { Schema } from '../validation/Validator.js';
|
|
18
18
|
export const MiddlewareBody = {
|
|
19
19
|
email: 'email',
|
|
20
|
-
password: 'password',
|
|
20
|
+
password: 'password', //NOSONAR
|
|
21
21
|
name: 'name',
|
|
22
22
|
count: 'count',
|
|
23
23
|
};
|
|
@@ -67,18 +67,31 @@ const resolveUserMutationRateLimit = (loadMiddlewareConfig) => {
|
|
|
67
67
|
'Too many user requests, please try again after 1 minute.',
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
-
function createRateLimitMiddlewares(loadMiddlewareConfig) {
|
|
71
|
-
const fillRateLimit = RateLimiter.create(
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
function createRateLimitMiddlewares(loadMiddlewareConfig, responders) {
|
|
71
|
+
const fillRateLimit = RateLimiter.create({
|
|
72
|
+
...resolveFillRateLimit(loadMiddlewareConfig),
|
|
73
|
+
onFailure: responders.fillRateLimit,
|
|
74
|
+
});
|
|
75
|
+
const authRateLimit = RateLimiter.create({
|
|
76
|
+
...resolveAuthRateLimit(loadMiddlewareConfig),
|
|
77
|
+
onFailure: responders.authRateLimit,
|
|
78
|
+
});
|
|
79
|
+
const userMutationRateLimit = RateLimiter.create({
|
|
80
|
+
...resolveUserMutationRateLimit(loadMiddlewareConfig),
|
|
81
|
+
onFailure: responders.userMutationRateLimit,
|
|
82
|
+
});
|
|
74
83
|
return Object.freeze({
|
|
75
|
-
rateLimit: RateLimiter.create(
|
|
84
|
+
rateLimit: RateLimiter.create({
|
|
85
|
+
windowMs: 60_000,
|
|
86
|
+
max: 100,
|
|
87
|
+
onFailure: responders.rateLimit,
|
|
88
|
+
}),
|
|
76
89
|
fillRateLimit,
|
|
77
90
|
authRateLimit,
|
|
78
91
|
userMutationRateLimit,
|
|
79
92
|
});
|
|
80
93
|
}
|
|
81
|
-
function createAuthValidationMiddlewares() {
|
|
94
|
+
function createAuthValidationMiddlewares(responders) {
|
|
82
95
|
return {
|
|
83
96
|
validateLogin: Validation.createBodyWithSanitization(Schema.typed()
|
|
84
97
|
.required(MiddlewareBody.email)
|
|
@@ -87,7 +100,7 @@ function createAuthValidationMiddlewares() {
|
|
|
87
100
|
.string(MiddlewareBody.password), {
|
|
88
101
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
89
102
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
90
|
-
}),
|
|
103
|
+
}, { onFailure: responders.validateLogin, middlewareKey: 'validateLogin' }),
|
|
91
104
|
validateRegister: Validation.createBodyWithSanitization(Schema.typed()
|
|
92
105
|
.required(MiddlewareBody.name)
|
|
93
106
|
.string(MiddlewareBody.name)
|
|
@@ -100,10 +113,10 @@ function createAuthValidationMiddlewares() {
|
|
|
100
113
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
101
114
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
102
115
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
103
|
-
}),
|
|
116
|
+
}, { onFailure: responders.validateRegister, middlewareKey: 'validateRegister' }),
|
|
104
117
|
};
|
|
105
118
|
}
|
|
106
|
-
function createUserValidationMiddlewares() {
|
|
119
|
+
function createUserValidationMiddlewares(responders) {
|
|
107
120
|
return {
|
|
108
121
|
validateUserStore: Validation.createBodyWithSanitization(Schema.typed()
|
|
109
122
|
.required(MiddlewareBody.name)
|
|
@@ -117,7 +130,7 @@ function createUserValidationMiddlewares() {
|
|
|
117
130
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
118
131
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
119
132
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
120
|
-
}),
|
|
133
|
+
}, { onFailure: responders.validateUserStore, middlewareKey: 'validateUserStore' }),
|
|
121
134
|
validateUserUpdate: Validation.createBodyWithSanitization(Schema.typed()
|
|
122
135
|
.custom(MiddlewareBody.name, (v) => v === undefined || typeof v === 'string', MiddlewareBody.name + ' must be a string')
|
|
123
136
|
.minLength(MiddlewareBody.name, 1)
|
|
@@ -127,34 +140,44 @@ function createUserValidationMiddlewares() {
|
|
|
127
140
|
name: (v) => Sanitizer.nameText(v).trim(),
|
|
128
141
|
email: (v) => Sanitizer.email(v).trim().toLowerCase(),
|
|
129
142
|
password: (v) => Sanitizer.safePasswordChars(v),
|
|
130
|
-
}),
|
|
143
|
+
}, { onFailure: responders.validateUserUpdate, middlewareKey: 'validateUserUpdate' }),
|
|
131
144
|
validateUserFill: Validation.createBodyWithSanitization(Schema.typed()
|
|
132
145
|
.custom(MiddlewareBody.count, (v) => v === undefined || (typeof v === 'number' && Number.isFinite(v)), MiddlewareBody.count + ' must be a number')
|
|
133
146
|
.min(MiddlewareBody.count, 1)
|
|
134
|
-
.max(MiddlewareBody.count, 100)),
|
|
147
|
+
.max(MiddlewareBody.count, 100), undefined, { onFailure: responders.validateUserFill, middlewareKey: 'validateUserFill' }),
|
|
135
148
|
};
|
|
136
149
|
}
|
|
137
|
-
function createValidationMiddlewares() {
|
|
150
|
+
function createValidationMiddlewares(responders) {
|
|
138
151
|
return Object.freeze({
|
|
139
|
-
...createAuthValidationMiddlewares(),
|
|
140
|
-
...createUserValidationMiddlewares(),
|
|
152
|
+
...createAuthValidationMiddlewares(responders),
|
|
153
|
+
...createUserValidationMiddlewares(responders),
|
|
141
154
|
});
|
|
142
155
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
156
|
+
const resolveMiddlewareResponders = (loadMiddlewareConfig) => {
|
|
157
|
+
if (!isObject(loadMiddlewareConfig.responders))
|
|
158
|
+
return {};
|
|
159
|
+
const entries = Object.entries(loadMiddlewareConfig.responders).filter((entry) => {
|
|
160
|
+
const [name, responder] = entry;
|
|
161
|
+
return typeof name === 'string' && name.trim() !== '' && typeof responder === 'function';
|
|
162
|
+
});
|
|
163
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
164
|
+
};
|
|
165
|
+
function createSharedMiddlewares(loadMiddlewareConfig, responders) {
|
|
166
|
+
const rateLimits = createRateLimitMiddlewares(loadMiddlewareConfig, responders);
|
|
167
|
+
const validations = createValidationMiddlewares(responders);
|
|
146
168
|
return Object.freeze({
|
|
147
169
|
log: LoggingMiddleware.create(),
|
|
148
|
-
error: ErrorHandlerMiddleware.create(),
|
|
170
|
+
error: ErrorHandlerMiddleware.create({ onFailure: responders.error }),
|
|
149
171
|
security: SecurityMiddleware.create(),
|
|
150
172
|
sanitizeBody: SanitizeBodyMiddleware.create(),
|
|
151
173
|
...rateLimits,
|
|
152
174
|
csrf: CsrfMiddleware.create({
|
|
153
175
|
skipPaths: loadMiddlewareConfig?.skipPaths ?? [],
|
|
176
|
+
onFailure: responders.csrf,
|
|
154
177
|
}),
|
|
155
|
-
auth: AuthMiddleware.create(),
|
|
156
|
-
jwt: JwtAuthMiddleware.create(),
|
|
157
|
-
bulletproof: BulletproofAuthMiddleware.create(),
|
|
178
|
+
auth: AuthMiddleware.create({ onUnauthorized: responders.auth }),
|
|
179
|
+
jwt: JwtAuthMiddleware.create({ onUnauthorized: responders.jwt }),
|
|
180
|
+
bulletproof: BulletproofAuthMiddleware.create({ onUnauthorized: responders.bulletproof }),
|
|
158
181
|
...validations,
|
|
159
182
|
});
|
|
160
183
|
}
|
|
@@ -174,6 +197,16 @@ const resolveProjectRouteMiddlewares = (loadMiddlewareConfig) => {
|
|
|
174
197
|
});
|
|
175
198
|
return Object.fromEntries(entries);
|
|
176
199
|
};
|
|
200
|
+
const applySharedMiddlewareOverrides = (shared, projectRoute) => {
|
|
201
|
+
const overridden = { ...shared };
|
|
202
|
+
for (const key of Object.keys(MiddlewareKeys)) {
|
|
203
|
+
const candidate = projectRoute[key];
|
|
204
|
+
if (typeof candidate === 'function') {
|
|
205
|
+
overridden[key] = candidate;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return Object.freeze(overridden);
|
|
209
|
+
};
|
|
177
210
|
export function createMiddlewareConfig() {
|
|
178
211
|
const loadMiddlewareConfig = StartupConfigFileRegistry.get(StartupConfigFile.Middleware) ?? {};
|
|
179
212
|
const skipPathsFromEnv = Env.get('CSRF_SKIP_PATHS', '')
|
|
@@ -186,23 +219,25 @@ export function createMiddlewareConfig() {
|
|
|
186
219
|
? loadMiddlewareConfig.skipPaths
|
|
187
220
|
: skipPathsFromEnv,
|
|
188
221
|
};
|
|
189
|
-
const
|
|
222
|
+
const responders = resolveMiddlewareResponders(effectiveMiddlewareConfig);
|
|
223
|
+
const shared = createSharedMiddlewares(effectiveMiddlewareConfig, responders);
|
|
190
224
|
const projectGlobal = resolveProjectGlobalMiddlewares(effectiveMiddlewareConfig);
|
|
191
225
|
const projectRoute = resolveProjectRouteMiddlewares(effectiveMiddlewareConfig);
|
|
226
|
+
const resolvedShared = applySharedMiddlewareOverrides(shared, projectRoute);
|
|
192
227
|
const middlewareConfigObj = {
|
|
193
228
|
global: [
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
229
|
+
resolvedShared.log,
|
|
230
|
+
resolvedShared.error,
|
|
231
|
+
resolvedShared.security,
|
|
232
|
+
resolvedShared.rateLimit,
|
|
198
233
|
fileUploadMiddleware,
|
|
199
234
|
bodyParsingMiddleware,
|
|
200
|
-
|
|
201
|
-
|
|
235
|
+
resolvedShared.csrf,
|
|
236
|
+
resolvedShared.sanitizeBody,
|
|
202
237
|
...projectGlobal,
|
|
203
238
|
],
|
|
204
239
|
route: {
|
|
205
|
-
...
|
|
240
|
+
...resolvedShared,
|
|
206
241
|
...projectRoute,
|
|
207
242
|
},
|
|
208
243
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/functions/cloudflare.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../../src/functions/cloudflare.ts"],"names":[],"mappings":";mBAoLuB,OAAO,QAAQ,OAAO,QAAQ,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;AADhF,wBAoCE"}
|
|
@@ -1,53 +1,66 @@
|
|
|
1
|
+
import { clearMiddlewareConfigCache } from '../config/middleware.js';
|
|
1
2
|
import { Logger } from '../config/logger.js';
|
|
2
3
|
import { CloudflareAdapter } from '../runtime/adapters/CloudflareAdapter.js';
|
|
3
4
|
import mergeOverrideValues from '../runtime/OverrideValueMerge.js';
|
|
4
5
|
import { ProjectRuntime } from '../runtime/ProjectRuntime.js';
|
|
5
|
-
import { StartupConfigFile } from '../runtime/StartupConfigFileRegistry.js';
|
|
6
|
+
import { StartupConfigFile, StartupConfigFileRegistry, } from '../runtime/StartupConfigFileRegistry.js';
|
|
6
7
|
import { WorkerAdapterImports } from '../runtime/WorkerAdapterImports.js';
|
|
7
8
|
import { getKernel } from '../runtime/getKernel.js';
|
|
8
9
|
const startupConfigModules = Object.freeze([
|
|
9
10
|
{
|
|
10
11
|
file: StartupConfigFile.Broadcast,
|
|
11
|
-
rootModuleId: '@runtime-config/' + 'broadcast.ts',
|
|
12
12
|
serviceModuleId: '@service-runtime-config/' + 'broadcast.ts',
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
file: StartupConfigFile.Cache,
|
|
16
|
-
rootModuleId: '@runtime-config/' + 'cache.ts',
|
|
17
16
|
serviceModuleId: '@service-runtime-config/' + 'cache.ts',
|
|
18
17
|
},
|
|
19
18
|
{
|
|
20
19
|
file: StartupConfigFile.Database,
|
|
21
|
-
rootModuleId: '@runtime-config/' + 'database.ts',
|
|
22
20
|
serviceModuleId: '@service-runtime-config/' + 'database.ts',
|
|
23
21
|
},
|
|
24
22
|
{
|
|
25
23
|
file: StartupConfigFile.Mail,
|
|
26
|
-
rootModuleId: '@runtime-config/' + 'mail.ts',
|
|
27
24
|
serviceModuleId: '@service-runtime-config/' + 'mail.ts',
|
|
28
25
|
},
|
|
29
26
|
{
|
|
30
27
|
file: StartupConfigFile.Middleware,
|
|
31
|
-
rootModuleId: '@runtime-config/' + 'middleware.ts',
|
|
32
28
|
serviceModuleId: '@service-runtime-config/' + 'middleware.ts',
|
|
33
29
|
},
|
|
34
30
|
{
|
|
35
31
|
file: StartupConfigFile.Notification,
|
|
36
|
-
rootModuleId: '@runtime-config/' + 'notification.ts',
|
|
37
32
|
serviceModuleId: '@service-runtime-config/' + 'notification.ts',
|
|
38
33
|
},
|
|
39
34
|
{
|
|
40
35
|
file: StartupConfigFile.Queue,
|
|
41
|
-
rootModuleId: '@runtime-config/' + 'queue.ts',
|
|
42
36
|
serviceModuleId: '@service-runtime-config/' + 'queue.ts',
|
|
43
37
|
},
|
|
44
38
|
{
|
|
45
39
|
file: StartupConfigFile.Storage,
|
|
46
|
-
rootModuleId: '@runtime-config/' + 'storage.ts',
|
|
47
40
|
serviceModuleId: '@service-runtime-config/' + 'storage.ts',
|
|
48
41
|
},
|
|
49
42
|
]);
|
|
50
|
-
const
|
|
43
|
+
const rootStartupImporters = Object.freeze({
|
|
44
|
+
[StartupConfigFile.Broadcast]: async () => import('@runtime-config/' + 'broadcast.ts'),
|
|
45
|
+
[StartupConfigFile.Cache]: async () => import('@runtime-config/' + 'cache.ts'),
|
|
46
|
+
[StartupConfigFile.Database]: async () => import('@runtime-config/' + 'database.ts'),
|
|
47
|
+
[StartupConfigFile.Mail]: async () => import('@runtime-config/' + 'mail.ts'),
|
|
48
|
+
[StartupConfigFile.Middleware]: async () => import('@runtime-config/' + 'middleware.ts'),
|
|
49
|
+
[StartupConfigFile.Notification]: async () => import('@runtime-config/' + 'notification.ts'),
|
|
50
|
+
[StartupConfigFile.Queue]: async () => import('@runtime-config/' + 'queue.ts'),
|
|
51
|
+
[StartupConfigFile.Storage]: async () => import('@runtime-config/' + 'storage.ts'),
|
|
52
|
+
[StartupConfigFile.Workers]: async () => import('@runtime-config/' + 'workers.ts'),
|
|
53
|
+
});
|
|
54
|
+
const importOptionalDefault = async (importer) => {
|
|
55
|
+
try {
|
|
56
|
+
const module = await importer();
|
|
57
|
+
return module.default;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const importOptionalDefaultById = async (moduleId) => {
|
|
51
64
|
try {
|
|
52
65
|
const module = (await import(moduleId));
|
|
53
66
|
return module.default;
|
|
@@ -57,10 +70,10 @@ const importOptionalDefault = async (moduleId) => {
|
|
|
57
70
|
}
|
|
58
71
|
};
|
|
59
72
|
const resolveStartupOverrideValue = async (entry) => {
|
|
60
|
-
const rootOverride = await importOptionalDefault(entry.
|
|
73
|
+
const rootOverride = await importOptionalDefault(rootStartupImporters[entry.file]);
|
|
61
74
|
const serviceOverride = ProjectRuntime.getActiveService() === undefined
|
|
62
75
|
? undefined
|
|
63
|
-
: await
|
|
76
|
+
: await importOptionalDefaultById(entry.serviceModuleId);
|
|
64
77
|
if (rootOverride === undefined)
|
|
65
78
|
return serviceOverride;
|
|
66
79
|
if (serviceOverride === undefined)
|
|
@@ -82,6 +95,9 @@ const applyStartupConfigOverrides = async () => {
|
|
|
82
95
|
}
|
|
83
96
|
globalAny.__zintrustStartupConfigOverrides.set(entry.file, entry.value);
|
|
84
97
|
}
|
|
98
|
+
StartupConfigFileRegistry.clear();
|
|
99
|
+
clearMiddlewareConfigCache();
|
|
100
|
+
await StartupConfigFileRegistry.preload(startupConfigModules.map((entry) => entry.file));
|
|
85
101
|
}
|
|
86
102
|
catch (error) {
|
|
87
103
|
Logger.error('Error applying startup config overrides:', error);
|
package/src/http/Kernel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../../src/http/Kernel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK7E,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/C,wBAAwB,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5D,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACpE,SAAS,IAAI,OAAO,CAAC;IACrB,YAAY,IAAI,iBAAiB,CAAC;IAClC,kBAAkB,IAAI,gBAAgB,CAAC;IAGvC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5C,cAAc,IAAI,IAAI,CAAC;IACvB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"Kernel.d.ts","sourceRoot":"","sources":["../../../src/http/Kernel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK7E,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/C,wBAAwB,CAAC,GAAG,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5D,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACpE,SAAS,IAAI,OAAO,CAAC;IACrB,YAAY,IAAI,iBAAiB,CAAC;IAClC,kBAAkB,IAAI,gBAAgB,CAAC;IAGvC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5C,cAAc,IAAI,IAAI,CAAC;IACvB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AA6VD,eAAO,MAAM,MAAM;qBA1DK,OAAO,aAAa,iBAAiB,KAAG,OAAO;EA4DrE,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
package/src/http/Kernel.js
CHANGED
|
@@ -60,6 +60,32 @@ const resolveMiddlewareForRoute = (route, globalMiddleware, routeMiddleware) =>
|
|
|
60
60
|
.filter((mw) => typeof mw === 'function');
|
|
61
61
|
return [...globalMiddleware, ...resolvedRouteMiddleware];
|
|
62
62
|
};
|
|
63
|
+
const PREFLIGHT_FALLBACK_METHODS = Object.freeze([
|
|
64
|
+
'GET',
|
|
65
|
+
'HEAD',
|
|
66
|
+
'POST',
|
|
67
|
+
'PUT',
|
|
68
|
+
'PATCH',
|
|
69
|
+
'DELETE',
|
|
70
|
+
'*',
|
|
71
|
+
]);
|
|
72
|
+
const resolveRouteWithPreflightFallback = (router, method, path) => {
|
|
73
|
+
const direct = Router.match(router, method, path);
|
|
74
|
+
if (direct !== null || method !== 'OPTIONS')
|
|
75
|
+
return direct;
|
|
76
|
+
for (const fallbackMethod of PREFLIGHT_FALLBACK_METHODS) {
|
|
77
|
+
const matched = Router.match(router, fallbackMethod, path);
|
|
78
|
+
if (matched === null)
|
|
79
|
+
continue;
|
|
80
|
+
return {
|
|
81
|
+
...matched,
|
|
82
|
+
handler: async () => {
|
|
83
|
+
await Promise.resolve();
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
};
|
|
63
89
|
const maybeStartKernelTraceSpan = (req, context) => {
|
|
64
90
|
if (OpenTelemetry.isEnabled() === false)
|
|
65
91
|
return undefined;
|
|
@@ -85,7 +111,7 @@ const maybeSetKernelTraceRoute = (traceSpan, method, routeLabel) => {
|
|
|
85
111
|
};
|
|
86
112
|
const runKernelPipeline = async (router, globalMiddleware, routeMiddleware, req, res, context, traceSpan) => {
|
|
87
113
|
Logger.info(`[${req.getMethod()}] ${req.getPath()}`);
|
|
88
|
-
const route =
|
|
114
|
+
const route = resolveRouteWithPreflightFallback(router, req.getMethod(), req.getPath());
|
|
89
115
|
if (!route) {
|
|
90
116
|
const routeLabel = 'not_found';
|
|
91
117
|
maybeSetKernelTraceRoute(traceSpan, context.method, routeLabel);
|
package/src/index.d.ts
CHANGED
|
@@ -102,6 +102,8 @@ export { EventDispatcher } from './events/EventDispatcher';
|
|
|
102
102
|
export type { EventListener, EventMap, IEventDispatcher } from './events/EventDispatcher';
|
|
103
103
|
export { SessionManager } from './session/SessionManager';
|
|
104
104
|
export type { ISession, ISessionManager, SessionData, SessionManagerOptions, } from './session/SessionManager';
|
|
105
|
+
export { defaultMiddlewareFailureResponder, respondWithMiddlewareFailure, } from './middleware/MiddlewareFailureResponder';
|
|
106
|
+
export type { MiddlewareFailureContext, MiddlewareFailureResponder, } from './middleware/MiddlewareFailureResponder';
|
|
105
107
|
export { Env } from './config/env';
|
|
106
108
|
export { Logger } from './config/logger';
|
|
107
109
|
export { LocalD1Resolver } from './cli/d1/LocalD1Resolver';
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zintrust/core v0.4.
|
|
2
|
+
* @zintrust/core v0.4.20
|
|
3
3
|
*
|
|
4
4
|
* ZinTrust Framework - Production-Grade TypeScript Backend
|
|
5
5
|
* Built for performance, type safety, and exceptional developer experience
|
|
6
6
|
*
|
|
7
7
|
* Build Information:
|
|
8
|
-
* Built: 2026-03-
|
|
8
|
+
* Built: 2026-03-26T09:10:50.895Z
|
|
9
9
|
* Node: >=20.0.0
|
|
10
10
|
* License: MIT
|
|
11
11
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Available at runtime for debugging and health checks
|
|
22
22
|
*/
|
|
23
23
|
export const ZINTRUST_VERSION = '0.1.41';
|
|
24
|
-
export const ZINTRUST_BUILD_DATE = '2026-03-
|
|
24
|
+
export const ZINTRUST_BUILD_DATE = '2026-03-26T09:10:50.609Z'; // Replaced during build
|
|
25
25
|
export { Application } from './boot/Application.js';
|
|
26
26
|
export { AwsSigV4 } from './common/index.js';
|
|
27
27
|
export { SignedRequest } from './security/SignedRequest.js';
|
|
@@ -106,6 +106,8 @@ export { RUNTIME_PLATFORM, RuntimeServices, detectCloudflareWorkers, detectRunti
|
|
|
106
106
|
export { EventDispatcher } from './events/EventDispatcher.js';
|
|
107
107
|
// Sessions
|
|
108
108
|
export { SessionManager } from './session/SessionManager.js';
|
|
109
|
+
// Middleware responders
|
|
110
|
+
export { defaultMiddlewareFailureResponder, respondWithMiddlewareFailure, } from './middleware/MiddlewareFailureResponder.js';
|
|
109
111
|
// Config (core-owned)
|
|
110
112
|
export { Env } from './config/env.js';
|
|
111
113
|
export { Logger } from './config/logger.js';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
1
2
|
import type { Middleware } from './MiddlewareStack';
|
|
2
3
|
export interface AuthOptions {
|
|
3
4
|
headerName?: string;
|
|
4
5
|
message?: string;
|
|
6
|
+
onUnauthorized?: MiddlewareFailureResponder;
|
|
5
7
|
}
|
|
6
8
|
export declare const AuthMiddleware: Readonly<{
|
|
7
9
|
create(options?: AuthOptions): Middleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,0BAA0B,CAAC;CAC7C;AAED,eAAO,MAAM,cAAc;qBACT,WAAW,GAAQ,UAAU;EAsB7C,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
1
2
|
export const AuthMiddleware = Object.freeze({
|
|
2
3
|
create(options = {}) {
|
|
3
4
|
const headerName = (options.headerName ?? 'authorization').toLowerCase();
|
|
@@ -6,7 +7,13 @@ export const AuthMiddleware = Object.freeze({
|
|
|
6
7
|
const header = req.getHeader(headerName);
|
|
7
8
|
const value = Array.isArray(header) ? header[0] : header;
|
|
8
9
|
if (typeof value !== 'string' || value.trim() === '') {
|
|
9
|
-
|
|
10
|
+
await respondWithMiddlewareFailure(req, res, options.onUnauthorized, {
|
|
11
|
+
middleware: 'auth',
|
|
12
|
+
reason: 'missing_authorization_header',
|
|
13
|
+
statusCode: 401,
|
|
14
|
+
message,
|
|
15
|
+
body: { error: message },
|
|
16
|
+
});
|
|
10
17
|
return;
|
|
11
18
|
}
|
|
12
19
|
await next();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IRequest } from '../http/Request';
|
|
2
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
2
3
|
import type { Middleware } from './MiddlewareStack';
|
|
3
4
|
import type { JwtAlgorithm } from '../security/JwtManager';
|
|
4
5
|
import { type NonceReplayVerifier } from '../security/NonceReplay';
|
|
@@ -14,6 +15,7 @@ export type BulletproofAuthContext = {
|
|
|
14
15
|
export interface BulletproofAuthOptions {
|
|
15
16
|
algorithm?: JwtAlgorithm;
|
|
16
17
|
secret?: string;
|
|
18
|
+
onUnauthorized?: MiddlewareFailureResponder;
|
|
17
19
|
/**
|
|
18
20
|
* Signed-request validity window.
|
|
19
21
|
* Default: 60 seconds.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulletproofAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/BulletproofAuthMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BulletproofAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/BulletproofAuthMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEpC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,QAAQ,KACV,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAmlBD,eAAO,MAAM,yBAAyB;qBACpB,sBAAsB,GAAQ,UAAU;EAIxD,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { Logger } from '../config/logger.js';
|
|
|
3
3
|
import { securityConfig } from '../config/security.js';
|
|
4
4
|
import { isMaxLength, isMinLength, isNonEmptyString } from '../helper/index.js';
|
|
5
5
|
import { RequestContext } from '../http/RequestContext.js';
|
|
6
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
6
7
|
import { JwtManager } from '../security/JwtManager.js';
|
|
7
8
|
import { JwtSessions } from '../security/JwtSessions.js';
|
|
8
9
|
import { NonceReplay } from '../security/NonceReplay.js';
|
|
@@ -59,8 +60,15 @@ const markAuthContext = (req, ctx) => {
|
|
|
59
60
|
req.context['auth'] = ctx;
|
|
60
61
|
req.context['authStrategy'] = 'bulletproof';
|
|
61
62
|
};
|
|
62
|
-
const respond401 = (res, message) => {
|
|
63
|
-
|
|
63
|
+
const respond401 = async (req, res, message, responder, reason = 'unauthorized', error) => {
|
|
64
|
+
await respondWithMiddlewareFailure(req, res, responder, {
|
|
65
|
+
middleware: 'bulletproof',
|
|
66
|
+
reason,
|
|
67
|
+
statusCode: 401,
|
|
68
|
+
message,
|
|
69
|
+
body: { error: message },
|
|
70
|
+
error,
|
|
71
|
+
});
|
|
64
72
|
};
|
|
65
73
|
const parseBulletproofHeaders = (params) => {
|
|
66
74
|
const deviceId = getHeaderString(params.req, params.deviceIdHeader).trim();
|
|
@@ -397,7 +405,7 @@ const attachAuth = (req, result) => {
|
|
|
397
405
|
req.context['timezone'] = result.parsed.timezone;
|
|
398
406
|
}
|
|
399
407
|
};
|
|
400
|
-
const createHandler = (resolved) => {
|
|
408
|
+
const createHandler = (resolved, onUnauthorized) => {
|
|
401
409
|
return async (req, res, next) => {
|
|
402
410
|
if (req.context?.['authStrategy'] === 'bulletproof' && req.user !== undefined) {
|
|
403
411
|
await next();
|
|
@@ -405,7 +413,7 @@ const createHandler = (resolved) => {
|
|
|
405
413
|
}
|
|
406
414
|
const result = await authenticate({ req, resolved });
|
|
407
415
|
if (!result.ok) {
|
|
408
|
-
respond401(res, result.message);
|
|
416
|
+
await respond401(req, res, result.message, onUnauthorized);
|
|
409
417
|
return;
|
|
410
418
|
}
|
|
411
419
|
attachAuth(req, result);
|
|
@@ -415,7 +423,7 @@ const createHandler = (resolved) => {
|
|
|
415
423
|
export const BulletproofAuthMiddleware = Object.freeze({
|
|
416
424
|
create(options = {}) {
|
|
417
425
|
const resolved = resolveBulletproof(options);
|
|
418
|
-
return createHandler(resolved);
|
|
426
|
+
return createHandler(resolved, options.onUnauthorized);
|
|
419
427
|
},
|
|
420
428
|
});
|
|
421
429
|
export default BulletproofAuthMiddleware;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Protects against Cross-Site Request Forgery attacks
|
|
4
4
|
* Uses CsrfTokenManager for token generation and validation
|
|
5
5
|
*/
|
|
6
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
6
7
|
import type { Middleware } from './MiddlewareStack';
|
|
7
8
|
export interface CsrfOptions {
|
|
8
9
|
cookieName?: string;
|
|
@@ -18,6 +19,7 @@ export interface CsrfOptions {
|
|
|
18
19
|
* - `/api/v1/auth/login`
|
|
19
20
|
*/
|
|
20
21
|
skipPaths?: ReadonlyArray<string>;
|
|
22
|
+
onFailure?: MiddlewareFailureResponder;
|
|
21
23
|
}
|
|
22
24
|
export declare const CsrfMiddleware: Readonly<{
|
|
23
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAK9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAK9D,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AAkDD,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACa,WAAW,GAAQ,UAAU;EAkE7C,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Uses CsrfTokenManager for token generation and validation
|
|
5
5
|
*/
|
|
6
6
|
import { Logger } from '../config/logger.js';
|
|
7
|
+
import { respondWithMiddlewareFailure, } from './MiddlewareFailureResponder.js';
|
|
7
8
|
import { CsrfTokenManager } from '../security/CsrfTokenManager.js';
|
|
8
9
|
import { SessionManager } from '../session/SessionManager.js';
|
|
9
10
|
const DEFAULT_OPTIONS = {
|
|
@@ -93,10 +94,15 @@ export const CsrfMiddleware = Object.freeze({
|
|
|
93
94
|
const token = tokenFromHeader || tokenFromBody || tokenFromCookie;
|
|
94
95
|
if (!token || !(await manager.validateToken(sessionId, token))) {
|
|
95
96
|
Logger.warn(`CSRF validation failed for session ${sessionId}`);
|
|
96
|
-
res.
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
await respondWithMiddlewareFailure(req, res, config.onFailure, {
|
|
98
|
+
middleware: 'csrf',
|
|
99
|
+
reason: 'invalid_csrf_token',
|
|
100
|
+
statusCode: 403,
|
|
99
101
|
message: 'Invalid CSRF token',
|
|
102
|
+
body: {
|
|
103
|
+
error: 'Forbidden',
|
|
104
|
+
message: 'Invalid CSRF token',
|
|
105
|
+
},
|
|
100
106
|
});
|
|
101
107
|
return;
|
|
102
108
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { type MiddlewareFailureResponder } from './MiddlewareFailureResponder';
|
|
1
2
|
import type { Middleware } from './MiddlewareStack';
|
|
3
|
+
export interface ErrorHandlerOptions {
|
|
4
|
+
onFailure?: MiddlewareFailureResponder;
|
|
5
|
+
}
|
|
2
6
|
export declare const ErrorHandlerMiddleware: Readonly<{
|
|
3
|
-
create(): Middleware;
|
|
7
|
+
create(options?: ErrorHandlerOptions): Middleware;
|
|
4
8
|
}>;
|
|
5
9
|
export default ErrorHandlerMiddleware;
|
|
6
10
|
//# sourceMappingURL=ErrorHandlerMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorHandlerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/ErrorHandlerMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ErrorHandlerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/ErrorHandlerMiddleware.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AA0BD,eAAO,MAAM,sBAAsB;qBACjB,mBAAmB,GAAQ,UAAU;EA6CrD,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
|