mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
fix: ProtectField #2283
This commit is contained in:
@@ -59,6 +59,7 @@ import com.kunzisoft.keepass.credentialprovider.SpecialMode
|
|||||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationData
|
import com.kunzisoft.keepass.credentialprovider.UserVerificationData
|
||||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.checkUserVerification
|
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.checkUserVerification
|
||||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.isUserVerificationNeeded
|
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.isUserVerificationNeeded
|
||||||
|
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.requestUnprotectField
|
||||||
import com.kunzisoft.keepass.credentialprovider.magikeyboard.MagikeyboardService
|
import com.kunzisoft.keepass.credentialprovider.magikeyboard.MagikeyboardService
|
||||||
import com.kunzisoft.keepass.database.ContextualDatabase
|
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||||
import com.kunzisoft.keepass.database.element.Attachment
|
import com.kunzisoft.keepass.database.element.Attachment
|
||||||
@@ -329,15 +330,11 @@ class EntryActivity : DatabaseLockActivity() {
|
|||||||
when (entryState) {
|
when (entryState) {
|
||||||
is EntryViewModel.EntryState.Loading -> {}
|
is EntryViewModel.EntryState.Loading -> {}
|
||||||
is EntryViewModel.EntryState.RequestUnprotectField -> {
|
is EntryViewModel.EntryState.RequestUnprotectField -> {
|
||||||
val fieldView = entryState.protectedFieldView
|
requestUnprotectField(
|
||||||
if (fieldView.isCurrentlyProtected()) {
|
|
||||||
checkUserVerification(
|
|
||||||
userVerificationViewModel = mUserVerificationViewModel,
|
userVerificationViewModel = mUserVerificationViewModel,
|
||||||
dataToVerify = UserVerificationData(protectedFieldView = fieldView)
|
database = mDatabase,
|
||||||
|
protectedFieldView = entryState.protectedFieldView
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
fieldView.protect()
|
|
||||||
}
|
|
||||||
mEntryViewModel.actionPerformed()
|
mEntryViewModel.actionPerformed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,8 +63,7 @@ import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.buildSpecia
|
|||||||
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.retrieveRegisterInfo
|
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.retrieveRegisterInfo
|
||||||
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.retrieveSearchInfo
|
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper.retrieveSearchInfo
|
||||||
import com.kunzisoft.keepass.credentialprovider.TypeMode
|
import com.kunzisoft.keepass.credentialprovider.TypeMode
|
||||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationData
|
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.requestUnprotectField
|
||||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.checkUserVerification
|
|
||||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PasskeyHelper.buildPasskeyResponseAndSetResult
|
import com.kunzisoft.keepass.credentialprovider.passkey.util.PasskeyHelper.buildPasskeyResponseAndSetResult
|
||||||
import com.kunzisoft.keepass.database.ContextualDatabase
|
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||||
import com.kunzisoft.keepass.database.element.Attachment
|
import com.kunzisoft.keepass.database.element.Attachment
|
||||||
@@ -100,6 +99,7 @@ import com.kunzisoft.keepass.view.asError
|
|||||||
import com.kunzisoft.keepass.view.hideByFading
|
import com.kunzisoft.keepass.view.hideByFading
|
||||||
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
import com.kunzisoft.keepass.view.setTransparentNavigationBar
|
||||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||||
|
import com.kunzisoft.keepass.view.showError
|
||||||
import com.kunzisoft.keepass.view.updateLockPaddingStart
|
import com.kunzisoft.keepass.view.updateLockPaddingStart
|
||||||
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
|
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
|
||||||
import com.kunzisoft.keepass.viewmodels.EntryEditViewModel
|
import com.kunzisoft.keepass.viewmodels.EntryEditViewModel
|
||||||
@@ -403,15 +403,11 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
mEntryEditViewModel.actionPerformed()
|
mEntryEditViewModel.actionPerformed()
|
||||||
}
|
}
|
||||||
is EntryEditViewModel.EntryEditState.RequestUnprotectField -> {
|
is EntryEditViewModel.EntryEditState.RequestUnprotectField -> {
|
||||||
val fieldView = uiState.protectedFieldView
|
requestUnprotectField(
|
||||||
if (fieldView.isCurrentlyProtected()) {
|
|
||||||
checkUserVerification(
|
|
||||||
userVerificationViewModel = mUserVerificationViewModel,
|
userVerificationViewModel = mUserVerificationViewModel,
|
||||||
dataToVerify = UserVerificationData(protectedFieldView = fieldView)
|
database = mDatabase,
|
||||||
|
protectedFieldView = uiState.protectedFieldView
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
fieldView.protect()
|
|
||||||
}
|
|
||||||
mEntryEditViewModel.actionPerformed()
|
mEntryEditViewModel.actionPerformed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -424,6 +420,7 @@ class EntryEditActivity : DatabaseLockActivity(),
|
|||||||
when (uVState) {
|
when (uVState) {
|
||||||
is UserVerificationViewModel.UIState.Loading -> {}
|
is UserVerificationViewModel.UIState.Loading -> {}
|
||||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||||
|
coordinatorLayout?.showError(uVState.error)
|
||||||
mUserVerificationViewModel.onUserVerificationReceived()
|
mUserVerificationViewModel.onUserVerificationReceived()
|
||||||
}
|
}
|
||||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||||
|
|||||||
@@ -14,10 +14,12 @@ import androidx.fragment.app.FragmentActivity
|
|||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.activities.dialogs.CheckDatabaseCredentialDialogFragment
|
import com.kunzisoft.keepass.activities.dialogs.CheckDatabaseCredentialDialogFragment
|
||||||
import com.kunzisoft.keepass.credentialprovider.passkey.data.UserVerificationRequirement
|
import com.kunzisoft.keepass.credentialprovider.passkey.data.UserVerificationRequirement
|
||||||
|
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||||
import com.kunzisoft.keepass.model.EntryInfo
|
import com.kunzisoft.keepass.model.EntryInfo
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil.isUserVerificationDeviceCredential
|
import com.kunzisoft.keepass.settings.PreferencesUtil.isUserVerificationDeviceCredential
|
||||||
import com.kunzisoft.keepass.utils.getEnumExtra
|
import com.kunzisoft.keepass.utils.getEnumExtra
|
||||||
import com.kunzisoft.keepass.utils.putEnumExtra
|
import com.kunzisoft.keepass.utils.putEnumExtra
|
||||||
|
import com.kunzisoft.keepass.view.ProtectedFieldView
|
||||||
import com.kunzisoft.keepass.view.toastError
|
import com.kunzisoft.keepass.view.toastError
|
||||||
import com.kunzisoft.keepass.viewmodels.UserVerificationViewModel
|
import com.kunzisoft.keepass.viewmodels.UserVerificationViewModel
|
||||||
|
|
||||||
@@ -102,6 +104,24 @@ class UserVerificationHelper {
|
|||||||
activity?.checkUserVerification(userVerificationViewModel, dataToVerify)
|
activity?.checkUserVerification(userVerificationViewModel, dataToVerify)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FragmentActivity.requestUnprotectField(
|
||||||
|
userVerificationViewModel: UserVerificationViewModel,
|
||||||
|
database: ContextualDatabase?,
|
||||||
|
protectedFieldView: ProtectedFieldView
|
||||||
|
) {
|
||||||
|
if (protectedFieldView.isCurrentlyProtected()) {
|
||||||
|
checkUserVerification(
|
||||||
|
userVerificationViewModel = userVerificationViewModel,
|
||||||
|
dataToVerify = UserVerificationData(
|
||||||
|
database = database,
|
||||||
|
protectedFieldView = protectedFieldView
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
protectedFieldView.protect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays a dialog to verify the user
|
* Displays a dialog to verify the user
|
||||||
*/
|
*/
|
||||||
@@ -111,7 +131,7 @@ class UserVerificationHelper {
|
|||||||
) {
|
) {
|
||||||
if (isAuthenticatorsAllowed() && isUserVerificationDeviceCredential(this)) {
|
if (isAuthenticatorsAllowed() && isUserVerificationDeviceCredential(this)) {
|
||||||
showUserVerificationDeviceCredential(userVerificationViewModel, dataToVerify)
|
showUserVerificationDeviceCredential(userVerificationViewModel, dataToVerify)
|
||||||
} else {
|
} else if (dataToVerify.database != null) {
|
||||||
showUserVerificationDatabaseCredential(userVerificationViewModel, dataToVerify)
|
showUserVerificationDatabaseCredential(userVerificationViewModel, dataToVerify)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user