File gnome-shell-private-connection.patch of Package gnome-shell

diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index e3b9a5d..3296e1d 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -940,6 +940,11 @@ const WirelessNetwork = GObject.registerClass({
                 this._getDeviceDBusPath(), ap.get_path());
         } else {
             conn = new NM.SimpleConnection();
+            if (this._IsPrivateConnections()) {
+                let connectionSetting = new NM.SettingConnection();
+                connectionSetting.add_permission('user', GLib.get_user_name(), null);
+                conn.add_setting(connectionSetting);
+            }
             this._device.client.add_and_activate_connection_async(
                 conn, this._device, ap.get_path(), null, null);
         }
@@ -949,6 +954,22 @@ const WirelessNetwork = GObject.registerClass({
         this.emit('destroy');
     }
 
+    _IsPrivateConnections() {
+        let privateConnections = true;
+        let authority = Polkit.Authority.get_sync(null);
+        let credential = new Gio.Credentials();
+        let subject = new Polkit.UnixProcess({ pid: credential.get_unix_pid(), uid: credential.get_unix_user() });
+        let authResult = authority.check_authorization_sync(subject,
+                                                            'org.freedesktop.NetworkManager.settings.modify.system',
+                                                            null /* details */,
+                                                            Polkit.CheckAuthorizationFlags.NONE,
+                                                            null /* cancellable */);
+        if (authResult)
+            privateConnections = !authResult.get_is_authorized();
+
+        return privateConnections;
+    }
+
     _getDeviceDBusPath() {
         // nm_object_get_path() is shadowed by nm_device_get_path()
         return NM.Object.prototype.get_path.call(this._device);
openSUSE Build Service is sponsored by