diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index e022cfee3..9c831227d 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -569,6 +569,10 @@ Skip confirmation for main window Auto-Type actions + + Auto-generate password for new entries + + recent files diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 51b325658..e06619ff2 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -69,6 +69,7 @@ static const QHash configStrings = { {Config::OpenURLOnDoubleClick, {QS("OpenURLOnDoubleClick"), Roaming, true}}, {Config::HideWindowOnCopy,{QS("HideWindowOnCopy"), Roaming, false}}, {Config::MinimizeOnCopy,{QS("MinimizeOnCopy"), Roaming, true}}, + {Config::AutoGeneratePasswordForNewEntries,{QS("AutoGeneratePasswordForNewEntries"), Roaming, false}}, {Config::MinimizeAfterUnlock,{QS("MinimizeAfterUnlock"), Roaming, false}}, {Config::DropToBackgroundOnCopy,{QS("DropToBackgroundOnCopy"), Roaming, false}}, {Config::UseGroupIconOnEntryCreation,{QS("UseGroupIconOnEntryCreation"), Roaming, true}}, diff --git a/src/core/Config.h b/src/core/Config.h index 62071b380..b8b737594 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -52,6 +52,7 @@ public: HideWindowOnCopy, MinimizeOnCopy, MinimizeAfterUnlock, + AutoGeneratePasswordForNewEntries, DropToBackgroundOnCopy, UseGroupIconOnEntryCreation, AutoTypeEntryTitleMatch, diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index 430309ca7..5a2014eaa 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -212,6 +212,8 @@ void ApplicationSettingsWidget::loadSettings() !config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool()); m_generalUi->EnableCopyOnDoubleClickCheckBox->setChecked( config()->get(Config::Security_EnableCopyOnDoubleClick).toBool()); + m_generalUi->autoGeneratePasswordForNewEntriesCheckBox->setChecked( + config()->get(Config::AutoGeneratePasswordForNewEntries).toBool()); m_generalUi->languageComboBox->clear(); QList> languages = Translator::availableLanguages(); @@ -392,6 +394,8 @@ void ApplicationSettingsWidget::saveSettings() config()->set(Config::Security_NoConfirmMoveEntryToRecycleBin, !m_generalUi->ConfirmMoveEntryToRecycleBinCheckBox->isChecked()); config()->set(Config::Security_EnableCopyOnDoubleClick, m_generalUi->EnableCopyOnDoubleClickCheckBox->isChecked()); + config()->set(Config::AutoGeneratePasswordForNewEntries, + m_generalUi->autoGeneratePasswordForNewEntriesCheckBox->isChecked()); auto language = m_generalUi->languageComboBox->currentData().toString(); if (config()->get(Config::GUI_Language) != language) { diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui index 5a9c76a6b..f2b54b47b 100644 --- a/src/gui/ApplicationSettingsWidgetGeneral.ui +++ b/src/gui/ApplicationSettingsWidgetGeneral.ui @@ -539,6 +539,13 @@ + + + + Auto-generate password for new entries + + + diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 4eb12820f..3074d5818 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -38,6 +38,7 @@ #include "core/EntryAttributes.h" #include "core/Group.h" #include "core/Metadata.h" +#include "core/PasswordGenerator.h" #include "core/TimeDelta.h" #ifdef WITH_XC_SSHAGENT #include "sshagent/OpenSSHKey.h" @@ -909,6 +910,12 @@ void EditEntryWidget::loadEntry(Entry* entry, // Force the user to Save/Discard new entries showApplyButton(!m_create); + // Set an initial password for new entries if the option is enabled + if (create && config()->get(Config::AutoGeneratePasswordForNewEntries).toBool()) { + PasswordGenerator generator; + m_mainUi->passwordEdit->setText(generator.generatePassword()); + } + setModified(false); }