backend-scaffold-cli 1.9.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/bin/cli.js +19 -14
  2. package/package.json +1 -1
package/bin/cli.js CHANGED
@@ -48,7 +48,7 @@ program
48
48
  type: 'confirm',
49
49
  name: 'useFileUpload',
50
50
  message: 'Include file upload support (multer)?',
51
- default: true
51
+ default: false
52
52
  },
53
53
  {
54
54
  type: 'confirm',
@@ -260,15 +260,7 @@ const errorMiddleware = (err, req, res, next) => {
260
260
  err = new ErrorHandler(message, 400);
261
261
  }
262
262
 
263
- if (err.name === 'JsonWebTokenError') {
264
- const message = \`JSON Web Token is invalid, try again\`;
265
- err = new ErrorHandler(message, 400);
266
- }
267
-
268
- if (err.name === 'TokenExpiredError') {
269
- const message = \`JSON Web Token is expired, try again\`;
270
- err = new ErrorHandler(message, 400);
271
- }
263
+
272
264
 
273
265
  res.status(err.statusCode).json({
274
266
  success: false,
@@ -328,7 +320,18 @@ const limiter=ratelimit({
328
320
  legacyHeaders: false,
329
321
  });
330
322
 
331
- module.exports=limiter;
323
+ ${answers.useAuth? `// stricter rate limit for auth routes(prevent brute force attacks)
324
+ const authLimiter=ratelimit({
325
+ windowMs: 15 * 60 * 1000,
326
+ max:5,
327
+ message: 'Too many login attempts from this IP, please try again after 15 minutes',
328
+ standardHeaders: true,
329
+ legacyHeaders: false,
330
+ });
331
+
332
+ `:''}
333
+
334
+ module.exports={limiter${answers.useAuth? ', authLimiter' : ''}};
332
335
 
333
336
 
334
337
  `;
@@ -474,8 +477,10 @@ const createRouteFiles = (projectPath, answers) => {
474
477
  const router = express.Router();
475
478
  ${answers.useAuth ? "const authenticateToken = require('../middleware/auth');" : ''}
476
479
  ${answers.useAuth ? "const {register,login} = require('../controllers/authController');" : ''}
480
+ ${(answers.useRateLimit && answers.useAuth) ? "const { authLimiter } = require('../middleware/rateLimiter');" : ''}
477
481
  ${answers.useFileUpload ? "const upload = require('../middleware/upload');" : ''}
478
482
 
483
+
479
484
  // Public routes
480
485
  router.get('/health', (req, res) => {
481
486
  res.json({ status: 'API is running' });
@@ -484,8 +489,8 @@ router.get('/health', (req, res) => {
484
489
  ${answers.useAuth? `
485
490
  // Auth routes
486
491
  // Register and Login routes
487
- router.post('/auth/register', register);
488
- router.post('/auth/login', login);
492
+ router.post('/auth/register', ${answers.useRateLimit ? 'authLimiter, ' : ''} register);
493
+ router.post('/auth/login', ${answers.useRateLimit ? 'authLimiter, ' : ''} login);
489
494
  ` : ''}
490
495
 
491
496
  ${answers.useAuth ? `
@@ -570,7 +575,7 @@ const loggerMiddleware = require('./middleware/logger');
570
575
  const { errorMiddleware } = require('./middleware/errorHandler');
571
576
 
572
577
  const app = express();
573
- ${answers.useRateLimit ? "const limiter = require('./middleware/rateLimiter');" : ''}
578
+ ${answers.useRateLimit ? "const { limiter } = require('./middleware/rateLimiter');" : ''}
574
579
 
575
580
  const PORT = process.env.PORT || 5000;
576
581
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backend-scaffold-cli",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "CLI tool to scaffold Express.js backend projects with MongoDB, middleware, and common setup",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {