From b393b9e8ffedfbe76772845e43ce1d80df946111 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 7 Mar 2026 16:48:42 +0000 Subject: [PATCH] refactor(synology-chat): thread command authorization from webhook gate --- extensions/synology-chat/src/channel.ts | 2 +- extensions/synology-chat/src/webhook-handler.test.ts | 3 +++ extensions/synology-chat/src/webhook-handler.ts | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/extensions/synology-chat/src/channel.ts b/extensions/synology-chat/src/channel.ts index 81ef191ba..d84516dbd 100644 --- a/extensions/synology-chat/src/channel.ts +++ b/extensions/synology-chat/src/channel.ts @@ -282,7 +282,7 @@ export function createSynologyChatPlugin() { Surface: CHANNEL_ID, ConversationLabel: msg.senderName || msg.from, Timestamp: Date.now(), - CommandAuthorized: true, + CommandAuthorized: msg.commandAuthorized, }); // Dispatch via the SDK's buffered block dispatcher diff --git a/extensions/synology-chat/src/webhook-handler.test.ts b/extensions/synology-chat/src/webhook-handler.test.ts index 2f6bd8778..37ee566e6 100644 --- a/extensions/synology-chat/src/webhook-handler.test.ts +++ b/extensions/synology-chat/src/webhook-handler.test.ts @@ -237,6 +237,7 @@ describe("createWebhookHandler", () => { body: "Hello from json", from: "123", senderName: "json-user", + commandAuthorized: true, }), ); }); @@ -396,6 +397,7 @@ describe("createWebhookHandler", () => { senderName: "testuser", provider: "synology-chat", chatType: "direct", + commandAuthorized: true, }), ); }); @@ -422,6 +424,7 @@ describe("createWebhookHandler", () => { expect(deliver).toHaveBeenCalledWith( expect.objectContaining({ body: expect.stringContaining("[FILTERED]"), + commandAuthorized: true, }), ); }); diff --git a/extensions/synology-chat/src/webhook-handler.ts b/extensions/synology-chat/src/webhook-handler.ts index fab4b9a02..b4c73934d 100644 --- a/extensions/synology-chat/src/webhook-handler.ts +++ b/extensions/synology-chat/src/webhook-handler.ts @@ -225,6 +225,7 @@ export interface WebhookHandlerDeps { chatType: string; sessionKey: string; accountId: string; + commandAuthorized: boolean; /** Chat API user_id for sending replies (may differ from webhook user_id) */ chatUserId?: string; }) => Promise; @@ -364,6 +365,7 @@ export function createWebhookHandler(deps: WebhookHandlerDeps) { chatType: "direct", sessionKey, accountId: account.accountId, + commandAuthorized: auth.allowed, chatUserId: replyUserId, });