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.
- package/bin/cli.js +19 -14
- 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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|