@@ -1356,21 +1356,10 @@ void OptionsDialog::loadWebUITabOptions()
13561356
13571357 // API Key
13581358 if (const QString apiKey = pref->getWebUIApiKey (); Utils::APIKey::isValid (apiKey))
1359- {
13601359 m_currentAPIKey = apiKey;
1361- m_ui->textWebUIAPIKey ->setText (maskAPIKey (m_currentAPIKey));
1362- m_ui->textWebUIAPIKey ->setEnabled (true );
1363- m_ui->btnWebUIAPIKeyCopy ->setEnabled (true );
1364- m_ui->btnWebUIAPIKeyRotate ->setToolTip (tr (" Rotate API key" ));
1365- }
13661360 else
1367- {
13681361 m_currentAPIKey.clear ();
1369- m_ui->textWebUIAPIKey ->clear ();
1370- m_ui->textWebUIAPIKey ->setEnabled (false );
1371- m_ui->btnWebUIAPIKeyCopy ->setEnabled (false );
1372- m_ui->btnWebUIAPIKeyRotate ->setToolTip (tr (" Generate API key" ));
1373- }
1362+ setupWebUIAPIKey ();
13741363
13751364 m_ui->checkBypassLocalAuth ->setChecked (!pref->isWebUILocalAuthEnabled ());
13761365 m_ui->checkBypassAuthSubnetWhitelist ->setChecked (pref->isWebUIAuthSubnetWhitelistEnabled ());
@@ -1412,8 +1401,9 @@ void OptionsDialog::loadWebUITabOptions()
14121401
14131402 connect (m_ui->textWebUIUsername , &QLineEdit::textChanged, this , &ThisType::enableApplyButton);
14141403 connect (m_ui->textWebUIPassword , &QLineEdit::textChanged, this , &ThisType::enableApplyButton);
1415- connect (m_ui->btnWebUIAPIKeyCopy , &QPushButton::clicked, this , &ThisType::onBtnWebUIAPIKeyCopy);
1416- connect (m_ui->btnWebUIAPIKeyRotate , &QPushButton::clicked, this , &ThisType::onBtnWebUIAPIKeyRotate);
1404+ connect (m_ui->btnWebUIAPIKeyCopy , &QPushButton::clicked, this , &ThisType::onBtnWebUIAPIKeyCopyClicked);
1405+ connect (m_ui->btnWebUIAPIKeyRotate , &QPushButton::clicked, this , &ThisType::onBtnWebUIAPIKeyRotateClicked);
1406+ connect (m_ui->btnWebUIAPIKeyDelete , &QPushButton::clicked, this , &ThisType::onBtnWebUIAPIKeyDeleteClicked);
14171407
14181408 connect (m_ui->checkBypassLocalAuth , &QAbstractButton::toggled, this , &ThisType::enableApplyButton);
14191409 connect (m_ui->checkBypassAuthSubnetWhitelist , &QAbstractButton::toggled, this , &ThisType::enableApplyButton);
@@ -1490,13 +1480,13 @@ void OptionsDialog::saveWebUITabOptions() const
14901480 pref->setDynDNSPassword (m_ui->DNSPasswordTxt ->text ());
14911481}
14921482
1493- void OptionsDialog::onBtnWebUIAPIKeyCopy ()
1483+ void OptionsDialog::onBtnWebUIAPIKeyCopyClicked ()
14941484{
14951485 if (!m_currentAPIKey.isEmpty ())
14961486 QApplication::clipboard ()->setText (m_currentAPIKey);
14971487}
14981488
1499- void OptionsDialog::onBtnWebUIAPIKeyRotate ()
1489+ void OptionsDialog::onBtnWebUIAPIKeyRotateClicked ()
15001490{
15011491 const QString title = m_currentAPIKey.isEmpty ()
15021492 ? tr (" Generate API key" )
@@ -1511,16 +1501,51 @@ void OptionsDialog::onBtnWebUIAPIKeyRotate()
15111501 if (button == QMessageBox::Yes)
15121502 {
15131503 m_currentAPIKey = Utils::APIKey::generate ();
1514- m_ui->textWebUIAPIKey ->setText (maskAPIKey (m_currentAPIKey));
1515- m_ui->textWebUIAPIKey ->setEnabled (true );
1516- m_ui->btnWebUIAPIKeyCopy ->setEnabled (true );
1517- m_ui->btnWebUIAPIKeyRotate ->setToolTip (tr (" Rotate API key" ));
1504+ setupWebUIAPIKey ();
1505+
1506+ auto *preferences = Preferences::instance ();
1507+ preferences->setWebUIApiKey (m_currentAPIKey);
1508+ preferences->apply ();
1509+ }
1510+ }
1511+
1512+ void OptionsDialog::onBtnWebUIAPIKeyDeleteClicked ()
1513+ {
1514+ const QString title = tr (" Delete API key" );
1515+ const QString message = tr (" Delete this API key? The current key will immediately stop working." );
1516+ const QMessageBox::StandardButton button = QMessageBox::question (
1517+ this , title, message, (QMessageBox::Yes | QMessageBox::No), QMessageBox::No);
1518+
1519+ if (button == QMessageBox::Yes)
1520+ {
1521+ m_currentAPIKey.clear ();
1522+ setupWebUIAPIKey ();
15181523
15191524 auto *preferences = Preferences::instance ();
15201525 preferences->setWebUIApiKey (m_currentAPIKey);
15211526 preferences->apply ();
15221527 }
15231528}
1529+
1530+ void OptionsDialog::setupWebUIAPIKey ()
1531+ {
1532+ if (Utils::APIKey::isValid (m_currentAPIKey))
1533+ {
1534+ m_ui->textWebUIAPIKey ->setText (maskAPIKey (m_currentAPIKey));
1535+ m_ui->textWebUIAPIKey ->setEnabled (true );
1536+ m_ui->btnWebUIAPIKeyCopy ->setEnabled (true );
1537+ m_ui->btnWebUIAPIKeyRotate ->setToolTip (tr (" Rotate API key" ));
1538+ m_ui->btnWebUIAPIKeyDelete ->setEnabled (true );
1539+ }
1540+ else
1541+ {
1542+ m_ui->textWebUIAPIKey ->clear ();
1543+ m_ui->textWebUIAPIKey ->setEnabled (false );
1544+ m_ui->btnWebUIAPIKeyCopy ->setEnabled (false );
1545+ m_ui->btnWebUIAPIKeyRotate ->setToolTip (tr (" Generate API key" ));
1546+ m_ui->btnWebUIAPIKeyDelete ->setEnabled (false );
1547+ }
1548+ }
15241549#endif // DISABLE_WEBUI
15251550
15261551void OptionsDialog::initializeLanguageCombo ()
0 commit comments