43 lines
1.4 KiB
JavaScript
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 };
|