const express = require('express'); const asyncHandler = require('../src/utils/async-handler'); const { errorResponse } = require('../src/utils/responses'); module.exports = function({ licenseManager }) { const router = express.Router(); router.post('/activate', asyncHandler(async (req, res) => { const { code } = req.body; if (!code) { return errorResponse(res, 400, 'License code is required'); } const result = await licenseManager.activate(code); if (result.success) { res.json({ success: true, message: result.message, license: result.activation }); } else { errorResponse(res, 400, result.message); } }, 'license-activate')); router.get('/status', asyncHandler(async (req, res) => { const status = licenseManager.getStatus(); res.json({ success: true, license: status }); }, 'license-status')); router.post('/deactivate', asyncHandler(async (req, res) => { const result = await licenseManager.deactivate(); if (result.success) { res.json({ success: true, message: result.message }); } else { errorResponse(res, 400, result.message); } }, 'license-deactivate')); router.get('/feature/:feature', asyncHandler(async (req, res) => { const { feature } = req.params; const available = licenseManager.hasFeature(feature); const status = licenseManager.getStatus(); res.json({ success: true, feature, available, tier: status.tier, ...(available ? {} : { upgradeUrl: '/settings#license', message: `${status.premiumFeatures[feature]?.name || feature} requires DashCaddy Premium`, }), }); }, 'license-feature-check')); return router; };