Blob Blame History Raw
--- a/libs/internals/setting.cpp
+++ b/libs/internals/setting.cpp
@@ -179,7 +179,7 @@
     return false;
 }
 
-QStringList Setting::needSecrets() const
+QStringList Setting::needSecrets(const bool /*requestNew*/) const
 {
     return QStringList();
 }
--- a/libs/internals/setting.h
+++ b/libs/internals/setting.h
@@ -48,7 +48,7 @@
     virtual bool hasVolatileSecrets() const { return false; }
     virtual QMap<QString,QString> secretsToMap() const;
     virtual void secretsFromMap(QMap<QString,QString>);
-    virtual QStringList needSecrets() const;
+    virtual QStringList needSecrets(const bool requestNew = false) const;
     virtual bool hasPersistentSecrets() const;
     bool secretsAvailable() const;
     void setSecretsAvailable(bool secretsAvailable);
--- a/libs/internals/settings/802-11-wireless-security.cpp
+++ b/libs/internals/settings/802-11-wireless-security.cpp
@@ -111,7 +111,7 @@
     setSecretsAvailable(secretsAvailable);
 }
 
-QStringList WirelessSecuritySetting::needSecrets() const
+QStringList WirelessSecuritySetting::needSecrets(const bool requestNew) const
 {
     QStringList list;
     switch (securityType())
@@ -124,19 +124,19 @@
                 switch (weptxkeyindex())
                 {
                     case 0:
-                        if (wepkey0().isEmpty())
+                        if ((wepkey0().isEmpty() || requestNew))
                             list.append("wepkey0");
                         break;
                     case 1:
-                        if (wepkey1().isEmpty())
+                        if ((wepkey1().isEmpty() || requestNew))
                             list.append("wepkey1");
                         break;
                     case 2:
-                        if (wepkey2().isEmpty())
+                        if ((wepkey2().isEmpty() || requestNew))
                             list.append("wepkey2");
                         break;
                     case 3:
-                        if (wepkey3().isEmpty())
+                        if ((wepkey3().isEmpty() || requestNew))
                             list.append("wepkey3");
                         break;
                 }
@@ -145,11 +145,11 @@
             break;
         case WirelessSecuritySetting::EnumSecurityType::WpaPsk:
         case WirelessSecuritySetting::EnumSecurityType::Wpa2Psk:
-            if (psk().isEmpty() && !pskflags().testFlag(Setting::NotRequired))
+            if ((psk().isEmpty() || requestNew) && !pskflags().testFlag(Setting::NotRequired))
                 list.append("psk");
             break;
         case WirelessSecuritySetting::EnumSecurityType::Leap:
-            if (leappassword().isEmpty() && !leappasswordflags().testFlag(Setting::NotRequired))
+            if ((leappassword().isEmpty() || requestNew) && !leappasswordflags().testFlag(Setting::NotRequired))
                 list.append("leappassword");
             break;
     }
--- a/libs/internals/settings/802-11-wireless-security.h
+++ b/libs/internals/settings/802-11-wireless-security.h
@@ -41,7 +41,7 @@
 
     QMap<QString,QString> secretsToMap() const;
     void secretsFromMap(QMap<QString,QString> secrets);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**
--- a/libs/internals/settings/802-1x.cpp
+++ b/libs/internals/settings/802-1x.cpp
@@ -88,18 +88,18 @@
     setPhase2privatekeypassword(secrets.value("phase2-private-key-password"));
 }
 
-QStringList Security8021xSetting::needSecrets() const
+QStringList Security8021xSetting::needSecrets(const bool requestNew) const
 {
     QStringList list;
     if (enabled()) {
         Security8021xSetting::EapMethods eap = eapFlags();
-        if (eap.testFlag(Security8021xSetting::tls) && privatekeypassword().isEmpty() && !privatekeypasswordflags().testFlag(Setting::NotRequired)) {
+        if (eap.testFlag(Security8021xSetting::tls) && (privatekeypassword().isEmpty() || requestNew) && !privatekeypasswordflags().testFlag(Setting::NotRequired)) {
             list.append("private-key-password");
         } else if ((eap.testFlag(Security8021xSetting::peap) || eap.testFlag(Security8021xSetting::ttls) || eap.testFlag(Security8021xSetting::leap))
-            && password().isEmpty() && !passwordflags().testFlag(Setting::NotRequired)) {
+            && (password().isEmpty() || requestNew) && !passwordflags().testFlag(Setting::NotRequired)) {
             list.append("password");
         }
-        if ((phase2auth() == EnumPhase2auth::tls || phase2autheap() == EnumPhase2autheap::tls) && phase2privatekeypassword().isEmpty()
+        if ((phase2auth() == EnumPhase2auth::tls || phase2autheap() == EnumPhase2autheap::tls) && (phase2privatekeypassword().isEmpty() || requestNew)
             && !phase2privatekeypasswordflags().testFlag(Setting::NotRequired)) {
             list.append("phase2-private-key-password");
         }
--- a/libs/internals/settings/802-1x.h
+++ b/libs/internals/settings/802-1x.h
@@ -43,7 +43,7 @@
 
     QMap<QString,QString> secretsToMap() const;
     void secretsFromMap(QMap<QString,QString> secrets);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**
--- a/libs/internals/settings/cdma.cpp
+++ b/libs/internals/settings/cdma.cpp
@@ -40,10 +40,10 @@
     setPassword(secrets.value("password"));
 }
 
-QStringList CdmaSetting::needSecrets() const
+QStringList CdmaSetting::needSecrets(const bool requestNew) const
 {
     QStringList list;
-    if (password().isEmpty() && !passwordflags().testFlag(Setting::NotRequired))
+    if ((password().isEmpty() || requestNew) && !passwordflags().testFlag(Setting::NotRequired))
         list.append("password");
     return list;
 }
--- a/libs/internals/settings/cdma.h
+++ b/libs/internals/settings/cdma.h
@@ -22,7 +22,7 @@
 
     QMap<QString,QString> secretsToMap() const;
     void secretsFromMap(QMap<QString,QString> secrets);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**
--- a/libs/internals/settings/gsm.cpp
+++ b/libs/internals/settings/gsm.cpp
@@ -51,12 +51,12 @@
     setPin(secrets.value("pin"));
 }
 
-QStringList GsmSetting::needSecrets() const
+QStringList GsmSetting::needSecrets(const bool requestNew) const
 {
     QStringList list;
-    if (password().isEmpty() && !passwordflags().testFlag(Setting::NotRequired))
+    if ((password().isEmpty() || requestNew) && !passwordflags().testFlag(Setting::NotRequired))
         list.append("password");
-    if (pin().isEmpty() && !pinflags().testFlag(Setting::NotRequired))
+    if ((pin().isEmpty() || requestNew) && !pinflags().testFlag(Setting::NotRequired))
         list.append("pin");
     return list;
 }
--- a/libs/internals/settings/gsm.h
+++ b/libs/internals/settings/gsm.h
@@ -22,7 +22,7 @@
 
     QMap<QString,QString> secretsToMap() const;
     void secretsFromMap(QMap<QString,QString> secrets);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**
--- a/libs/internals/settings/pppoe.cpp
+++ b/libs/internals/settings/pppoe.cpp
@@ -40,10 +40,10 @@
     setPassword(secrets.value("password"));
 }
 
-QStringList PppoeSetting::needSecrets() const
+QStringList PppoeSetting::needSecrets(const bool requestNew) const
 {
     QStringList list;
-    if (password().isEmpty() && !passwordflags().testFlag(Setting::NotRequired))
+    if ((password().isEmpty() || requestNew) && !passwordflags().testFlag(Setting::NotRequired))
         list.append("password");
     return list;
 }
--- a/libs/internals/settings/pppoe.h
+++ b/libs/internals/settings/pppoe.h
@@ -22,7 +22,7 @@
 
     QMap<QString,QString> secretsToMap() const;
     void secretsFromMap(QMap<QString,QString> secrets);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**
--- a/libs/internals/settings/vpn.cpp
+++ b/libs/internals/settings/vpn.cpp
@@ -122,7 +122,7 @@
     setSecretsAvailable(true);
 }
 
-QStringList VpnSetting::needSecrets() const
+QStringList VpnSetting::needSecrets(const bool /*requestNew*/) const
 {
     // VPN is a bit different from other connection types. We do not need to list the secrets we need,
     // but this list cannot be empty or SecretStorage will not ask for the secrets.
--- a/libs/internals/settings/vpn.h
+++ b/libs/internals/settings/vpn.h
@@ -28,7 +28,7 @@
     static QVariantMap variantMapFromStringList(const QStringList & list);
     static QStringMap stringMapFromStringList(const QStringList & list);
     static QStringList stringMapToStringList(const QStringMap & map);
-    QStringList needSecrets() const;
+    QStringList needSecrets(const bool requestNew = false) const;
     bool hasPersistentSecrets() const;
 
     /**