diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp index 9eecc63f9..e212fc6b4 100644 --- a/src/browser/BrowserOptionDialog.cpp +++ b/src/browser/BrowserOptionDialog.cpp @@ -120,6 +120,7 @@ void BrowserOptionDialog::loadSettings() m_ui->useCustomProxy->setChecked(settings->useCustomProxy()); m_ui->customProxyLocation->setText(settings->customProxyLocation()); m_ui->updateBinaryPath->setChecked(settings->updateBinaryPath()); + m_ui->allowExpiredCredentials->setChecked(settings->allowExpiredCredentials()); m_ui->chromeSupport->setChecked(settings->chromeSupport()); m_ui->chromiumSupport->setChecked(settings->chromiumSupport()); m_ui->firefoxSupport->setChecked(settings->firefoxSupport()); @@ -176,6 +177,7 @@ void BrowserOptionDialog::saveSettings() settings->setCustomProxyLocation(m_ui->customProxyLocation->text()); settings->setUpdateBinaryPath(m_ui->updateBinaryPath->isChecked()); + settings->setAllowExpiredCredentials(m_ui->allowExpiredCredentials->isChecked()); settings->setAlwaysAllowAccess(m_ui->alwaysAllowAccess->isChecked()); settings->setAlwaysAllowUpdate(m_ui->alwaysAllowUpdate->isChecked()); settings->setHttpAuthPermission(m_ui->httpAuthPermission->isChecked()); diff --git a/src/browser/BrowserOptionDialog.ui b/src/browser/BrowserOptionDialog.ui index 50fd9d205..0229649f1 100755 --- a/src/browser/BrowserOptionDialog.ui +++ b/src/browser/BrowserOptionDialog.ui @@ -219,6 +219,16 @@ + + + + Returns expired credentials. String [expired] is added to the title. + + + &Allow returning expired credentials. + + + diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index 112a7cda9..2ab7682e0 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -818,6 +818,10 @@ QJsonObject BrowserService::prepareEntry(const Entry* entry) res["totp"] = entry->totp(); } + if (entry->isExpired()) { + res["expired"] = "true"; + } + if (browserSettings()->supportKphFields()) { const EntryAttributes* attr = entry->attributes(); QJsonArray stringFields; @@ -841,7 +845,7 @@ BrowserService::checkAccess(const Entry* entry, const QString& host, const QStri return Unknown; } if (entry->isExpired()) { - return Denied; + return browserSettings()->allowExpiredCredentials() ? Allowed : Denied; } if ((config.isAllowed(host)) && (submitHost.isEmpty() || config.isAllowed(submitHost))) { return Allowed; diff --git a/src/browser/BrowserSettings.cpp b/src/browser/BrowserSettings.cpp index dd74dc1cb..f44c5e802 100644 --- a/src/browser/BrowserSettings.cpp +++ b/src/browser/BrowserSettings.cpp @@ -194,6 +194,16 @@ void BrowserSettings::setUpdateBinaryPath(bool enabled) config()->set("Browser/UpdateBinaryPath", enabled); } +bool BrowserSettings::allowExpiredCredentials() +{ + return config()->get("Browser/AllowExpiredCredentials", false).toBool(); +} + +void BrowserSettings::setAllowExpiredCredentials(bool enabled) +{ + config()->set("Browser/AllowExpiredCredentials", enabled); +} + bool BrowserSettings::chromeSupport() { return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::CHROME); diff --git a/src/browser/BrowserSettings.h b/src/browser/BrowserSettings.h index ba74ff53e..b47e92866 100644 --- a/src/browser/BrowserSettings.h +++ b/src/browser/BrowserSettings.h @@ -64,6 +64,8 @@ public: void setCustomProxyLocation(const QString& location); bool updateBinaryPath(); void setUpdateBinaryPath(bool enabled); + bool allowExpiredCredentials(); + void setAllowExpiredCredentials(bool enabled); bool chromeSupport(); void setChromeSupport(bool enabled); bool chromiumSupport();