fix(allowlist): canonicalize Slack/Discord allowFrom

This commit is contained in:
Peter Steinberger
2026-02-15 03:46:11 +01:00
parent 3c3695d7c2
commit cf04208cb9
7 changed files with 153 additions and 25 deletions

View File

@@ -191,13 +191,16 @@ const DOCKS: Record<ChatChannelId, ChannelDock> = {
blockStreamingCoalesceDefaults: { minChars: 1500, idleMs: 1000 },
},
elevated: {
allowFromFallback: ({ cfg }) => cfg.channels?.discord?.dm?.allowFrom,
allowFromFallback: ({ cfg }) =>
cfg.channels?.discord?.allowFrom ?? cfg.channels?.discord?.dm?.allowFrom,
},
config: {
resolveAllowFrom: ({ cfg, accountId }) =>
(resolveDiscordAccount({ cfg, accountId }).config.dm?.allowFrom ?? []).map((entry) =>
resolveAllowFrom: ({ cfg, accountId }) => {
const account = resolveDiscordAccount({ cfg, accountId });
return (account.config.allowFrom ?? account.config.dm?.allowFrom ?? []).map((entry) =>
String(entry),
),
);
},
formatAllowFrom: ({ allowFrom }) => formatLower(allowFrom),
},
groups: {
@@ -355,8 +358,12 @@ const DOCKS: Record<ChatChannelId, ChannelDock> = {
blockStreamingCoalesceDefaults: { minChars: 1500, idleMs: 1000 },
},
config: {
resolveAllowFrom: ({ cfg, accountId }) =>
(resolveSlackAccount({ cfg, accountId }).dm?.allowFrom ?? []).map((entry) => String(entry)),
resolveAllowFrom: ({ cfg, accountId }) => {
const account = resolveSlackAccount({ cfg, accountId });
return (account.config.allowFrom ?? account.dm?.allowFrom ?? []).map((entry) =>
String(entry),
);
},
formatAllowFrom: ({ allowFrom }) => formatLower(allowFrom),
},
groups: {

View File

@@ -21,7 +21,7 @@ export async function listSlackDirectoryPeersFromConfig(
const q = params.query?.trim().toLowerCase() || "";
const ids = new Set<string>();
for (const entry of account.dm?.allowFrom ?? []) {
for (const entry of account.config.allowFrom ?? account.dm?.allowFrom ?? []) {
const raw = String(entry).trim();
if (!raw || raw === "*") {
continue;
@@ -84,7 +84,7 @@ export async function listDiscordDirectoryPeersFromConfig(
const q = params.query?.trim().toLowerCase() || "";
const ids = new Set<string>();
for (const entry of account.config.dm?.allowFrom ?? []) {
for (const entry of account.config.allowFrom ?? account.config.dm?.allowFrom ?? []) {
const raw = String(entry).trim();
if (!raw || raw === "*") {
continue;