mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-29 22:55:24 +00:00
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
const SECRET_BACKED_AUTH_TYPES = new Set(["password", "key"]);
|
|
const SECRETLESS_AUTH_TYPES = new Set([
|
|
"none",
|
|
"agent",
|
|
"opkssh",
|
|
"stepca",
|
|
"tailscale",
|
|
"vault",
|
|
]);
|
|
|
|
export type ProxmoxImportAuth = {
|
|
authType: string;
|
|
credentialId?: number;
|
|
overrideCredentialUsername?: boolean;
|
|
};
|
|
|
|
export function resolveProxmoxImportAuth(
|
|
defaultAuthType: string | undefined,
|
|
credentialId: number | null | undefined,
|
|
): ProxmoxImportAuth {
|
|
// An explicit secretless auth choice (none/opkssh/tailscale/vault) wins.
|
|
if (defaultAuthType && SECRETLESS_AUTH_TYPES.has(defaultAuthType)) {
|
|
return { authType: defaultAuthType };
|
|
}
|
|
|
|
// A credential (configured default OR inherited from the source Proxmox host)
|
|
// is a concrete auth source -> use it, even when defaultAuthType is the
|
|
// "password"/"key" default. Otherwise imported guests end up as authType
|
|
// "none" although the host authenticates via a credential.
|
|
if (credentialId) {
|
|
return {
|
|
authType: "credential",
|
|
credentialId,
|
|
overrideCredentialUsername: false,
|
|
};
|
|
}
|
|
|
|
// Explicit non secret-backed special type without a credential.
|
|
if (
|
|
defaultAuthType &&
|
|
defaultAuthType !== "credential" &&
|
|
!SECRET_BACKED_AUTH_TYPES.has(defaultAuthType)
|
|
) {
|
|
return { authType: defaultAuthType };
|
|
}
|
|
|
|
return { authType: "none" };
|
|
}
|