feat(cli): authforgectl totp enroll/status/revoke

This commit is contained in:
michael
2026-04-27 12:12:02 -07:00
parent 8060364973
commit 334fa5e20b
3 changed files with 107 additions and 1 deletions

View File

@@ -241,6 +241,52 @@ pub(crate) async fn dispatch(json: bool, cmd: super::Cmd) -> Result<()> {
std::process::exit(1);
}
}
super::Cmd::Totp {
cmd: super::TotpCmd::Enroll { user },
} => {
let e = d.enroll_totp(&user).await?;
if json {
println!("{}", serde_json::to_string_pretty(&e)?);
} else {
println!("secret: {}", e.secret_b32);
println!("uri: {}", e.otpauth_uri);
println!();
println!("Scan the URI as a QR or enter the secret in your authenticator app.");
}
}
super::Cmd::Totp {
cmd: super::TotpCmd::Status { user },
} => {
let enrolled = d.is_totp_enrolled(&user).await?;
if json {
println!(
"{}",
serde_json::json!({ "user": user, "enrolled": enrolled })
);
} else if enrolled {
println!("{user}: enrolled");
} else {
println!("{user}: not enrolled");
}
}
super::Cmd::Totp {
cmd: super::TotpCmd::Revoke { user },
} => {
let removed = d.revoke_totp(&user).await?;
if removed {
if !json {
println!("revoked TOTP for {user}");
}
} else {
if !json {
eprintln!("not enrolled: {user}");
}
std::process::exit(1);
}
}
}
Ok(())
}