function requireLogin(req, res, next) { if (!req.session.user) { return res.redirect("/"); } req.user = req.session.user; next(); } // ── Hilfsfunktion: Zugriff verweigern mit Flash + Redirect ──────────────────── function denyAccess(req, res, message) { // Zurück zur vorherigen Seite, oder zum Dashboard const back = req.get("Referrer") || "/dashboard"; req.session.flash = req.session.flash || []; req.session.flash.push({ type: "danger", message }); return res.redirect(back); } // ✅ Arzt-only function requireArzt(req, res, next) { if (!req.session.user) return res.redirect("/"); if (req.session.user.role !== "arzt") { return denyAccess(req, res, "⛔ Kein Zugriff – diese Seite ist nur für Ärzte."); } req.user = req.session.user; next(); } // ✅ Admin-only function requireAdmin(req, res, next) { if (!req.session.user) return res.redirect("/"); if (req.session.user.role !== "admin") { return denyAccess(req, res, "⛔ Kein Zugriff – diese Seite ist nur für Administratoren."); } req.user = req.session.user; next(); } // ✅ Arzt + Mitarbeiter function requireArztOrMitarbeiter(req, res, next) { if (!req.session.user) return res.redirect("/"); const allowed = ["arzt", "mitarbeiter"]; if (!allowed.includes(req.session.user.role)) { return denyAccess(req, res, "⛔ Kein Zugriff – diese Seite ist nur für Ärzte und Mitarbeiter."); } req.user = req.session.user; next(); } module.exports = { requireLogin, requireArzt, requireAdmin, requireArztOrMitarbeiter, };