[gnome-system-tools] Encrypted home folder support when creating new users



commit 98e5d16b60bd6191f0f4974455f8edce728e4ff1
Author: Milan Bouchet-Valat <nalimilan club fr>
Date:   Mon Jan 25 12:42:38 2010 +0100

    Encrypted home folder support when creating new users
    
    Add a checkbox in the new user dialog to enable encrypted home, only shown when the backends report the platform supports it.

 interfaces/users.ui       |   18 +++++++++++++++++-
 src/users/user-settings.c |   13 +++++++++++--
 2 files changed, 28 insertions(+), 3 deletions(-)
---
diff --git a/interfaces/users.ui b/interfaces/users.ui
index b773a5c..e202553 100644
--- a/interfaces/users.ui
+++ b/interfaces/users.ui
@@ -2329,7 +2329,7 @@
         <child>
           <object class="GtkTable" id="table2">
             <property name="visible">True</property>
-            <property name="n_rows">4</property>
+            <property name="n_rows">5</property>
             <property name="n_columns">2</property>
             <property name="column_spacing">12</property>
             <property name="row_spacing">12</property>
@@ -2469,6 +2469,22 @@
                 <property name="bottom_attach">4</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkCheckButton" id="user_new_encrypted_home">
+                <property name="label" translatable="yes">_Encrypt home folder to protect sensitive data</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Encrypt all your files with your login password to strongly protect them from people with physical access to your computer, at the expense of a slightly reduced performance.</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="right_attach">2</property>
+                <property name="top_attach">4</property>
+                <property name="bottom_attach">5</property>
+              </packing>
+            </child>
           </object>
           <packing>
             <property name="position">1</property>
diff --git a/src/users/user-settings.c b/src/users/user-settings.c
index 2d78ea9..e7557ea 100644
--- a/src/users/user-settings.c
+++ b/src/users/user-settings.c
@@ -827,6 +827,7 @@ on_user_new (GtkButton *button, gpointer user_data)
 	GtkWidget *user_login;
 	GtkWidget *login_entry;
 	GtkWidget *notice_image;
+	GtkWidget *encrypted_home;
 	GtkTreeModel *model;
 	GtkTreePath *user_path;
 	OobsUser *user;
@@ -834,6 +835,7 @@ on_user_new (GtkButton *button, gpointer user_data)
 	GstUserProfile *profile;
 	OobsUsersConfig *users_config;
 	OobsResult result;
+	gboolean encrypt;
 
 	/* Before going further, check for authorizations, authenticating if needed */
 	if (!gst_tool_authenticate (tool, GST_USERS_TOOL (tool)->users_config))
@@ -844,6 +846,9 @@ on_user_new (GtkButton *button, gpointer user_data)
 	user_login = gst_dialog_get_widget (tool->main_dialog, "user_new_login");
 	login_entry = gtk_bin_get_child (GTK_BIN (user_login));
 	notice_image = gst_dialog_get_widget (tool->main_dialog, "user_new_notice_image");
+	encrypted_home = gst_dialog_get_widget (tool->main_dialog, "user_new_encrypted_home");
+
+	users_config = OOBS_USERS_CONFIG (GST_USERS_TOOL (tool)->users_config);
 
 	/* clear any text, colors or icon left */
 	gtk_entry_set_text (GTK_ENTRY (user_name), "");
@@ -852,6 +857,10 @@ on_user_new (GtkButton *button, gpointer user_data)
 	gtk_combo_box_set_active (GTK_COMBO_BOX (user_login), -1);
 	on_user_new_login_changed (GTK_COMBO_BOX (user_login), NULL);
 
+	/* Show the encrypt home check box if supported */
+	if (oobs_users_config_get_encrypted_home_support (users_config))
+	    gtk_widget_show (encrypted_home);
+
 	gtk_window_set_focus (GTK_WINDOW (user_new_dialog), user_name);
 
 	set_login_length (login_entry);
@@ -872,8 +881,10 @@ on_user_new (GtkButton *button, gpointer user_data)
 	   following the system configuration. */
 	login = gtk_combo_box_get_active_text (GTK_COMBO_BOX (user_login));
 	fullname = gtk_entry_get_text (GTK_ENTRY (user_name));
+	encrypt = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (encrypted_home));
 	user = oobs_user_new (login);
 	oobs_user_set_full_name (user, fullname);
+	oobs_user_set_encrypted_home (user, encrypt);
 
 	g_return_if_fail (user != NULL);
 
@@ -881,8 +892,6 @@ on_user_new (GtkButton *button, gpointer user_data)
 	profile = gst_user_profiles_get_default_profile (GST_USERS_TOOL (tool)->profiles);
 	gst_user_profiles_apply (GST_USERS_TOOL (tool)->profiles, profile, user, TRUE);
 
-	users_config = OOBS_USERS_CONFIG (GST_USERS_TOOL (tool)->users_config);
-
 	/* Commit both user and groups config because of possible memberships
 	 * added by the profile. Avoid showing the new user or trying to commit
 	 * group changes if the user has not been created. */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]