diff --git a/src/controllers/serverTimeController.js b/src/controllers/serverTimeController.js new file mode 100644 index 0000000000..5093a2e07a --- /dev/null +++ b/src/controllers/serverTimeController.js @@ -0,0 +1,25 @@ +const moment = require('moment'); + +const getServerTime = (req, res) => { + try { + const serverTime = moment(); + // const serverTime = moment('2026-07-10T10:00:00'); // testing purposes + + console.log('Getting time'); + + res.status(200).json({ + serverTime: serverTime.toISOString(), + date: serverTime.format('YYYY-MM-DD'), + timezone: Intl.DateTimeFormat().resolvedOptions().timeZone, + timestamp: serverTime.valueOf(), + }); + } catch (error) { + res.status(500).json({ + error: 'Unable to fetch server time', + }); + } +}; + +module.exports = { + getServerTime, +}; diff --git a/src/routes/serverTimeRouter.js b/src/routes/serverTimeRouter.js new file mode 100644 index 0000000000..c54b160e03 --- /dev/null +++ b/src/routes/serverTimeRouter.js @@ -0,0 +1,9 @@ +const express = require('express'); + +const router = express.Router(); + +const { getServerTime } = require('../controllers/serverTimeController'); + +router.get('/servertime', getServerTime); + +module.exports = router; diff --git a/src/startup/middleware.js b/src/startup/middleware.js index 11e6059b16..3bd3a3bf48 100644 --- a/src/startup/middleware.js +++ b/src/startup/middleware.js @@ -128,6 +128,13 @@ module.exports = function (app) { if (openPaths.includes(req.path)) { return next(); // Allow PayPal requests through } + + // Public server time endpoint + if (req.originalUrl === '/api/servertime' && req.method === 'GET') { + next(); + return; + } + if (!req.header('Authorization')) { res.status(401).send({ 'error:': 'Unauthorized request' }); return; diff --git a/src/startup/routes.js b/src/startup/routes.js index 4cd7383c86..628e91ae58 100644 --- a/src/startup/routes.js +++ b/src/startup/routes.js @@ -439,6 +439,8 @@ const educatorRoutes = require('../routes/educatorRoutes'); const classAggregationRouter = require('../routes/classAgreegraterRouter'); const activityLogRouter = require('../routes/activityLogRouter')(); +const serverTimeRouter = require('../routes/serverTimeRouter'); + module.exports = function (app) { app.use('/api/bm/summary-dashboard', summaryDashboardRouter); app.use('/api', forgotPwdRouter); @@ -674,4 +676,6 @@ module.exports = function (app) { app.use('/api/kitchenandinventory/recipes', recipeRouter); app.use('/api/analytics', analyticsRouter); + + app.use('/api', serverTimeRouter); };