netdomjoin-gui: make sure to grey out change fields when not running as root.
authorGünther Deschner <gd@samba.org>
Tue, 14 Apr 2009 20:39:36 +0000 (22:39 +0200)
committerGünther Deschner <gd@samba.org>
Tue, 14 Apr 2009 21:08:22 +0000 (23:08 +0200)
Guenther
(cherry picked from commit ca3de0103b545c86c8507dfc7d042f1838d5dfb2)
(cherry picked from commit cb96e70a1d9112d9e4fff1fda4cf64abc7985347)

source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c

index 40a6e415ebf212010358ec764e10cc000e60713f..8164b7456b368efe76246d7df4f04c9449a5881d 100644 (file)
@@ -78,6 +78,7 @@ typedef struct join_state {
        gboolean hostname_changed;
        uint32_t stored_num_ous;
        char *target_hostname;
+       uid_t uid;
 } join_state;
 
 static void debug(const char *format, ...)
@@ -1440,6 +1441,10 @@ static int draw_main_window(struct join_state *state)
                /* Entry */
                entry = gtk_entry_new();
                gtk_entry_set_max_length(GTK_ENTRY(entry), 256);
+
+               if (state->uid != 0) {
+                       gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE);
+               }
                g_signal_connect(G_OBJECT(entry), "changed",
                                 G_CALLBACK(callback_enter_computer_description_and_unlock),
                                 state);
@@ -1526,6 +1531,9 @@ static int draw_main_window(struct join_state *state)
                         G_CALLBACK(callback_do_change),
                         (gpointer)state);
        gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0);
+       if (state->uid != 0) {
+               gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
+       }
        gtk_widget_show(button);
 
        /* Label (hidden) */
@@ -1533,6 +1541,11 @@ static int draw_main_window(struct join_state *state)
        gtk_label_set_line_wrap(GTK_LABEL(state->label_reboot), TRUE);
        gtk_misc_set_alignment(GTK_MISC(state->label_reboot), 0, 0);
        gtk_box_pack_start(GTK_BOX(vbox), state->label_reboot, TRUE, TRUE, 0);
+       if (state->uid != 0) {
+               gtk_label_set_text(GTK_LABEL(state->label_reboot),
+                          "You cannot change computer description as you're not running with root permissions");
+       }
+
        gtk_widget_show(state->label_reboot);
 
 #if 0
@@ -1763,6 +1776,8 @@ static int initialize_join_state(struct join_state *state,
                return -1;
        }
 
+       state->uid = geteuid();
+
        state->ctx = ctx;
 
        return 0;