From e5fa51363cfac065cfc9a7613368272d2e825cba Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 2 Apr 2026 17:55:57 +0600 Subject: [PATCH] Users saving fixes --- source/ubinstall-gtk-users.c | 52 +++++++++++++++++++++--------------- source/ubinstall-gtk.h | 1 + 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index eadc513..1a95f56 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -15,7 +15,6 @@ int yon_users_save(main_window *widgets){ GList *users = gtk_container_get_children(GTK_CONTAINER(widgets->UserAddBox)); GList *iter; - if (!users){ { int size = 0; config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&size); @@ -28,11 +27,12 @@ int yon_users_save(main_window *widgets){ } yon_config_remove_by_list(users,size); } + if (!users){ yon_config_register(DEFAULTUSER_parameter,DEFAULTUSER_parameter_command,"root"); } else { for (iter=users;iter;iter=iter->next){ yon_user_struct *user = g_object_get_data(G_OBJECT(iter->data),"yon_user_struct"); - if (user&&user->changed){ + if (user){ if (!yon_user_save(user)){ yon_ubl_status_box_spawn(GTK_CONTAINER(main_config.status_box),_EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); @@ -97,6 +97,9 @@ int yon_user_save(yon_user_struct *user){ } char *parameter = yon_char_unite(yon_char_return_if_exist(name,""),":",yon_char_return_if_exist(admin_uid,""),"::::",yon_char_return_if_exist(password,""),NULL); yon_config_register(USERADD_parameter(login),USERADD_parameter_command(login),parameter); + if (!yon_char_is_empty(user->old_login)&&strcmp(user->old_login,login)){ + yon_config_remove_by_key(USERADD_parameter(user->old_login)); + } free(parameter); return 1; } @@ -234,17 +237,18 @@ void yon_user_init(main_window *widgets){ } int users_size; config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&users_size); + char *addadm = config(ADDADM_parameter); + if (yon_char_is_empty(addadm)){ + addadm = config(ADDADM_system_parameter); + } + + char *default_user = config(DEFAULTUSER_parameter); + if (yon_char_is_empty(default_user)){ + default_user = config(DEFAULTUSER_system_parameter); + } if (!users_size){ - char *addadm = config(ADDADM_parameter); - if (yon_char_is_empty(addadm)){ - addadm = config(ADDADM_system_parameter); - } char *def_usr = config(DEFAULTUSER_parameter); if (yon_char_is_empty(def_usr)||(!yon_char_is_empty(def_usr)&&strcmp(def_usr,"root"))){ - char *default_user = config(DEFAULTUSER_parameter); - if (yon_char_is_empty(default_user)){ - default_user = config(DEFAULTUSER_system_parameter); - } yon_user_struct *user = yon_user_struct_new(); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); g_signal_connect(G_OBJECT(user->AdminCheck),"clicked",G_CALLBACK(yon_user_admin_check),widgets); @@ -256,13 +260,14 @@ void yon_user_init(main_window *widgets){ else { gtk_entry_set_text(GTK_ENTRY(user->LoginEntry),"superadmin"); } + user->changed=1; if (!yon_char_is_empty(default_passwd)) gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),default_passwd); - if (!yon_char_is_empty(def_usr)&& !strcmp(def_usr,default_user)){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),!strcmp(addadm,"yes")); - } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),strcmp(addadm,"yes")); - } + // if (!yon_char_is_empty(def_usr)&& !strcmp(def_usr,default_user)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); + // } else { + // gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),strcmp(addadm,"yes")); + // } } } for (int i=0;iLoginEntry),login); + user->old_login = yon_char_new(login); if (parsed_size>0) gtk_entry_set_text(GTK_ENTRY(user->UsernameEntry),parsed[0]); - if (parsed_size>1){ - if (!yon_char_is_empty(parsed[1])){ - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); - } - } if (parsed_size>5&&!yon_char_is_empty(parsed[5])){ - if (strcmp(parsed[5],default_passwd)&&parsed[5]){ + if (strcmp(parsed[5],default_passwd)){ gtk_entry_set_text(GTK_ENTRY(user->PasswordEntry),parsed[5]); gtk_combo_box_set_active(GTK_COMBO_BOX(user->PasswordCombo),1); } else { @@ -297,6 +298,15 @@ void yon_user_init(main_window *widgets){ gtk_combo_box_set_active(GTK_COMBO_BOX(user->PasswordCombo),0); } } + if (parsed_size>1){ + if (!yon_char_is_empty(parsed[1])){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),1); + } + } else if (!strcmp(login,default_user)){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),!strcmp(addadm,"yes")); + } else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user->AdminCheck),strcmp(addadm,"yes")); + } gtk_widget_show(user->MainBox); } } \ No newline at end of file diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 53974d1..00b4d86 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -973,6 +973,7 @@ typedef struct GtkWidget *PasswordButton; GtkWidget *AdminCheck; int changed; + char *old_login; } yon_user_struct; typedef struct