use crate::auth::require_admin;
use crate::cli::{AdminCommands, AdminUsersCommands, Cli};
use crate::error::{CliError, Result};
use crate::output::print_error;
pub async fn execute(cmd: &AdminCommands, _cli: &Cli) -> Result<()> {
match cmd {
AdminCommands::Users { command } => execute_users_command(command).await,
AdminCommands::Stats => execute_stats_command().await,
}
}
async fn execute_users_command(cmd: &AdminUsersCommands) -> Result<()> {
match cmd {
AdminUsersCommands::List { .. } => {
require_admin("list all platform users").await?;
print_error("Admin users list not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
AdminUsersCommands::Show { user_id } => {
require_admin(&format!("view platform user '{}'", user_id)).await?;
print_error("Admin user show not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
AdminUsersCommands::Create { username, .. } => {
require_admin(&format!("create platform user '{}'", username)).await?;
print_error("Admin user create not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
AdminUsersCommands::Enable { user_id } => {
require_admin(&format!("enable platform user '{}'", user_id)).await?;
print_error("Admin user enable not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
AdminUsersCommands::Disable { user_id } => {
require_admin(&format!("disable platform user '{}'", user_id)).await?;
print_error("Admin user disable not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
AdminUsersCommands::SetRole { user_id, role } => {
require_admin(&format!("set role '{}' for platform user '{}'", role, user_id))
.await?;
print_error("Admin user set-role not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}
}
}
async fn execute_stats_command() -> Result<()> {
require_admin("view system statistics").await?;
print_error("Admin stats not yet implemented (Phase 5)");
Err(CliError::ApiError(
"Admin functionality will be implemented in Phase 5".to_string(),
))
}