Files
openclaw-zero-token/gateway/auth-install-policy.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

55 lines
1.6 KiB
TypeScript

import type { OpenClawConfig } from "../config/config.js";
import { collectDurableServiceEnvVars } from "../config/state-dir-dotenv.js";
import { hasConfiguredSecretInput } from "../config/types.secrets.js";
type GatewayInstallAuthMode = NonNullable<NonNullable<OpenClawConfig["gateway"]>["auth"]>["mode"];
function hasExplicitGatewayInstallAuthMode(
mode: GatewayInstallAuthMode | undefined,
): boolean | undefined {
if (mode === "token") {
return true;
}
if (mode === "password" || mode === "none" || mode === "trusted-proxy") {
return false;
}
return undefined;
}
function hasConfiguredGatewayPasswordForInstall(cfg: OpenClawConfig): boolean {
return hasConfiguredSecretInput(cfg.gateway?.auth?.password, cfg.secrets?.defaults);
}
function hasDurableGatewayPasswordEnvForInstall(
cfg: OpenClawConfig,
env: NodeJS.ProcessEnv,
): boolean {
const durableServiceEnv = collectDurableServiceEnvVars({ env, config: cfg });
return Boolean(
durableServiceEnv.OPENCLAW_GATEWAY_PASSWORD?.trim() ||
durableServiceEnv.CLAWDBOT_GATEWAY_PASSWORD?.trim(),
);
}
export function shouldRequireGatewayTokenForInstall(
cfg: OpenClawConfig,
env: NodeJS.ProcessEnv,
): boolean {
const explicitModeDecision = hasExplicitGatewayInstallAuthMode(cfg.gateway?.auth?.mode);
if (explicitModeDecision !== undefined) {
return explicitModeDecision;
}
if (hasConfiguredGatewayPasswordForInstall(cfg)) {
return false;
}
// Service install should only infer password mode from durable sources that
// survive outside the invoking shell.
if (hasDurableGatewayPasswordEnvForInstall(cfg, env)) {
return false;
}
return true;
}