diff --git a/api/routes/media.ts b/api/routes/media.ts index c6d0e78..c90c08e 100644 --- a/api/routes/media.ts +++ b/api/routes/media.ts @@ -4,7 +4,7 @@ import {Rank} from "../../models/User"; import Multer from "multer"; import path from "path"; import {bucket} from "../../controller/bucket"; -import {createMedia, getMediaById} from "../../controller/media"; +import {createMedia, deleteMedia, getMediaById, getMediaObject} from "../../controller/media"; const app = Router(); @@ -49,4 +49,15 @@ app.post("/upload", hasRank(Rank.TEAM_MEMBER), multer.any(), fileSizeErrorHandle blobStream.end(files[0].buffer); }); +app.delete("/:id", hasRank(Rank.TEAM_MEMBER), async (req: AuthenticatedRequest, res: Response) => { + const media = await getMediaObject(req.params.id); + if (!media) return res.status(404).json({message: "The provided asset could not be found"}); + + if (!(req.user.rank === Rank.TEAM_MEMBER && media.clientId === req.user.clientId || req.user.rank === Rank.ADMIN)) + return res.status(401).json({message: "You don't have the permission to delete this media"}); + + await deleteMedia(req.params.id); + res.json({message: "The provided media got successfully deleted"}); +}); + module.exports = app; \ No newline at end of file