Fix admin authorization and harden chat requests
CI / check (22) (push) Successful in 10m3s
CI / check (24) (push) Successful in 9m34s

This commit is contained in:
2026-10-05 22:49:29 +02:00
parent e8cd13a0af
commit c48e1b17c4
38 changed files with 4897 additions and 1257 deletions
+5 -4
View File
@@ -2,6 +2,7 @@
* @file Verarbeitet das Hochladen, Abrufen und Entfernen von Bildanhängen mit Zugriffskontrolle.
*/
import express from "express";
import {asyncHandler} from "../middleware/asyncHandler.js";
import multer from "multer";
import {requireLogin} from "../middleware/auth.js";
import {AttachmentError} from "../services/attachmentService.js";
@@ -31,17 +32,17 @@ export function createUploadsRouter(service, config) {
catch (failure) { fail(res, failure); }
});
});
router.get("/attachments/:id", requireLogin, async (req, res) => {
router.get("/attachments/:id", requireLogin, asyncHandler(async (req, res) => {
try {
const row = service.owned(req.params.id, req.session.user);
const buffer = await service.storage.read(row.storage_key);
res.set({"Content-Type": row.mime_type, "Content-Length": buffer.length, "Cache-Control": "private, no-store",
"X-Content-Type-Options": "nosniff", "Content-Disposition": "inline"}).send(buffer);
} catch (error) { fail(res, error); }
});
router.delete("/attachments/:id", requireLogin, async (req, res) => {
}));
router.delete("/attachments/:id", requireLogin, asyncHandler(async (req, res) => {
try { await service.remove(req.params.id, req.session.user); res.json({success: true}); }
catch (error) { fail(res, error); }
});
}));
return router;
}