diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index 2b97b6dc5..97aab6cc1 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -577,6 +577,10 @@ Skip confirmation for main window Auto-Type actions + + Auto-generate password for new entries + + ApplicationSettingsWidgetSecurity diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 04b724fb1..0a0815661 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 9385f9ef1..f08ea72fd 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -53,6 +53,7 @@ public: HideWindowOnCopy, MinimizeOnCopy, MinimizeAfterUnlock, + AutoGeneratePasswordForNewEntries, DropToBackgroundOnCopy, UseGroupIconOnEntryCreation, AutoTypeEntryTitleMatch, diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index c7bea73f3..cb2ee3af1 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -226,6 +226,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(); @@ -399,6 +401,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 17c75d994..0e297e0ec 100644 --- a/src/gui/ApplicationSettingsWidgetGeneral.ui +++ b/src/gui/ApplicationSettingsWidgetGeneral.ui @@ -59,7 +59,7 @@ 0 0 568 - 1202 + 1226 @@ -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 05a52c3ff..4c98b099b 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" @@ -948,6 +949,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); }