use anyhow::{Result, bail};
use clap::Args;
use console::style;
use opencode_cloud_core::docker::{
CONTAINER_NAME, DockerClient, lock_user, persist_user, unlock_user, user_exists,
};
#[derive(Args)]
pub struct UserEnableArgs {
pub username: String,
}
#[derive(Args)]
pub struct UserDisableArgs {
pub username: String,
}
pub async fn cmd_user_enable(
client: &DockerClient,
args: &UserEnableArgs,
quiet: bool,
_verbose: u8,
) -> Result<()> {
let username = &args.username;
if !user_exists(client, CONTAINER_NAME, username).await? {
bail!("User '{username}' does not exist in the container");
}
unlock_user(client, CONTAINER_NAME, username).await?;
persist_user(client, CONTAINER_NAME, username).await?;
if !quiet {
println!(
"{} User '{}' enabled",
style("Success:").green().bold(),
username
);
}
Ok(())
}
pub async fn cmd_user_disable(
client: &DockerClient,
args: &UserDisableArgs,
quiet: bool,
_verbose: u8,
) -> Result<()> {
let username = &args.username;
if !user_exists(client, CONTAINER_NAME, username).await? {
bail!("User '{username}' does not exist in the container");
}
lock_user(client, CONTAINER_NAME, username).await?;
persist_user(client, CONTAINER_NAME, username).await?;
if !quiet {
println!(
"{} User '{}' disabled",
style("Success:").green().bold(),
username
);
}
Ok(())
}