From 99d14a820ab39d9651f3048d75a031db1b52b6a9 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 7 Mar 2026 23:13:06 +0000 Subject: [PATCH] refactor: share route policy evaluation in chat monitors --- src/discord/monitor/allow-list.ts | 23 +++++++++++------------ src/slack/monitor/policy.ts | 18 +++++++----------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/discord/monitor/allow-list.ts b/src/discord/monitor/allow-list.ts index 4d48782047b..5432cb5d128 100644 --- a/src/discord/monitor/allow-list.ts +++ b/src/discord/monitor/allow-list.ts @@ -6,6 +6,7 @@ import { resolveChannelMatchConfig, type ChannelMatchSource, } from "../../channels/channel-config.js"; +import { evaluateGroupRouteAccessForPolicy } from "../../plugin-sdk/group-access.js"; import { formatDiscordUserTag } from "./format.js"; export type DiscordAllowList = { @@ -512,20 +513,18 @@ export function isDiscordGroupAllowedByPolicy(params: { channelAllowlistConfigured: boolean; channelAllowed: boolean; }): boolean { - const { groupPolicy, guildAllowlisted, channelAllowlistConfigured, channelAllowed } = params; - if (groupPolicy === "disabled") { + if (params.groupPolicy === "allowlist" && !params.guildAllowlisted) { return false; } - if (groupPolicy === "open") { - return true; - } - if (!guildAllowlisted) { - return false; - } - if (!channelAllowlistConfigured) { - return true; - } - return channelAllowed; + + return evaluateGroupRouteAccessForPolicy({ + groupPolicy: + params.groupPolicy === "allowlist" && !params.channelAllowlistConfigured + ? "open" + : params.groupPolicy, + routeAllowlistConfigured: params.channelAllowlistConfigured, + routeMatched: params.channelAllowed, + }).allowed; } export function resolveGroupDmAllow(params: { diff --git a/src/slack/monitor/policy.ts b/src/slack/monitor/policy.ts index fbf1d3a730e..cb1204910ec 100644 --- a/src/slack/monitor/policy.ts +++ b/src/slack/monitor/policy.ts @@ -1,17 +1,13 @@ +import { evaluateGroupRouteAccessForPolicy } from "../../plugin-sdk/group-access.js"; + export function isSlackChannelAllowedByPolicy(params: { groupPolicy: "open" | "disabled" | "allowlist"; channelAllowlistConfigured: boolean; channelAllowed: boolean; }): boolean { - const { groupPolicy, channelAllowlistConfigured, channelAllowed } = params; - if (groupPolicy === "disabled") { - return false; - } - if (groupPolicy === "open") { - return true; - } - if (!channelAllowlistConfigured) { - return false; - } - return channelAllowed; + return evaluateGroupRouteAccessForPolicy({ + groupPolicy: params.groupPolicy, + routeAllowlistConfigured: params.channelAllowlistConfigured, + routeMatched: params.channelAllowed, + }).allowed; }