const { getOrCacheUserModeration } = require("../services/redis/userModerationCache.service") function parseDate(value) { if (!value) return null const d = new Date(value) return Number.isNaN(d.getTime()) ? null : d } function isActiveUntil(value) { const dt = parseDate(value) return dt ? dt.getTime() > Date.now() : false } module.exports = function requireNotRestricted(options = {}) { const { checkMute = false, checkSuspend = false } = options return async (req, res, next) => { if (!req.auth?.userId) return res.status(401).json({ error: "Token yok" }) try { const state = await getOrCacheUserModeration(req.auth.userId) if (!state) return res.status(401).json({ error: "Kullanici bulunamadi" }) if (state.disabledAt) { return res.status(403).json({ error: "Hesap devre disi" }) } if (checkSuspend && isActiveUntil(state.suspendedUntil)) { return res.status(403).json({ error: "Hesap gecici olarak kisitli" }) } if (checkMute && isActiveUntil(state.mutedUntil)) { return res.status(403).json({ error: "Yorum yapma kisitli" }) } return next() } catch (err) { return res.status(500).json({ error: "Sunucu hatasi" }) } } }