File indexing completed on 2024-04-28 16:52:46

0001 /*
0002     SPDX-FileCopyrightText: 2016 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "fortisslvpnauth.h"
0008 #include "ui_fortisslvpnauth.h"
0009 
0010 #include "nm-fortisslvpn-service.h"
0011 
0012 #include <QString>
0013 
0014 class FortisslvpnAuthDialogPrivate
0015 {
0016 public:
0017     Ui_FortisslvpnAuth ui;
0018     NetworkManager::VpnSetting::Ptr setting;
0019 };
0020 
0021 FortisslvpnAuthDialog::FortisslvpnAuthDialog(const NetworkManager::VpnSetting::Ptr &setting, const QStringList &hints, QWidget *parent)
0022     : SettingWidget(setting, hints, parent)
0023     , d_ptr(new FortisslvpnAuthDialogPrivate)
0024 {
0025     Q_D(FortisslvpnAuthDialog);
0026 
0027     d->ui.setupUi(this);
0028     d->setting = setting;
0029 
0030     const NMStringMap data = d->setting->data();
0031 
0032     const NetworkManager::Setting::SecretFlags otpFlag = static_cast<NetworkManager::Setting::SecretFlags>(data.value(NM_FORTISSLVPN_KEY_OTP "-flags").toInt());
0033     d->ui.otpFrame->setVisible(otpFlag == NetworkManager::Setting::NotSaved);
0034 
0035     const NetworkManager::Setting::SecretFlags passwordFlag =
0036         static_cast<NetworkManager::Setting::SecretFlags>(data.value(NM_FORTISSLVPN_KEY_PASSWORD "-flags").toInt());
0037     d->ui.passwordFrame->setVisible(passwordFlag == NetworkManager::Setting::NotSaved);
0038 
0039     if (m_hints.count() == 2) {
0040         const QString hint = m_hints.at(0);
0041         const QString hintMsg = m_hints.at(1);
0042         d->ui.otpLabel->setText(hint);
0043         d->ui.labelOtp->setText(hintMsg.section(":", -2));
0044         d->ui.otpFrame->setVisible(true);
0045         d->ui.passwordFrame->setVisible(false);
0046     }
0047 
0048     KAcceleratorManager::manage(this);
0049 }
0050 
0051 FortisslvpnAuthDialog::~FortisslvpnAuthDialog()
0052 {
0053     delete d_ptr;
0054 }
0055 
0056 QVariantMap FortisslvpnAuthDialog::setting() const
0057 {
0058     Q_D(const FortisslvpnAuthDialog);
0059 
0060     const NMStringMap data = d->setting->data();
0061     NMStringMap secrets;
0062     QVariantMap secretData;
0063 
0064     if (!d->ui.password->text().isEmpty()) {
0065         secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_PASSWORD), d->ui.password->text());
0066     }
0067 
0068     if (!data.value(NM_FORTISSLVPN_KEY_OTP "-flags").isEmpty()) {
0069         const NetworkManager::Setting::SecretFlags otpFlag =
0070             static_cast<NetworkManager::Setting::SecretFlags>(data.value(NM_FORTISSLVPN_KEY_OTP "-flags").toInt());
0071         if (otpFlag == NetworkManager::Setting::NotSaved && !d->ui.otp->text().isEmpty()) {
0072             secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_OTP), d->ui.otp->text());
0073         }
0074     }
0075 
0076     if (!data.value(NM_FORTISSLVPN_KEY_2FA "-flags").isEmpty()) {
0077         secrets.insert(QLatin1String(NM_FORTISSLVPN_KEY_2FA), d->ui.otp->text());
0078     }
0079 
0080     secretData.insert("secrets", QVariant::fromValue<NMStringMap>(secrets));
0081     return secretData;
0082 }