From edbf519c38df8c6ff4c7ee2770f6eebd42a1f087 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Dec 2023 16:08:08 +0600 Subject: [PATCH] User creation saving and loading fixes --- source/ubl-settings-usergroups.c | 40 +++++++++++++++++++++++++++--- ubl-settings-usergroups-user.glade | 2 +- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index 1ef953a..727ab44 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -938,7 +938,9 @@ void on_user_save(GtkWidget *self, dictionary *dict){ yon_config_register(USERADD(login),"users",final_user); yon_config_register(USERSHADOW(login),"users",shadow_string); GtkTreeIter iter; - gtk_list_store_append(widgets->UsersList,&iter); + GtkTreeModel *model = GTK_TREE_MODEL(widgets->UsersList); + if (!gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UsersTree)),&model,&iter)) + gtk_list_store_append(widgets->UsersList,&iter); gtk_list_store_set(widgets->UsersList,&iter,1,yon_char_return_if_exist(uid_string,""),2,yon_char_return_if_exist(login,""),3,yon_char_return_if_exist(username,""),4,yon_char_return_if_exist(main_group,""),5,yon_char_return_if_exist(additional_groups,""),6,yon_char_unite(yon_char_return_if_exist(user_home,""),yon_char_return_if_exist(user_shell,""),yon_char_return_if_exist(create_system_user,""),yon_char_return_if_exist(create_ununique,""),yon_char_return_if_exist(do_not_check,""),NULL),7,yon_char_return_if_exist(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->userPasswordCombo)),""),-1); on_subwindow_close(self); } @@ -1070,11 +1072,13 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ for (int i=0;iuserHomeEntry),parameters_substring[i+1]); + gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2); i++; } else if (!strcmp(parameters_substring[i],"--shell")||!strcmp(parameters_substring[i],"-s")){ int active = yon_gtk_combo_box_text_find(window->userShellCombo,parameters_substring[i+1]); if (!active){ gtk_entry_set_text(GTK_ENTRY(window->userShellEntry),parameters_substring[i+1]); + gtk_combo_box_set_active_id(GTK_COMBO_BOX(window->userShellCombo),"Set"); } i++; @@ -1084,6 +1088,8 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->userHomeCombo),2); }else if (!strcmp(parameters_substring[i],"--no-user-group")||!strcmp(parameters_substring[i],"-N")){ // gtk + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),0); + gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry),""); }else if (!strcmp(parameters_substring[i],"--non-unique")||!strcmp(parameters_substring[i],"-o")){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userCreateUnuniqueCheck),1); }else if (!strcmp(parameters_substring[i],"--badnames")){ @@ -1187,8 +1193,35 @@ void on_main_delete(GtkWidget *self, main_window *widgets){ } } -void on_config_update(){ - +void on_config_update(GtkWidget *self, main_window *widgets){ + yon_config_load_register(main_config.load_mode==1?YON_CONFIG_LOCAL:YON_CONFIG_GLOBAL,"users","DEFAULTPASSWD DEFAULTROOTPASSWD DEFAULTUSER HASHPASSWD USERGROUPS ADDADM USERADD[*] USERSHADOW[*] GROUPADD[*]",NULL); + GtkTreeIter iter; + int size; + config_str users = yon_config_get_all_by_key("USERADD",&size); + for (int i=0;iUsersList),&iter); + for (;valid;valid=gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->UsersList),&iter)){ + char *name; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->UsersList),&iter,2,&name,-1); + if (!strcmp(name,login)){ + int parsed_size; + config_str parsed = yon_char_parse(value,&parsed_size,":"); + gtk_list_store_set(widgets->UsersList,&iter, + 1,parsed_size>1?parsed[1]:"", + 3,parsed_size>0?parsed[0]:"", + 4,parsed_size>2?parsed[2]:"", + 5,parsed_size>3?parsed[3]:"", + 6,parsed_size>4?parsed[4]:"", + 7,parsed_size>5?!strcmp(parsed[5],"x")||!strcmp(parsed[5],"")?DEFAULT_USER_LABEL:SET_PASSWORD_LABEL:NO_PASSWORD_LABEL, + -1); + } + } + } } @@ -1304,6 +1337,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->button3),"clicked",G_CALLBACK(on_standard_groups_open),widgets); g_signal_connect(G_OBJECT(widgets->button2),"clicked",G_CALLBACK(on_ubl_settings_usergroups_additional_settings_open),widgets); g_signal_connect(G_OBJECT(widgets->button1),"clicked",G_CALLBACK(on_settings_usergroups_system_open),widgets); + g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_config_update),widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),widgets); diff --git a/ubl-settings-usergroups-user.glade b/ubl-settings-usergroups-user.glade index 519ac3b..d816604 100644 --- a/ubl-settings-usergroups-user.glade +++ b/ubl-settings-usergroups-user.glade @@ -763,7 +763,7 @@ /usr/bin/nologin /usr/bin/git-shell /usr/bin/zsh - Set + Set