mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 16:04:33 +00:00
refactor(onboarding): share allowlist merge helpers
This commit is contained in:
@@ -17,23 +17,14 @@ import { resolveDiscordUserAllowlist } from "../../../discord/resolve-users.js";
|
|||||||
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../../../routing/session-key.js";
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../../../routing/session-key.js";
|
||||||
import { formatDocsLink } from "../../../terminal/links.js";
|
import { formatDocsLink } from "../../../terminal/links.js";
|
||||||
import { promptChannelAccessConfig } from "./channel-access.js";
|
import { promptChannelAccessConfig } from "./channel-access.js";
|
||||||
import { promptAccountId } from "./helpers.js";
|
import { addWildcardAllowFrom, mergeAllowFromEntries, promptAccountId } from "./helpers.js";
|
||||||
|
|
||||||
function addDiscordWildcardAllowFrom(allowFrom?: string[] | null): string[] {
|
|
||||||
const next = (allowFrom ?? []).map((entry) => entry.trim()).filter(Boolean);
|
|
||||||
if (!next.includes("*")) {
|
|
||||||
next.push("*");
|
|
||||||
}
|
|
||||||
return next;
|
|
||||||
}
|
|
||||||
|
|
||||||
const channel = "discord" as const;
|
const channel = "discord" as const;
|
||||||
|
|
||||||
function setDiscordDmPolicy(cfg: OpenClawConfig, dmPolicy: DmPolicy) {
|
function setDiscordDmPolicy(cfg: OpenClawConfig, dmPolicy: DmPolicy) {
|
||||||
const existingAllowFrom =
|
const existingAllowFrom =
|
||||||
cfg.channels?.discord?.allowFrom ?? cfg.channels?.discord?.dm?.allowFrom;
|
cfg.channels?.discord?.allowFrom ?? cfg.channels?.discord?.dm?.allowFrom;
|
||||||
const allowFrom =
|
const allowFrom = dmPolicy === "open" ? addWildcardAllowFrom(existingAllowFrom) : undefined;
|
||||||
dmPolicy === "open" ? addDiscordWildcardAllowFrom(existingAllowFrom) : undefined;
|
|
||||||
return {
|
return {
|
||||||
...cfg,
|
...cfg,
|
||||||
channels: {
|
channels: {
|
||||||
@@ -221,9 +212,7 @@ async function promptDiscordAllowFrom(params: {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const unique = [...new Set([...existing.map((v) => String(v).trim()), ...ids])].filter(
|
const unique = mergeAllowFromEntries(existing, ids);
|
||||||
Boolean,
|
|
||||||
);
|
|
||||||
return setDiscordAllowFrom(params.cfg, unique);
|
return setDiscordAllowFrom(params.cfg, unique);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +233,7 @@ async function promptDiscordAllowFrom(params: {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const ids = results.map((res) => res.id as string);
|
const ids = results.map((res) => res.id as string);
|
||||||
const unique = [...new Set([...existing.map((v) => String(v).trim()).filter(Boolean), ...ids])];
|
const unique = mergeAllowFromEntries(existing, ids);
|
||||||
return setDiscordAllowFrom(params.cfg, unique);
|
return setDiscordAllowFrom(params.cfg, unique);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,3 +14,11 @@ export function addWildcardAllowFrom(
|
|||||||
}
|
}
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function mergeAllowFromEntries(
|
||||||
|
current: Array<string | number> | null | undefined,
|
||||||
|
additions: Array<string | number>,
|
||||||
|
): string[] {
|
||||||
|
const merged = [...(current ?? []), ...additions].map((v) => String(v).trim()).filter(Boolean);
|
||||||
|
return [...new Set(merged)];
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { resolveSlackChannelAllowlist } from "../../../slack/resolve-channels.js
|
|||||||
import { resolveSlackUserAllowlist } from "../../../slack/resolve-users.js";
|
import { resolveSlackUserAllowlist } from "../../../slack/resolve-users.js";
|
||||||
import { formatDocsLink } from "../../../terminal/links.js";
|
import { formatDocsLink } from "../../../terminal/links.js";
|
||||||
import { promptChannelAccessConfig } from "./channel-access.js";
|
import { promptChannelAccessConfig } from "./channel-access.js";
|
||||||
import { addWildcardAllowFrom, promptAccountId } from "./helpers.js";
|
import { addWildcardAllowFrom, mergeAllowFromEntries, promptAccountId } from "./helpers.js";
|
||||||
|
|
||||||
const channel = "slack" as const;
|
const channel = "slack" as const;
|
||||||
|
|
||||||
@@ -280,9 +280,7 @@ async function promptSlackAllowFrom(params: {
|
|||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const unique = [...new Set([...existing.map((v) => String(v).trim()), ...ids])].filter(
|
const unique = mergeAllowFromEntries(existing, ids);
|
||||||
Boolean,
|
|
||||||
);
|
|
||||||
return setSlackAllowFrom(params.cfg, unique);
|
return setSlackAllowFrom(params.cfg, unique);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,7 +301,7 @@ async function promptSlackAllowFrom(params: {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const ids = results.map((res) => res.id as string);
|
const ids = results.map((res) => res.id as string);
|
||||||
const unique = [...new Set([...existing.map((v) => String(v).trim()).filter(Boolean), ...ids])];
|
const unique = mergeAllowFromEntries(existing, ids);
|
||||||
return setSlackAllowFrom(params.cfg, unique);
|
return setSlackAllowFrom(params.cfg, unique);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user