mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-07-23 15:00:47 -04:00
Fix several issues with Quick Unlock (#9697)
* Fix #7892 - Pressing escape when the quick unlock prompt is shown will now go back to the main unlock dialog view. * Fix #9030 - Quick unlock will be automatically invoked in the unlock dialog upon being shown. * Fix #9554 - Quick unlock application setting will be updated every time the settings widget is shown instead of just on first launch. * Show warning that quick unlock is not enabled if user cancels Windows Hello prompt. This should limit people thinking there is a security issue. Also improve documentation describing this behavior. * Disable quick unlock in gui tests
This commit is contained in:
parent
f293aad74f
commit
aecd154399
9 changed files with 51 additions and 15 deletions
|
@ -139,6 +139,7 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
|
|||
// QuickUnlock actions
|
||||
connect(m_ui->quickUnlockButton, &QPushButton::pressed, this, [this] { openDatabase(); });
|
||||
connect(m_ui->resetQuickUnlockButton, &QPushButton::pressed, this, [this] { resetQuickUnlock(); });
|
||||
m_ui->resetQuickUnlockButton->setShortcut(Qt::Key_Escape);
|
||||
}
|
||||
|
||||
DatabaseOpenWidget::~DatabaseOpenWidget()
|
||||
|
@ -286,7 +287,11 @@ void DatabaseOpenWidget::openDatabase()
|
|||
auto keyData = databaseKey->serialize();
|
||||
#if defined(Q_CC_MSVC)
|
||||
// Store the password using Windows Hello
|
||||
getWindowsHello()->storeKey(m_filename, keyData);
|
||||
if (!getWindowsHello()->storeKey(m_filename, keyData)) {
|
||||
getMainWindow()->displayTabMessage(
|
||||
tr("Windows Hello setup was canceled or failed. Quick unlock has not been enabled."),
|
||||
MessageWidget::MessageType::Warning);
|
||||
}
|
||||
#elif defined(Q_OS_MACOS)
|
||||
// Store the password using TouchID
|
||||
TouchID::getInstance().storeKey(m_filename, keyData);
|
||||
|
@ -536,6 +541,13 @@ bool DatabaseOpenWidget::isOnQuickUnlockScreen()
|
|||
return m_ui->centralStack->currentIndex() == 1;
|
||||
}
|
||||
|
||||
void DatabaseOpenWidget::triggerQuickUnlock()
|
||||
{
|
||||
if (isOnQuickUnlockScreen()) {
|
||||
m_ui->quickUnlockButton->click();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset installed quick unlock secrets.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue