From 2d897b9546e16015732086ed510f4da6028114f1 Mon Sep 17 00:00:00 2001 From: Abdur Rahman Date: Thu, 4 Sep 2025 08:01:11 +0000 Subject: [PATCH] Refactor user management for CKAN installation --- src/main.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 49d6f9d..17f268d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -259,13 +259,19 @@ fn main() -> Result<()> { let sysadmin_password = config.sysadmin.password; let sysadmin_email = config.sysadmin.email; let existing_users = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user list").read()?; - println!("Existing users: {}", existing_users); - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add admin_user password=password email=admin@localhost").run()?; - cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user").run()?; - cmd!( - sh, - "ckan -c /etc/ckan/default/ckan.ini sysadmin add admin_user" - ) + let user_check = cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user show {username}").run(); + match user_check { + Ok(_) => { + // User exists, just make sure they're a sysadmin + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run().ok(); + println!("User {username} already exists, ensured sysadmin privileges."); + }, + Err(_) => { + // User doesn't exist, create them + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini user add {username} password=password email={username}@localhost").run()?; + cmd!(sh, "ckan -c /etc/ckan/default/ckan.ini sysadmin add {username}").run()?; + } + } .run()?; println!( "{}",