const db = require("../db"); const TRIAL_DAYS = 30; async function licenseGate(req, res, next) { // Login-Seiten immer erlauben if (req.path === "/" || req.path.startsWith("/login")) return next(); // Seriennummer-Seite immer erlauben if (req.path.startsWith("/serial-number")) return next(); // Wenn nicht eingeloggt -> normal weiter (auth middleware macht das) if (!req.session?.user) return next(); const [rows] = await db .promise() .query( `SELECT serial_number, trial_started_at FROM company_settings ORDER BY id ASC LIMIT 1`, ); const settings = rows?.[0]; // Wenn Seriennummer vorhanden -> alles ok if (settings?.serial_number) return next(); // Wenn keine Trial gestartet: jetzt starten if (!settings?.trial_started_at) { await db .promise() .query( `UPDATE company_settings SET trial_started_at = NOW() WHERE id = ?`, [settings?.id || 1], ); return next(); // Trial läuft ab jetzt } // Trial prüfen const trialStart = new Date(settings.trial_started_at); const now = new Date(); const diffMs = now - trialStart; const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24)); if (diffDays < TRIAL_DAYS) { return next(); // Trial ist noch gültig } // ❌ Trial abgelaufen -> nur noch Seriennummer Seite return res.redirect("/serial-number"); } module.exports = { licenseGate };