smart_ims/server/middleware/licenseMiddleware.js

43 lines
1.4 KiB
JavaScript

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 };