Reuse stored managed-NE credentials when opening WebCRT from topology.

Deep-link open was missing has_password/protocol, so SSH always prompted for login.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-04 10:40:22 +08:00
parent 71acbc747f
commit bd97e1b875
4 changed files with 9 additions and 0 deletions

View file

@ -89,6 +89,8 @@ class ManagedNeOut(BaseModel):
port: int
protocol: str
username: str
# True when a non-empty password ciphertext is stored (never returns the secret).
has_password: bool = False
connect_status: ConnectStatus
connect_message: str
connect_detail: str = ""

View file

@ -201,6 +201,7 @@ def row_to_out(row: ManagedNE) -> ManagedNeOut:
port=int(row.port or 22),
protocol=str(row.protocol or "ssh"),
username=str(row.username or ""),
has_password=bool(str(row.password_enc or "").strip()),
connect_status=status, # type: ignore[arg-type]
connect_message=str(row.connect_message or "")[:500],
connect_detail=str(row.connect_detail or "")[:8000],

View file

@ -1901,6 +1901,10 @@ export function WebcrtPage() {
ip_address: row.ip_address,
vendor: row.vendor,
device_type: row.device_type,
protocol: row.protocol || "ssh",
username: row.username || "",
has_password: Boolean(row.has_password),
hop_enabled: Boolean(row.hop_enabled),
connect_status: row.connect_status,
cli_profile_ready: true,
});

View file

@ -182,6 +182,8 @@ export type ManagedNeItem = {
port: number;
protocol: string;
username: string;
/** True when a password is stored server-side (secret never returned). */
has_password?: boolean;
connect_status: ConnectStatus;
connect_message: string;
connect_detail: string;