refactor: share dual text command gating

This commit is contained in:
Peter Steinberger
2026-03-14 01:23:36 +00:00
parent 91d9573b55
commit b61bc4948e
5 changed files with 55 additions and 23 deletions

View File

@@ -9,7 +9,7 @@ import {
evaluateSenderGroupAccessForPolicy,
resolveSenderScopedGroupPolicy,
recordPendingHistoryEntryIfEnabled,
resolveControlCommandGate,
resolveDualTextControlCommandGate,
resolveDefaultGroupPolicy,
isDangerousNameMatchingEnabled,
readStoreAllowFromForDmPolicy,
@@ -297,18 +297,15 @@ export function createMSTeamsMessageHandler(deps: MSTeamsMessageHandlerDeps) {
senderName,
allowNameMatching: isDangerousNameMatchingEnabled(msteamsCfg),
});
const hasControlCommandInMessage = core.channel.text.hasControlCommand(text, cfg);
const commandGate = resolveControlCommandGate({
const { commandAuthorized, shouldBlock } = resolveDualTextControlCommandGate({
useAccessGroups,
authorizers: [
{ configured: commandDmAllowFrom.length > 0, allowed: ownerAllowedForCommands },
{ configured: effectiveGroupAllowFrom.length > 0, allowed: groupAllowedForCommands },
],
allowTextCommands: true,
hasControlCommand: hasControlCommandInMessage,
primaryConfigured: commandDmAllowFrom.length > 0,
primaryAllowed: ownerAllowedForCommands,
secondaryConfigured: effectiveGroupAllowFrom.length > 0,
secondaryAllowed: groupAllowedForCommands,
hasControlCommand: core.channel.text.hasControlCommand(text, cfg),
});
const commandAuthorized = commandGate.commandAuthorized;
if (commandGate.shouldBlock) {
if (shouldBlock) {
logInboundDrop({
log: logVerboseMessage,
channel: "msteams",