@morojs/moro 1.5.10 → 1.5.12

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.
@@ -223,11 +223,11 @@ const auth = (options) => ({
223
223
  },
224
224
  });
225
225
  exports.auth = auth;
226
- // Mock Auth.js implementation (would be replaced with actual Auth.js)
226
+ // Auth.js implementation with proper JWT handling
227
227
  async function initializeAuthJS(config) {
228
228
  return {
229
229
  handler: async (req, res) => {
230
- // Mock Auth.js request handler
230
+ // Basic Auth.js request handler
231
231
  const path = req.url.replace(config.basePath, '');
232
232
  if (path.startsWith('/signin')) {
233
233
  // Handle sign in
@@ -248,7 +248,7 @@ async function initializeAuthJS(config) {
248
248
  return null;
249
249
  },
250
250
  getSession: async ({ req }) => {
251
- // Mock session retrieval
251
+ // Basic session retrieval
252
252
  const sessionId = req.cookies?.['next-auth.session-token'] ||
253
253
  req.cookies?.['__Secure-next-auth.session-token'];
254
254
  if (sessionId && req.session) {
@@ -260,64 +260,58 @@ async function initializeAuthJS(config) {
260
260
  return null;
261
261
  },
262
262
  verifyJWT: async (token) => {
263
- // Mock JWT verification - replace with real implementation in production
263
+ // Require jsonwebtoken for JWT verification
264
+ let jwt;
264
265
  try {
265
- // In real implementation, use jose or jsonwebtoken:
266
- //
267
- // const jwt = require('jsonwebtoken');
268
- // try {
269
- // const decoded = jwt.verify(token, process.env.JWT_SECRET);
270
- // return decoded;
271
- // } catch (error) {
272
- // if (error.name === 'TokenExpiredError') {
273
- // // Token expired - handled gracefully by auth middleware
274
- // throw error;
275
- // } else if (error.name === 'JsonWebTokenError') {
276
- // // Invalid token format
277
- // throw error;
278
- // } else {
279
- // // Other JWT errors
280
- // throw error;
281
- // }
282
- // }
283
- // Mock implementation for development
284
- if (!token || token.split('.').length !== 3) {
285
- const error = new Error('Invalid token format');
286
- error.name = 'JsonWebTokenError';
266
+ jwt = require('jsonwebtoken');
267
+ }
268
+ catch (error) {
269
+ throw new Error('JWT verification requires the "jsonwebtoken" package. ' +
270
+ 'Please install it with: npm install jsonwebtoken @types/jsonwebtoken');
271
+ }
272
+ const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret;
273
+ if (!secret) {
274
+ throw new Error('JWT verification requires a secret. ' +
275
+ 'Please set JWT_SECRET environment variable, or provide jwt.secret or secret in auth config.');
276
+ }
277
+ try {
278
+ const decoded = jwt.verify(token, secret);
279
+ return decoded;
280
+ }
281
+ catch (error) {
282
+ // Handle specific JWT errors gracefully
283
+ if (error.name === 'TokenExpiredError') {
284
+ // Token expired - handled gracefully by auth middleware
287
285
  throw error;
288
286
  }
289
- const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
290
- // Mock expiration check
291
- if (payload.exp && payload.exp < Date.now() / 1000) {
292
- const error = new Error('jwt expired');
293
- error.name = 'TokenExpiredError';
294
- error.expiredAt = new Date(payload.exp * 1000);
287
+ else if (error.name === 'JsonWebTokenError') {
288
+ // Invalid token format
295
289
  throw error;
296
290
  }
297
- return payload;
298
- }
299
- catch (error) {
300
- // Re-throw JWT errors for proper handling by auth middleware
301
- if (error instanceof Error) {
291
+ else if (error.name === 'NotBeforeError') {
292
+ // Token not active yet
302
293
  throw error;
303
294
  }
304
- throw new Error('JWT verification failed');
295
+ else {
296
+ // Other JWT errors
297
+ throw new Error(`JWT verification failed: ${error.message}`);
298
+ }
305
299
  }
306
300
  },
307
301
  signIn: async (provider, options) => {
308
- // Mock sign in
302
+ // Basic sign in redirect
309
303
  return { url: `${config.basePath}/signin${provider ? `/${provider}` : ''}` };
310
304
  },
311
305
  signOut: async (options) => {
312
- // Mock sign out
306
+ // Basic sign out redirect
313
307
  return { url: `${config.basePath}/signout` };
314
308
  },
315
309
  updateSession: async (session) => {
316
- // Mock session update
310
+ // Basic session update
317
311
  return session;
318
312
  },
319
313
  getCsrfToken: async () => {
320
- // Mock CSRF token generation
314
+ // Basic CSRF token generation
321
315
  const crypto = require('crypto');
322
316
  return crypto.randomBytes(32).toString('hex');
323
317
  },
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/auth.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export { session } from './session';
13
13
  export { cache } from './cache';
14
14
  export { cdn } from './cdn';
15
15
  export { requireAuth, requireRole, requirePermission, requireAdmin, guestOnly, optionalAuth, withAuth, protectedRoute, authUtils, authResponses, sessionHelpers, } from './auth-helpers';
16
+ export { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse, type JWTVerificationResult, } from './jwt-helpers';
16
17
  export { extendedProviders, enterpriseProviders, createCustomOAuthProvider, createCustomOIDCProvider, } from './auth-providers';
17
18
  export declare const builtInMiddleware: {
18
19
  auth: (options: import("../../..").AuthOptions) => import("..").MiddlewareInterface;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.simpleMiddleware = exports.builtInMiddleware = exports.createCustomOIDCProvider = exports.createCustomOAuthProvider = exports.enterpriseProviders = exports.extendedProviders = exports.sessionHelpers = exports.authResponses = exports.authUtils = exports.protectedRoute = exports.withAuth = exports.optionalAuth = exports.guestOnly = exports.requireAdmin = exports.requirePermission = exports.requireRole = exports.requireAuth = exports.cdn = exports.cache = exports.session = exports.sse = exports.csp = exports.csrf = exports.cookie = exports.errorTracker = exports.performanceMonitor = exports.requestLogger = exports.validation = exports.cors = exports.rateLimit = exports.auth = void 0;
3
+ exports.simpleMiddleware = exports.builtInMiddleware = exports.createCustomOIDCProvider = exports.createCustomOAuthProvider = exports.enterpriseProviders = exports.extendedProviders = exports.createAuthErrorResponse = exports.extractJWTFromHeader = exports.safeVerifyJWT = exports.sessionHelpers = exports.authResponses = exports.authUtils = exports.protectedRoute = exports.withAuth = exports.optionalAuth = exports.guestOnly = exports.requireAdmin = exports.requirePermission = exports.requireRole = exports.requireAuth = exports.cdn = exports.cache = exports.session = exports.sse = exports.csp = exports.csrf = exports.cookie = exports.errorTracker = exports.performanceMonitor = exports.requestLogger = exports.validation = exports.cors = exports.rateLimit = exports.auth = void 0;
4
4
  // Built-in Middleware Exports
5
5
  var auth_1 = require("./auth");
6
6
  Object.defineProperty(exports, "auth", { enumerable: true, get: function () { return auth_1.auth; } });
@@ -45,6 +45,11 @@ Object.defineProperty(exports, "protectedRoute", { enumerable: true, get: functi
45
45
  Object.defineProperty(exports, "authUtils", { enumerable: true, get: function () { return auth_helpers_1.authUtils; } });
46
46
  Object.defineProperty(exports, "authResponses", { enumerable: true, get: function () { return auth_helpers_1.authResponses; } });
47
47
  Object.defineProperty(exports, "sessionHelpers", { enumerable: true, get: function () { return auth_helpers_1.sessionHelpers; } });
48
+ // JWT Utilities for Custom Middleware
49
+ var jwt_helpers_1 = require("./jwt-helpers");
50
+ Object.defineProperty(exports, "safeVerifyJWT", { enumerable: true, get: function () { return jwt_helpers_1.safeVerifyJWT; } });
51
+ Object.defineProperty(exports, "extractJWTFromHeader", { enumerable: true, get: function () { return jwt_helpers_1.extractJWTFromHeader; } });
52
+ Object.defineProperty(exports, "createAuthErrorResponse", { enumerable: true, get: function () { return jwt_helpers_1.createAuthErrorResponse; } });
48
53
  var auth_providers_1 = require("./auth-providers");
49
54
  Object.defineProperty(exports, "extendedProviders", { enumerable: true, get: function () { return auth_providers_1.extendedProviders; } });
50
55
  Object.defineProperty(exports, "enterpriseProviders", { enumerable: true, get: function () { return auth_providers_1.enterpriseProviders; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,6DAA2D;AAAlD,yHAAA,kBAAkB,OAAA;AAC3B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,6CAA6C;AAC7C,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,gCAAgC;AAChC,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AAEZ,sCAAsC;AACtC,+CAYwB;AAXtB,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,4GAAA,YAAY,OAAA;AACZ,yGAAA,SAAS,OAAA;AACT,4GAAA,YAAY,OAAA;AACZ,wGAAA,QAAQ,OAAA;AACR,8GAAA,cAAc,OAAA;AACd,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AAGhB,mDAK0B;AAJxB,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AACnB,2HAAA,yBAAyB,OAAA;AACzB,0HAAA,wBAAwB,OAAA;AAG1B,yBAAyB;AACzB,iCAA8B;AAC9B,6CAAyC;AACzC,iCAA8B;AAC9B,6CAA0C;AAC1C,qDAAiD;AACjD,+DAA2D;AAC3D,mDAA+C;AAC/C,qCAAkC;AAClC,iCAA8B;AAC9B,+BAA4B;AAC5B,+BAA4B;AAC5B,uCAAoC;AACpC,mCAAgC;AAChC,+BAA4B;AAEf,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAJ,WAAI;IACJ,SAAS,EAAT,sBAAS;IACT,IAAI,EAAJ,WAAI;IACJ,UAAU,EAAV,uBAAU;IACV,sBAAsB;IACtB,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,gCAAgC;IAChC,KAAK,EAAL,aAAK;IACL,GAAG,EAAH,SAAG;CACJ,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC9B,aAAa,EAAb,8BAAa;IACb,kBAAkB,EAAlB,wCAAkB;IAClB,YAAY,EAAZ,4BAAY;CACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/index.ts"],"names":[],"mappings":";;;AAAA,8BAA8B;AAC9B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,6DAA2D;AAAlD,yHAAA,kBAAkB,OAAA;AAC3B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,6CAA6C;AAC7C,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,gCAAgC;AAChC,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AAEZ,sCAAsC;AACtC,+CAYwB;AAXtB,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,iHAAA,iBAAiB,OAAA;AACjB,4GAAA,YAAY,OAAA;AACZ,yGAAA,SAAS,OAAA;AACT,4GAAA,YAAY,OAAA;AACZ,wGAAA,QAAQ,OAAA;AACR,8GAAA,cAAc,OAAA;AACd,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AAGhB,sCAAsC;AACtC,6CAKuB;AAJrB,4GAAA,aAAa,OAAA;AACb,mHAAA,oBAAoB,OAAA;AACpB,sHAAA,uBAAuB,OAAA;AAIzB,mDAK0B;AAJxB,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AACnB,2HAAA,yBAAyB,OAAA;AACzB,0HAAA,wBAAwB,OAAA;AAG1B,yBAAyB;AACzB,iCAA8B;AAC9B,6CAAyC;AACzC,iCAA8B;AAC9B,6CAA0C;AAC1C,qDAAiD;AACjD,+DAA2D;AAC3D,mDAA+C;AAC/C,qCAAkC;AAClC,iCAA8B;AAC9B,+BAA4B;AAC5B,+BAA4B;AAC5B,uCAAoC;AACpC,mCAAgC;AAChC,+BAA4B;AAEf,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAJ,WAAI;IACJ,SAAS,EAAT,sBAAS;IACT,IAAI,EAAJ,WAAI;IACJ,UAAU,EAAV,uBAAU;IACV,sBAAsB;IACtB,MAAM,EAAN,eAAM;IACN,IAAI,EAAJ,WAAI;IACJ,GAAG,EAAH,SAAG;IACH,GAAG,EAAH,SAAG;IACH,OAAO,EAAP,iBAAO;IACP,gCAAgC;IAChC,KAAK,EAAL,aAAK;IACL,GAAG,EAAH,SAAG;CACJ,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC9B,aAAa,EAAb,8BAAa;IACb,kBAAkB,EAAlB,wCAAkB;IAClB,YAAY,EAAZ,4BAAY;CACb,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * JWT Error Handling Utilities for Custom Middleware
3
+ *
4
+ * This module provides utilities to help users handle JWT errors gracefully
5
+ * in their custom authentication middleware.
6
+ */
7
+ export interface JWTVerificationResult {
8
+ success: boolean;
9
+ payload?: any;
10
+ error?: {
11
+ type: 'expired' | 'invalid' | 'malformed' | 'missing_secret' | 'unknown';
12
+ message: string;
13
+ expiredAt?: Date;
14
+ date?: Date;
15
+ };
16
+ }
17
+ /**
18
+ * Safely verify a JWT token with proper error handling
19
+ *
20
+ * @param token - The JWT token to verify
21
+ * @param secret - The secret key for verification
22
+ * @param options - Additional JWT verification options
23
+ * @returns JWTVerificationResult with success status and payload or error details
24
+ */
25
+ export declare function safeVerifyJWT(token: string, secret: string, options?: any): JWTVerificationResult;
26
+ /**
27
+ * Extract JWT token from Authorization header
28
+ *
29
+ * @param authHeader - The Authorization header value
30
+ * @returns The JWT token or null if not found/invalid format
31
+ */
32
+ export declare function extractJWTFromHeader(authHeader: string | undefined): string | null;
33
+ /**
34
+ * Create a standardized auth middleware error response
35
+ *
36
+ * @param error - The JWT verification error
37
+ * @returns Standardized error response object
38
+ */
39
+ export declare function createAuthErrorResponse(error: JWTVerificationResult['error']): {
40
+ success: boolean;
41
+ error: string;
42
+ message: string;
43
+ expiredAt?: undefined;
44
+ availableAt?: undefined;
45
+ } | {
46
+ success: boolean;
47
+ error: string;
48
+ message: string;
49
+ expiredAt: Date | undefined;
50
+ availableAt?: undefined;
51
+ } | {
52
+ success: boolean;
53
+ error: string;
54
+ message: string;
55
+ availableAt: Date | undefined;
56
+ expiredAt?: undefined;
57
+ };
58
+ /**
59
+ * Example usage for custom middleware:
60
+ *
61
+ * ```typescript
62
+ * import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
63
+ *
64
+ * const authMiddleware = async (req: any, res: any, next: any) => {
65
+ * const token = extractJWTFromHeader(req.headers.authorization);
66
+ *
67
+ * if (!token) {
68
+ * return res.status(401).json({
69
+ * success: false,
70
+ * error: 'Missing token',
71
+ * message: 'Authorization header with Bearer token is required'
72
+ * });
73
+ * }
74
+ *
75
+ * const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
76
+ *
77
+ * if (!result.success) {
78
+ * const errorResponse = createAuthErrorResponse(result.error);
79
+ * return res.status(401).json(errorResponse);
80
+ * }
81
+ *
82
+ * // Token is valid - attach user info to request
83
+ * req.user = result.payload;
84
+ * req.auth = {
85
+ * user: result.payload,
86
+ * isAuthenticated: true,
87
+ * token
88
+ * };
89
+ *
90
+ * next();
91
+ * };
92
+ * ```
93
+ */
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /**
3
+ * JWT Error Handling Utilities for Custom Middleware
4
+ *
5
+ * This module provides utilities to help users handle JWT errors gracefully
6
+ * in their custom authentication middleware.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.safeVerifyJWT = safeVerifyJWT;
10
+ exports.extractJWTFromHeader = extractJWTFromHeader;
11
+ exports.createAuthErrorResponse = createAuthErrorResponse;
12
+ /**
13
+ * Safely verify a JWT token with proper error handling
14
+ *
15
+ * @param token - The JWT token to verify
16
+ * @param secret - The secret key for verification
17
+ * @param options - Additional JWT verification options
18
+ * @returns JWTVerificationResult with success status and payload or error details
19
+ */
20
+ function safeVerifyJWT(token, secret, options = {}) {
21
+ // Check if jsonwebtoken is available
22
+ let jwt;
23
+ try {
24
+ jwt = require('jsonwebtoken');
25
+ }
26
+ catch (error) {
27
+ return {
28
+ success: false,
29
+ error: {
30
+ type: 'missing_secret',
31
+ message: 'JWT verification requires the "jsonwebtoken" package. ' +
32
+ 'Please install it with: npm install jsonwebtoken @types/jsonwebtoken',
33
+ },
34
+ };
35
+ }
36
+ if (!secret) {
37
+ return {
38
+ success: false,
39
+ error: {
40
+ type: 'missing_secret',
41
+ message: 'JWT verification requires a secret. ' +
42
+ 'Please provide a secret for token verification.',
43
+ },
44
+ };
45
+ }
46
+ try {
47
+ const payload = jwt.verify(token, secret, options);
48
+ return {
49
+ success: true,
50
+ payload,
51
+ };
52
+ }
53
+ catch (error) {
54
+ // Handle specific JWT errors gracefully
55
+ if (error.name === 'TokenExpiredError') {
56
+ return {
57
+ success: false,
58
+ error: {
59
+ type: 'expired',
60
+ message: 'JWT token has expired',
61
+ expiredAt: error.expiredAt,
62
+ },
63
+ };
64
+ }
65
+ else if (error.name === 'JsonWebTokenError') {
66
+ return {
67
+ success: false,
68
+ error: {
69
+ type: 'invalid',
70
+ message: 'Invalid JWT token format or signature',
71
+ },
72
+ };
73
+ }
74
+ else if (error.name === 'NotBeforeError') {
75
+ return {
76
+ success: false,
77
+ error: {
78
+ type: 'malformed',
79
+ message: 'JWT token is not active yet',
80
+ date: error.date,
81
+ },
82
+ };
83
+ }
84
+ else {
85
+ return {
86
+ success: false,
87
+ error: {
88
+ type: 'unknown',
89
+ message: `JWT verification failed: ${error.message}`,
90
+ },
91
+ };
92
+ }
93
+ }
94
+ }
95
+ /**
96
+ * Extract JWT token from Authorization header
97
+ *
98
+ * @param authHeader - The Authorization header value
99
+ * @returns The JWT token or null if not found/invalid format
100
+ */
101
+ function extractJWTFromHeader(authHeader) {
102
+ if (!authHeader) {
103
+ return null;
104
+ }
105
+ if (!authHeader.startsWith('Bearer ')) {
106
+ return null;
107
+ }
108
+ const token = authHeader.substring(7);
109
+ return token.trim() || null;
110
+ }
111
+ /**
112
+ * Create a standardized auth middleware error response
113
+ *
114
+ * @param error - The JWT verification error
115
+ * @returns Standardized error response object
116
+ */
117
+ function createAuthErrorResponse(error) {
118
+ if (!error) {
119
+ return {
120
+ success: false,
121
+ error: 'Authentication failed',
122
+ message: 'Unknown authentication error',
123
+ };
124
+ }
125
+ switch (error.type) {
126
+ case 'expired':
127
+ return {
128
+ success: false,
129
+ error: 'Token expired',
130
+ message: 'Your session has expired. Please sign in again.',
131
+ expiredAt: error.expiredAt,
132
+ };
133
+ case 'invalid':
134
+ return {
135
+ success: false,
136
+ error: 'Invalid token',
137
+ message: 'The provided authentication token is invalid.',
138
+ };
139
+ case 'malformed':
140
+ return {
141
+ success: false,
142
+ error: 'Token not ready',
143
+ message: 'The authentication token is not yet valid.',
144
+ availableAt: error.date,
145
+ };
146
+ case 'missing_secret':
147
+ return {
148
+ success: false,
149
+ error: 'Configuration error',
150
+ message: 'Authentication service is not properly configured.',
151
+ };
152
+ default:
153
+ return {
154
+ success: false,
155
+ error: 'Authentication failed',
156
+ message: error.message || 'Authentication verification failed.',
157
+ };
158
+ }
159
+ }
160
+ /**
161
+ * Example usage for custom middleware:
162
+ *
163
+ * ```typescript
164
+ * import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
165
+ *
166
+ * const authMiddleware = async (req: any, res: any, next: any) => {
167
+ * const token = extractJWTFromHeader(req.headers.authorization);
168
+ *
169
+ * if (!token) {
170
+ * return res.status(401).json({
171
+ * success: false,
172
+ * error: 'Missing token',
173
+ * message: 'Authorization header with Bearer token is required'
174
+ * });
175
+ * }
176
+ *
177
+ * const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
178
+ *
179
+ * if (!result.success) {
180
+ * const errorResponse = createAuthErrorResponse(result.error);
181
+ * return res.status(401).json(errorResponse);
182
+ * }
183
+ *
184
+ * // Token is valid - attach user info to request
185
+ * req.user = result.payload;
186
+ * req.auth = {
187
+ * user: result.payload,
188
+ * isAuthenticated: true,
189
+ * token
190
+ * };
191
+ *
192
+ * next();
193
+ * };
194
+ * ```
195
+ */
196
+ //# sourceMappingURL=jwt-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-helpers.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/jwt-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAqBH,sCA6EC;AAQD,oDAWC;AAQD,0DA+CC;AA/JD;;;;;;;GAOG;AACH,SAAgB,aAAa,CAC3B,KAAa,EACb,MAAc,EACd,UAAe,EAAE;IAEjB,qCAAqC;IACrC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EACL,wDAAwD;oBACxD,sEAAsE;aACzE;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EACL,sCAAsC;oBACtC,iDAAiD;aACpD;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,wCAAwC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,uBAAuB;oBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,uCAAuC;iBACjD;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,6BAA6B;oBACtC,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE;iBACrD;aACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,UAA8B;IACjE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,KAAqC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,uBAAuB;YAC9B,OAAO,EAAE,8BAA8B;SACxC,CAAC;IACJ,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,iDAAiD;gBAC1D,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC;QAEJ,KAAK,SAAS;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,+CAA+C;aACzD,CAAC;QAEJ,KAAK,WAAW;YACd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,4CAA4C;gBACrD,WAAW,EAAE,KAAK,CAAC,IAAI;aACxB,CAAC;QAEJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB;gBAC5B,OAAO,EAAE,oDAAoD;aAC9D,CAAC;QAEJ;YACE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,qCAAqC;aAChE,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morojs/moro",
3
- "version": "1.5.10",
3
+ "version": "1.5.12",
4
4
  "description": "High-performance Node.js framework with intelligent routing, automatic middleware ordering, enterprise authentication (Auth.js), type-safe validation, and functional architecture",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -257,11 +257,11 @@ export const auth = (options: AuthOptions): MiddlewareInterface => ({
257
257
  },
258
258
  });
259
259
 
260
- // Mock Auth.js implementation (would be replaced with actual Auth.js)
260
+ // Auth.js implementation with proper JWT handling
261
261
  async function initializeAuthJS(config: AuthOptions): Promise<any> {
262
262
  return {
263
263
  handler: async (req: any, res: any) => {
264
- // Mock Auth.js request handler
264
+ // Basic Auth.js request handler
265
265
  const path = req.url.replace(config.basePath!, '');
266
266
 
267
267
  if (path.startsWith('/signin')) {
@@ -282,7 +282,7 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
282
282
  },
283
283
 
284
284
  getSession: async ({ req }: { req: any }) => {
285
- // Mock session retrieval
285
+ // Basic session retrieval
286
286
  const sessionId =
287
287
  req.cookies?.['next-auth.session-token'] ||
288
288
  req.cookies?.['__Secure-next-auth.session-token'];
@@ -298,71 +298,63 @@ async function initializeAuthJS(config: AuthOptions): Promise<any> {
298
298
  },
299
299
 
300
300
  verifyJWT: async (token: string) => {
301
- // Mock JWT verification - replace with real implementation in production
301
+ // Require jsonwebtoken for JWT verification
302
+ let jwt: any;
302
303
  try {
303
- // In real implementation, use jose or jsonwebtoken:
304
- //
305
- // const jwt = require('jsonwebtoken');
306
- // try {
307
- // const decoded = jwt.verify(token, process.env.JWT_SECRET);
308
- // return decoded;
309
- // } catch (error) {
310
- // if (error.name === 'TokenExpiredError') {
311
- // // Token expired - handled gracefully by auth middleware
312
- // throw error;
313
- // } else if (error.name === 'JsonWebTokenError') {
314
- // // Invalid token format
315
- // throw error;
316
- // } else {
317
- // // Other JWT errors
318
- // throw error;
319
- // }
320
- // }
321
-
322
- // Mock implementation for development
323
- if (!token || token.split('.').length !== 3) {
324
- const error = new Error('Invalid token format');
325
- error.name = 'JsonWebTokenError';
326
- throw error;
327
- }
304
+ jwt = require('jsonwebtoken');
305
+ } catch (error) {
306
+ throw new Error(
307
+ 'JWT verification requires the "jsonwebtoken" package. ' +
308
+ 'Please install it with: npm install jsonwebtoken @types/jsonwebtoken'
309
+ );
310
+ }
328
311
 
329
- const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString());
312
+ const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret;
313
+ if (!secret) {
314
+ throw new Error(
315
+ 'JWT verification requires a secret. ' +
316
+ 'Please set JWT_SECRET environment variable, or provide jwt.secret or secret in auth config.'
317
+ );
318
+ }
330
319
 
331
- // Mock expiration check
332
- if (payload.exp && payload.exp < Date.now() / 1000) {
333
- const error = new Error('jwt expired');
334
- error.name = 'TokenExpiredError';
335
- (error as any).expiredAt = new Date(payload.exp * 1000);
320
+ try {
321
+ const decoded = jwt.verify(token, secret);
322
+ return decoded;
323
+ } catch (error: any) {
324
+ // Handle specific JWT errors gracefully
325
+ if (error.name === 'TokenExpiredError') {
326
+ // Token expired - handled gracefully by auth middleware
336
327
  throw error;
337
- }
338
-
339
- return payload;
340
- } catch (error) {
341
- // Re-throw JWT errors for proper handling by auth middleware
342
- if (error instanceof Error) {
328
+ } else if (error.name === 'JsonWebTokenError') {
329
+ // Invalid token format
330
+ throw error;
331
+ } else if (error.name === 'NotBeforeError') {
332
+ // Token not active yet
343
333
  throw error;
334
+ } else {
335
+ // Other JWT errors
336
+ throw new Error(`JWT verification failed: ${error.message}`);
344
337
  }
345
- throw new Error('JWT verification failed');
346
338
  }
347
339
  },
348
340
 
349
341
  signIn: async (provider?: string, options?: any) => {
350
- // Mock sign in
342
+ // Basic sign in redirect
351
343
  return { url: `${config.basePath}/signin${provider ? `/${provider}` : ''}` };
352
344
  },
353
345
 
354
346
  signOut: async (options?: any) => {
355
- // Mock sign out
347
+ // Basic sign out redirect
356
348
  return { url: `${config.basePath}/signout` };
357
349
  },
358
350
 
359
351
  updateSession: async (session: any) => {
360
- // Mock session update
352
+ // Basic session update
361
353
  return session;
362
354
  },
363
355
 
364
356
  getCsrfToken: async () => {
365
- // Mock CSRF token generation
357
+ // Basic CSRF token generation
366
358
  const crypto = require('crypto');
367
359
  return crypto.randomBytes(32).toString('hex');
368
360
  },
@@ -33,6 +33,14 @@ export {
33
33
  sessionHelpers,
34
34
  } from './auth-helpers';
35
35
 
36
+ // JWT Utilities for Custom Middleware
37
+ export {
38
+ safeVerifyJWT,
39
+ extractJWTFromHeader,
40
+ createAuthErrorResponse,
41
+ type JWTVerificationResult,
42
+ } from './jwt-helpers';
43
+
36
44
  export {
37
45
  extendedProviders,
38
46
  enterpriseProviders,
@@ -0,0 +1,215 @@
1
+ /**
2
+ * JWT Error Handling Utilities for Custom Middleware
3
+ *
4
+ * This module provides utilities to help users handle JWT errors gracefully
5
+ * in their custom authentication middleware.
6
+ */
7
+
8
+ export interface JWTVerificationResult {
9
+ success: boolean;
10
+ payload?: any;
11
+ error?: {
12
+ type: 'expired' | 'invalid' | 'malformed' | 'missing_secret' | 'unknown';
13
+ message: string;
14
+ expiredAt?: Date;
15
+ date?: Date;
16
+ };
17
+ }
18
+
19
+ /**
20
+ * Safely verify a JWT token with proper error handling
21
+ *
22
+ * @param token - The JWT token to verify
23
+ * @param secret - The secret key for verification
24
+ * @param options - Additional JWT verification options
25
+ * @returns JWTVerificationResult with success status and payload or error details
26
+ */
27
+ export function safeVerifyJWT(
28
+ token: string,
29
+ secret: string,
30
+ options: any = {}
31
+ ): JWTVerificationResult {
32
+ // Check if jsonwebtoken is available
33
+ let jwt: any;
34
+ try {
35
+ jwt = require('jsonwebtoken');
36
+ } catch (error) {
37
+ return {
38
+ success: false,
39
+ error: {
40
+ type: 'missing_secret',
41
+ message:
42
+ 'JWT verification requires the "jsonwebtoken" package. ' +
43
+ 'Please install it with: npm install jsonwebtoken @types/jsonwebtoken',
44
+ },
45
+ };
46
+ }
47
+
48
+ if (!secret) {
49
+ return {
50
+ success: false,
51
+ error: {
52
+ type: 'missing_secret',
53
+ message:
54
+ 'JWT verification requires a secret. ' +
55
+ 'Please provide a secret for token verification.',
56
+ },
57
+ };
58
+ }
59
+
60
+ try {
61
+ const payload = jwt.verify(token, secret, options);
62
+ return {
63
+ success: true,
64
+ payload,
65
+ };
66
+ } catch (error: any) {
67
+ // Handle specific JWT errors gracefully
68
+ if (error.name === 'TokenExpiredError') {
69
+ return {
70
+ success: false,
71
+ error: {
72
+ type: 'expired',
73
+ message: 'JWT token has expired',
74
+ expiredAt: error.expiredAt,
75
+ },
76
+ };
77
+ } else if (error.name === 'JsonWebTokenError') {
78
+ return {
79
+ success: false,
80
+ error: {
81
+ type: 'invalid',
82
+ message: 'Invalid JWT token format or signature',
83
+ },
84
+ };
85
+ } else if (error.name === 'NotBeforeError') {
86
+ return {
87
+ success: false,
88
+ error: {
89
+ type: 'malformed',
90
+ message: 'JWT token is not active yet',
91
+ date: error.date,
92
+ },
93
+ };
94
+ } else {
95
+ return {
96
+ success: false,
97
+ error: {
98
+ type: 'unknown',
99
+ message: `JWT verification failed: ${error.message}`,
100
+ },
101
+ };
102
+ }
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Extract JWT token from Authorization header
108
+ *
109
+ * @param authHeader - The Authorization header value
110
+ * @returns The JWT token or null if not found/invalid format
111
+ */
112
+ export function extractJWTFromHeader(authHeader: string | undefined): string | null {
113
+ if (!authHeader) {
114
+ return null;
115
+ }
116
+
117
+ if (!authHeader.startsWith('Bearer ')) {
118
+ return null;
119
+ }
120
+
121
+ const token = authHeader.substring(7);
122
+ return token.trim() || null;
123
+ }
124
+
125
+ /**
126
+ * Create a standardized auth middleware error response
127
+ *
128
+ * @param error - The JWT verification error
129
+ * @returns Standardized error response object
130
+ */
131
+ export function createAuthErrorResponse(error: JWTVerificationResult['error']) {
132
+ if (!error) {
133
+ return {
134
+ success: false,
135
+ error: 'Authentication failed',
136
+ message: 'Unknown authentication error',
137
+ };
138
+ }
139
+
140
+ switch (error.type) {
141
+ case 'expired':
142
+ return {
143
+ success: false,
144
+ error: 'Token expired',
145
+ message: 'Your session has expired. Please sign in again.',
146
+ expiredAt: error.expiredAt,
147
+ };
148
+
149
+ case 'invalid':
150
+ return {
151
+ success: false,
152
+ error: 'Invalid token',
153
+ message: 'The provided authentication token is invalid.',
154
+ };
155
+
156
+ case 'malformed':
157
+ return {
158
+ success: false,
159
+ error: 'Token not ready',
160
+ message: 'The authentication token is not yet valid.',
161
+ availableAt: error.date,
162
+ };
163
+
164
+ case 'missing_secret':
165
+ return {
166
+ success: false,
167
+ error: 'Configuration error',
168
+ message: 'Authentication service is not properly configured.',
169
+ };
170
+
171
+ default:
172
+ return {
173
+ success: false,
174
+ error: 'Authentication failed',
175
+ message: error.message || 'Authentication verification failed.',
176
+ };
177
+ }
178
+ }
179
+
180
+ /**
181
+ * Example usage for custom middleware:
182
+ *
183
+ * ```typescript
184
+ * import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
185
+ *
186
+ * const authMiddleware = async (req: any, res: any, next: any) => {
187
+ * const token = extractJWTFromHeader(req.headers.authorization);
188
+ *
189
+ * if (!token) {
190
+ * return res.status(401).json({
191
+ * success: false,
192
+ * error: 'Missing token',
193
+ * message: 'Authorization header with Bearer token is required'
194
+ * });
195
+ * }
196
+ *
197
+ * const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
198
+ *
199
+ * if (!result.success) {
200
+ * const errorResponse = createAuthErrorResponse(result.error);
201
+ * return res.status(401).json(errorResponse);
202
+ * }
203
+ *
204
+ * // Token is valid - attach user info to request
205
+ * req.user = result.payload;
206
+ * req.auth = {
207
+ * user: result.payload,
208
+ * isAuthenticated: true,
209
+ * token
210
+ * };
211
+ *
212
+ * next();
213
+ * };
214
+ * ```
215
+ */