diff --git a/src/gui/PasswordWidget.cpp b/src/gui/PasswordWidget.cpp index 2568ff67b..5bea94db5 100644 --- a/src/gui/PasswordWidget.cpp +++ b/src/gui/PasswordWidget.cpp @@ -20,10 +20,12 @@ #include "ui_PasswordWidget.h" #include "core/Config.h" +#include "core/Entry.h" #include "core/PasswordHealth.h" #include "gui/Font.h" #include "gui/Icons.h" #include "gui/PasswordGeneratorWidget.h" +#include "gui/entry/EditEntryWidget.h" #include "gui/osutils/OSUtils.h" #include "gui/styles/StateColorPalette.h" @@ -109,6 +111,11 @@ void PasswordWidget::setQualityVisible(bool state) m_ui->qualityProgressBar->setVisible(state); } +void PasswordWidget::setEntry(Entry* entry) +{ + m_entry = entry; +} + QString PasswordWidget::text() { return m_ui->passwordEdit->text(); @@ -270,7 +277,14 @@ void PasswordWidget::updatePasswordStrength(const QString& password) return; } - PasswordHealth health(password); + QString passwordToCheck = password; + if (m_entry) { + QString resolvedPwd = m_entry->resolvePlaceholder(passwordToCheck); + if (!resolvedPwd.isEmpty()) { + passwordToCheck = resolvedPwd; + } + } + PasswordHealth health(passwordToCheck); m_ui->qualityProgressBar->setValue(std::min(int(health.entropy()), m_ui->qualityProgressBar->maximum())); diff --git a/src/gui/PasswordWidget.h b/src/gui/PasswordWidget.h index 6049d2908..c234f6135 100644 --- a/src/gui/PasswordWidget.h +++ b/src/gui/PasswordWidget.h @@ -24,6 +24,8 @@ #include #include +class Entry; + namespace Ui { class PasswordWidget; @@ -40,6 +42,7 @@ public: void enablePasswordGenerator(); void setRepeatPartner(PasswordWidget* repeatPartner); void setQualityVisible(bool state); + void setEntry(Entry* entry); bool isPasswordVisible() const; QString text(); @@ -77,6 +80,7 @@ private: QPointer m_capslockAction; QPointer m_repeatPasswordWidget; QPointer m_parentPasswordWidget; + QPointer m_entry; bool m_capslockState = false; }; diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 4c98b099b..49feb7455 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -1005,6 +1005,7 @@ void EditEntryWidget::setForms(Entry* entry, bool restore) m_mainUi->titleEdit->setText(entry->title()); m_mainUi->usernameComboBox->lineEdit()->setText(entry->username()); + m_mainUi->passwordEdit->setEntry(entry); m_mainUi->urlEdit->setText(entry->url()); m_mainUi->passwordEdit->setText(entry->password()); m_mainUi->passwordEdit->setShowPassword(!config()->get(Config::Security_PasswordsHidden).toBool()); @@ -1252,6 +1253,7 @@ bool EditEntryWidget::commitEntry() setPageHidden(m_historyWidget, m_history || m_entry->historyItems().count() < 1); m_advancedUi->attachmentsWidget->linkAttachments(m_entry->attachments()); + m_mainUi->passwordEdit->setEntry(m_entry); showMessage(tr("Entry updated successfully."), MessageWidget::Positive); setModified(false); // Prevent a reload due to entry modified signals