diff --git a/vpn/fortisslvpn/fortisslvpnadvanced.ui b/vpn/fortisslvpn/fortisslvpnadvanced.ui
--- a/vpn/fortisslvpn/fortisslvpnadvanced.ui
+++ b/vpn/fortisslvpn/fortisslvpnadvanced.ui
@@ -6,8 +6,8 @@
0
0
- 410
- 110
+ 400
+ 175
@@ -24,6 +24,28 @@
-
+
+
+
+ 0
+ 0
+
+
+
+ Autentication
+
+
+
-
+
+
+ Use a One-Time Password
+
+
+
+
+
+
+ -
@@ -58,7 +80,7 @@
- -
+
-
Qt::Vertical
diff --git a/vpn/fortisslvpn/fortisslvpnauth.cpp b/vpn/fortisslvpn/fortisslvpnauth.cpp
--- a/vpn/fortisslvpn/fortisslvpnauth.cpp
+++ b/vpn/fortisslvpn/fortisslvpnauth.cpp
@@ -37,9 +37,15 @@
, d_ptr(new FortisslvpnAuthDialogPrivate)
{
Q_D(FortisslvpnAuthDialog);
+
+ const NMStringMap data = d->setting->data();
+
d->ui.setupUi(this);
d->setting = setting;
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ d->ui.otpFrame->setVisible(otpFlag == NetworkManager::Setting::NotSaved);
+
KAcceleratorManager::manage(this);
}
@@ -52,13 +58,21 @@
{
Q_D(const FortisslvpnAuthDialog);
+ const NMStringMap data = d->setting->data();
NMStringMap secrets;
QVariantMap secretData;
if (!d->ui.password->text().isEmpty()) {
secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_PASSWORD), d->ui.password->text());
}
+ if (!data.value(NM_FORTISSLVPN_KEY_OTP"-flags").isEmpty()) {
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ if (otpFlag == NetworkManager::Setting::NotSaved && !d->ui.otp->text().isEmpty()) {
+ secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP), d->ui.otp->text());
+ }
+ }
+
secretData.insert("secrets", QVariant::fromValue(secrets));
return secretData;
}
diff --git a/vpn/fortisslvpn/fortisslvpnauth.ui b/vpn/fortisslvpn/fortisslvpnauth.ui
--- a/vpn/fortisslvpn/fortisslvpnauth.ui
+++ b/vpn/fortisslvpn/fortisslvpnauth.ui
@@ -34,6 +34,38 @@
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
-
+
+
+ One Time Password
+
+
+
+ -
+
+
+ Token:
+
+
+
+ -
+
+
+
+
+
diff --git a/vpn/fortisslvpn/fortisslvpnwidget.cpp b/vpn/fortisslvpn/fortisslvpnwidget.cpp
--- a/vpn/fortisslvpn/fortisslvpnwidget.cpp
+++ b/vpn/fortisslvpn/fortisslvpnwidget.cpp
@@ -128,6 +128,12 @@
d->advUi.trustedCert->setText(trustedCert);
}
+ if (!data.value(NM_FORTISSLVPN_KEY_OTP"-flags").isEmpty()) {
+ const NetworkManager::Setting::SecretFlags otpFlag = static_cast(data.value(NM_FORTISSLVPN_KEY_OTP"-flags").toInt());
+ if (otpFlag & NetworkManager::Setting::NotSaved) {
+ d->advUi.otp->setChecked(true);
+ }
+ }
loadSecrets(setting);
}
@@ -191,6 +197,10 @@
data.insert(NM_FORTISSLVPN_KEY_TRUSTED_CERT, d->advUi.trustedCert->text());
}
+ if (d->advUi.otp->isChecked()) {
+ data.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP"-flags"), QString::number(NetworkManager::Setting::NotSaved));
+ }
+
setting.setData(data);
setting.setSecrets(secrets);
diff --git a/vpn/fortisslvpn/nm-fortisslvpn-service.h b/vpn/fortisslvpn/nm-fortisslvpn-service.h
--- a/vpn/fortisslvpn/nm-fortisslvpn-service.h
+++ b/vpn/fortisslvpn/nm-fortisslvpn-service.h
@@ -32,6 +32,7 @@
#define NM_FORTISSLVPN_KEY_GATEWAY "gateway"
#define NM_FORTISSLVPN_KEY_USER "user"
#define NM_FORTISSLVPN_KEY_PASSWORD "password"
+#define NM_FORTISSLVPN_KEY_OTP "otp"
#define NM_FORTISSLVPN_KEY_CA "ca"
#define NM_FORTISSLVPN_KEY_CERT "cert"
#define NM_FORTISSLVPN_KEY_KEY "key"