Skip to content

Commit 50f55b2

Browse files
Merge pull request #2221 from OneCommunityGlobal/revert-1898
Sundar: revert PR-1898
2 parents 500d9e0 + 164e904 commit 50f55b2

13 files changed

Lines changed: 145 additions & 2335 deletions

package-lock.json

Lines changed: 1 addition & 1987 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"test:ci": "npm test -- --coverage",
2323
"lint": "eslint ./src --ext .js,.jsx --max-warnings=2000 --ignore-pattern '**/node_modules/**' --ignore-pattern '**/coverage/**' --ignore-pattern '**/dist/**' --ignore-pattern '**/build/**'",
2424
"lint:fix": "eslint ./src --ext .js,.jsx --fix --ignore-pattern '**/node_modules/**' --ignore-pattern '**/coverage/**' --ignore-pattern '**/dist/**' --ignore-pattern '**/build/**'",
25-
"build": "babel src -d dist && shx mkdir -p dist/data && shx cp -r src/data/* dist/data/",
25+
"build": "babel src -d dist && mkdir -p dist/data && cp -r src/data/* dist/data/ 2>/dev/null || true",
2626
"buildw": "babel src -d dist --watch",
2727
"start": "node dist/server.js",
2828
"dev": "nodemon --exec \"babel-node --only src src/server.js\"",
@@ -61,7 +61,6 @@
6161
"pidtree": "^0.6.0",
6262
"prettier": "3.2.5",
6363
"puppeteer": "^24.40.0",
64-
"shx": "^0.4.0",
6564
"supertest": "^6.3.4"
6665
},
6766
"dependencies": {
@@ -89,7 +88,7 @@
8988
"body-parser": "^1.20.4",
9089
"card-validator": "^10.0.2",
9190
"cheerio": "^0.22.0",
92-
"cloudinary": "^2.9.0",
91+
"cloudinary": "^2.8.0",
9392
"compression": "^1.8.0",
9493
"cors": "^2.8.4",
9594
"cron": "^1.8.2",

src/app.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,33 @@ const logger = require('./startup/logger');
77
const globalErrorHandler = require('./utilities/errorHandling/globalErrorHandler');
88
// const experienceRoutes = require('./routes/applicantAnalyticsRoutes');
99

10-
// 1. Core initialization
1110
logger.init();
11+
1212
app.use(Sentry.Handlers.requestHandler());
1313

14-
// 2. Load essential middleware (The "Engine")
14+
// Then load all other setup
1515
require('./startup/compression')(app);
1616
require('./startup/cors')(app);
17-
require('./startup/bodyParser')(app); // <--- Crucial this runs before routes
18-
require('./startup/session')(app);
17+
require('./startup/bodyParser')(app);
18+
require('./startup/session')(app); // Add session before middleware and routes
1919

20-
// 3. Define Routes (The "Destination")
21-
// It is better to move these INSIDE startup/routes.js, but if they stay here:
2220
app.use('/api/test', testRoutes);
2321

2422
const helpFeedbackRouter = require('./routes/helpFeedbackRouter');
2523
const helpRequestRouter = require('./routes/helpRequestRouter');
24+
2625
app.use('/api/feedback', helpFeedbackRouter);
2726
app.use('/api/helprequest', helpRequestRouter);
2827

2928
require('./startup/middleware')(app);
30-
// This handles all other routes and likely has your 404 handler
31-
require('./startup/routes')(app);
3229

33-
// 4. Error Handling (The "Safety Net")
30+
const weeklyReportsRouter = require('./routes/weeklyReportsRouter');
31+
32+
app.use('/api', weeklyReportsRouter);
33+
34+
// ⚠ This must come *after* your custom /api routes
35+
require('./startup/routes')(app);
36+
3437
app.use(Sentry.Handlers.errorHandler());
3538
app.use(globalErrorHandler);
3639

src/controllers/activityLogController.js

Lines changed: 0 additions & 53 deletions
This file was deleted.

src/models/activityLog.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/models/userTask.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ const mongoose = require('mongoose');
33
const userTaskSchema = new mongoose.Schema({
44
name: { type: String, required: true },
55
email: { type: String, required: true, unique: true },
6-
role: { type: String, enum: ['student', 'educator','support'], required: true },
7-
// Add 'support' role
6+
role: { type: String, enum: ['student', 'educator'], required: true },
87
});
98

109
module.exports = mongoose.model('UserTask', userTaskSchema, 'usertask');

src/routes/activityLogRouter.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/startup/middleware.js

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
/* eslint-disable complexity */
22
/* eslint-disable no-magic-numbers */
3-
3+
const jwt = require('jsonwebtoken');
4+
const moment = require('moment');
45
const express = require('express');
6+
const config = require('../config');
57
const webhookController = require('../controllers/lbdashboard/webhookController'); // your new controller
68
const { Bids } = require('../models/lbdashboard/bids'); // or wherever you're getting Bids
79

810
const { webhookTest } = webhookController(Bids);
911

10-
const jwtVerificationLogic = require('../utilities/jwtVerificationLogic');
11-
1212
const paypalAuthMiddleware = (req, res, next) => {
1313
const authHeader = req.header('Paypal-Auth-Algo');
1414
if (!authHeader) {
@@ -123,31 +123,40 @@ module.exports = function (app) {
123123
if (openPaths.includes(req.path)) {
124124
return next(); // Allow PayPal requests through
125125
}
126+
if (!req.header('Authorization')) {
127+
res.status(401).send({ 'error:': 'Unauthorized request' });
128+
return;
129+
}
130+
const authToken = req.header(config.REQUEST_AUTHKEY);
126131

127-
// HEADER EXTRACTION
128-
const authHeader = req.header('Authorization');
129-
const payload = jwtVerificationLogic(authHeader, res);
130-
131-
// FIX: If payload is a response object (meaning logic already sent a 401), STOP HERE.
132-
if (res.headersSent) return;
133-
134-
// ATTACH DATA & CONTINUE
135-
// Now we know payload is the valid decoded token
136-
const requestor = {
137-
requestorId: payload.userid,
138-
role: payload.role,
139-
permissions: payload.permissions,
140-
};
141-
142-
req.user = requestor;
132+
let payload = '';
143133

144-
if (req.body) {
145-
req.body.requestor = requestor;
134+
try {
135+
payload = jwt.verify(authToken, config.JWT_SECRET);
136+
} catch (error) {
137+
res.status(401).send('Invalid token');
138+
return;
139+
}
140+
if (
141+
!payload ||
142+
!payload.expiryTimestamp ||
143+
!payload.userid ||
144+
!payload.role ||
145+
moment().isAfter(payload.expiryTimestamp)
146+
) {
147+
res.status(401).send('Unauthorized request');
148+
return;
146149
}
147150

148-
return next();
151+
const requestor = {};
152+
requestor.requestorId = payload.userid;
153+
requestor.role = payload.role;
154+
requestor.permissions = payload.permissions;
155+
156+
req.body.requestor = requestor;
157+
next();
149158
});
150159

151-
// PROTECTED ROUTES
160+
// Apply PayPal middleware only to specific route
152161
app.post('/api/lb/myWebhooks/', paypalAuthMiddleware, webhookTest);
153162
};

src/startup/routes.js

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,6 @@ const educatorRouter = require('../routes/educatorRouter');
383383
const atomRouter = require('../routes/atomRouter');
384384
const intermediateTaskRouter = require('../routes/intermediateTaskRouter');
385385
const savedFilterRouter = require('../routes/savedFilterRouter')(savedFilter);
386-
const summaryDashboardRouter = require('../routes/summaryDashboard.routes');
387386
// lbdashboard
388387
const bidTermsRouter = require('../routes/lbdashboard/bidTermsRouter');
389388
const bidsRouter = require('../routes/lbdashboard/bidsRouter');
@@ -421,19 +420,26 @@ const lessonPlanSubmissionRouter = require('../routes/lessonPlanner/lessonPlanSu
421420
const epBadge = require('../models/educationPortal/badgeModel');
422421
const studentBadges = require('../models/educationPortal/studentBadgesModel');
423422
const badgeSystemRouter = require('../routes/educationPortal/badgeSystemRouter');
423+
424424
const promotionDetailsRouter = require('../routes/promotionDetailsRouter');
425-
const activityLogRouter = require('../routes/activityLogRouter');
426-
const jobHitsAndApplicationsRoutes = require('../routes/jobAnalyticsRouter');
427425

428-
const actualCostRouter = require('../routes/actualCostRouter');
429-
const kitchenInventoryRouter = require('../routes/kitchenandinventory/KIInventoryRouter');
426+
const gardenRouter = require('../routes/kitchenInventory/gardenRouter')();
427+
// Kitchen and Inventory portal routes
428+
const kitchenInventoryRouter = require('../routes/kitchenandinventory/KIInventoryRouter')();
429+
const summaryDashboardRouter = require('../routes/summaryDashboard.routes');
430+
431+
// Actual Cost
432+
const actualCostRouter = require('../routes/actualCostRouter')();
433+
434+
const recipeRouter = require('../routes/kitchenInventory/recipeRouter')();
435+
436+
const jobHitsAndApplicationsRoutes = require('../routes/jobAnalytics/JobHitsAndApplicationsRoutes');
430437

431438
// Education Portal
432439
const educatorRoutes = require('../routes/educatorRoutes');
433440

434441
module.exports = function (app) {
435442
app.use('/api/bm/summary-dashboard', summaryDashboardRouter);
436-
app.use('/api/support/daily-log', activityLogRouter);
437443
app.use('/api', forgotPwdRouter);
438444
app.use('/api', loginRouter);
439445
app.use('/api', forcePwdRouter);
@@ -635,21 +641,23 @@ module.exports = function (app) {
635641
app.use('/api/lb', bidDeadlinesRouter);
636642
app.use('/api/lb', SMSRouter);
637643

644+
// Education Portal
645+
app.use('/api/educationportal/educator', educatorRoutes);
638646
app.use('/api', materialCostRouter);
639647

640648
app.use('/api/educator/reports', studentReportRouter());
641649
// education portal
642-
643650
app.use('/api/education', badgeSystemRouter);
651+
644652
app.use('/api/lp', lessonPlanSubmissionRouter);
653+
645654
app.use('/api/education', browsableLessonPlanRouter);
655+
646656
app.use('/api/educator/reports', downloadReportRouter);
647657

648658
// Kitchen and Inventory portal routes
649659
app.use('/api/kitchenandinventory/inventory', kitchenInventoryRouter);
650-
651-
// Need to implement gardenRouter
652-
// app.use('/api/kitchenandinventory/garden', gardenRouter);
660+
app.use('/api/kitchenandinventory/garden', gardenRouter);
653661

654662
// Education Portal
655663
app.use('/api/student/profile', educationProfileRouter);
@@ -658,6 +666,7 @@ module.exports = function (app) {
658666

659667
app.use('/api/lp', lessonPlanSubmissionRouter);
660668

661-
// Need to implement gardenRouter
662-
// app.use('/api/kitchenandinventory/recipes', recipeRouter);
669+
app.use('/api/kitchenandinventory/recipes', recipeRouter);
670+
671+
app.use('/api/analytics', analyticsRouter);
663672
};

src/utilities/jwtVerificationLogic.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)