Blob Blame History Raw
Index: Cinnamon-3.6.3/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js
===================================================================
--- Cinnamon-3.6.3.orig/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js
+++ Cinnamon-3.6.3/files/usr/share/cinnamon/applets/network@cinnamon.org/applet.js
@@ -73,6 +73,11 @@ function NMNetworkMenuItem() {
     this._init.apply(this, arguments);
 }
 
+function default_to_private_connections(client) {
+    let perms = client.get_permission_result (NM.ClientPermission.SETTINGS_MODIFY_SYSTEM);
+    return (perms != NM.ClientPermissionResult.YES);
+}
+
 NMNetworkMenuItem.prototype = {
     __proto__: PopupMenu.PopupBaseMenuItem.prototype,
 
@@ -732,12 +737,14 @@ NMDeviceWired.prototype = {
         let connection = new NM.SimpleConnection();
         connection._uuid = NM.utils_uuid_generate();
         connection.add_setting(new NM.SettingWired());
-        connection.add_setting(new NM.SettingConnection({
+        let setting_conn = new NM.SettingConnection({
             uuid: connection._uuid,
             id: this._autoConnectionName,
             type: NM.SETTING_WIRED_SETTING_NAME,
             autoconnect: true
-        }));
+        });
+        setting_conn.add_permission('user', GLib.get_user_name(), null);
+        connection.add_setting(setting_conn);
         return connection;
     }
 };
@@ -987,6 +994,8 @@ NMDeviceWireless.prototype = {
         this._overflowItem = null;
         this._networks = [ ];
 
+        this._client = client;
+
         // breaking the layers with this, but cannot call
         // this.connectionValid until I have a device
         this.device = device;
@@ -1525,12 +1534,27 @@ NMDeviceWireless.prototype = {
 
         let connection = new NM.SimpleConnection();
         connection.add_setting(new NM.SettingWireless());
-        connection.add_setting(new NM.SettingConnection({
+        let setting_conn = new NM.SettingConnection({
             id: name,
             autoconnect: true, // NetworkManager will know to ignore this if appropriate
             uuid: NM.utils_uuid_generate(),
             type: NM.SETTING_WIRELESS_SETTING_NAME
-        }));
+        });
+        if (default_to_private_connections(this._client)) {
+            setting_conn.add_permission('user', GLib.get_user_name(), null);
+            if (apObj.security == NMAccessPointSecurity.WPA2_PSK ||
+                apObj.security == NMAccessPointSecurity.WPA_PSK) {
+                connection.add_setting(new NM.SettingWirelessSecurity({
+                    psk_flags: NM.SettingSecretFlags.AGENT_OWNED
+                }));
+            }
+            if (apObj.security == NMAccessPointSecurity.WEP) {
+                connection.add_setting(new NM.SettingWirelessSecurity({
+                    wep_key_flags: NM.SettingSecretFlags.AGENT_OWNED
+                }));
+            }
+        }
+        connection.add_setting(setting_conn);
         return connection;
     },