diff --git "a/api/src/routes/channels/\043channel_id/messages/\043message_id/index.ts" "b/api/src/routes/channels/\043channel_id/messages/\043message_id/index.ts" index 58dfb1c..a27c71e 100644 --- "a/api/src/routes/channels/\043channel_id/messages/\043message_id/index.ts" +++ "b/api/src/routes/channels/\043channel_id/messages/\043message_id/index.ts" @@ -51,6 +51,18 @@ return res.json(message); }); +router.get("/", route({ permission: "VIEW_CHANNEL" }), async (req: Request, res: Response) => { + const { message_id, channel_id } = req.params; + + const message = await Message.findOneOrFail({ where: { id: message_id, channel_id }, relations: ["attachments"] }); + + const permissions = await getPermission(req.user_id, undefined, channel_id); + + if (message.author_id !== req.user_id) permissions.hasThrow("READ_MESSAGE_HISTORY"); + + return res.json(message); +}); + router.delete("/", route({}), async (req: Request, res: Response) => { const { message_id, channel_id } = req.params; diff --git "a/api/src/routes/channels/\043channel_id/messages/index.ts" "b/api/src/routes/channels/\043channel_id/messages/index.ts" index 2fd08b0..4cfaf24 100644 --- "a/api/src/routes/channels/\043channel_id/messages/index.ts" +++ "b/api/src/routes/channels/\043channel_id/messages/index.ts" @@ -8,6 +8,7 @@ Embed, emitEvent, getPermission, + getRights, Message, MessageCreateEvent, uploadFile, @@ -149,7 +150,7 @@ }); // max upload 50 mb // TODO: dynamically change limit of MessageCreateSchema with config -// TODO: check: sum of all characters in an embed structure must not exceed 6000 characters +// TODO: check: sum of all characters in an embed structure must not exceed instance limits // https://discord.com/developers/docs/resources/channel#create-message // TODO: text channel slowdown @@ -167,7 +168,7 @@ next(); }, - route({ body: "MessageCreateSchema", permission: "SEND_MESSAGES" }), + route({ body: "MessageCreateSchema", permission: "SEND_MESSAGES", right: "SEND_MESSAGES" }), async (req: Request, res: Response) => { const { channel_id } = req.params; var body = req.body as MessageCreateSchema;