const db = require('../db'); /** * Middleware to check if a module is active. * @param {string} moduleCode - Code of the module to check (e.g., 'monitoring', 'asset', 'production') */ const requireModule = (moduleCode) => { return async (req, res, next) => { try { const [rows] = await db.query( 'SELECT is_active, expiry_date FROM system_modules WHERE code = ?', [moduleCode] ); if (rows.length === 0 || !rows[0].is_active) { return res.status(403).json({ error: 'Module Not Active', message: `The '${moduleCode}' module is not active. Please activate a license first.` }); } const moduleData = rows[0]; if (moduleData.expiry_date) { const now = new Date(); const expiry = new Date(moduleData.expiry_date); if (now > expiry) { return res.status(403).json({ error: 'License Expired', message: `The license for '${moduleCode}' has expired on ${moduleData.expiry_date}.` }); } } next(); } catch (err) { console.error('[License Check Error]', err); res.status(500).json({ error: 'Internal Server Error' }); } }; }; module.exports = { requireModule };