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.UserVerificationHelper.Companion.checkUserVerification
|
||||
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.database.ContextualDatabase
|
||||
import com.kunzisoft.keepass.database.element.Attachment
|
||||
@@ -329,15 +330,11 @@ class EntryActivity : DatabaseLockActivity() {
|
||||
when (entryState) {
|
||||
is EntryViewModel.EntryState.Loading -> {}
|
||||
is EntryViewModel.EntryState.RequestUnprotectField -> {
|
||||
val fieldView = entryState.protectedFieldView
|
||||
if (fieldView.isCurrentlyProtected()) {
|
||||
checkUserVerification(
|
||||
requestUnprotectField(
|
||||
userVerificationViewModel = mUserVerificationViewModel,
|
||||
dataToVerify = UserVerificationData(protectedFieldView = fieldView)
|
||||
database = mDatabase,
|
||||
protectedFieldView = entryState.protectedFieldView
|
||||
)
|
||||
} else {
|
||||
fieldView.protect()
|
||||
}
|
||||
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.retrieveSearchInfo
|
||||
import com.kunzisoft.keepass.credentialprovider.TypeMode
|
||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationData
|
||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.checkUserVerification
|
||||
import com.kunzisoft.keepass.credentialprovider.UserVerificationHelper.Companion.requestUnprotectField
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.util.PasskeyHelper.buildPasskeyResponseAndSetResult
|
||||
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||
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.setTransparentNavigationBar
|
||||
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
|
||||
import com.kunzisoft.keepass.view.showError
|
||||
import com.kunzisoft.keepass.view.updateLockPaddingStart
|
||||
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
|
||||
import com.kunzisoft.keepass.viewmodels.EntryEditViewModel
|
||||
@@ -403,15 +403,11 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
mEntryEditViewModel.actionPerformed()
|
||||
}
|
||||
is EntryEditViewModel.EntryEditState.RequestUnprotectField -> {
|
||||
val fieldView = uiState.protectedFieldView
|
||||
if (fieldView.isCurrentlyProtected()) {
|
||||
checkUserVerification(
|
||||
requestUnprotectField(
|
||||
userVerificationViewModel = mUserVerificationViewModel,
|
||||
dataToVerify = UserVerificationData(protectedFieldView = fieldView)
|
||||
database = mDatabase,
|
||||
protectedFieldView = uiState.protectedFieldView
|
||||
)
|
||||
} else {
|
||||
fieldView.protect()
|
||||
}
|
||||
mEntryEditViewModel.actionPerformed()
|
||||
}
|
||||
}
|
||||
@@ -424,6 +420,7 @@ class EntryEditActivity : DatabaseLockActivity(),
|
||||
when (uVState) {
|
||||
is UserVerificationViewModel.UIState.Loading -> {}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationCanceled -> {
|
||||
coordinatorLayout?.showError(uVState.error)
|
||||
mUserVerificationViewModel.onUserVerificationReceived()
|
||||
}
|
||||
is UserVerificationViewModel.UIState.OnUserVerificationSucceeded -> {
|
||||
|
||||
@@ -14,10 +14,12 @@ import androidx.fragment.app.FragmentActivity
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.dialogs.CheckDatabaseCredentialDialogFragment
|
||||
import com.kunzisoft.keepass.credentialprovider.passkey.data.UserVerificationRequirement
|
||||
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||
import com.kunzisoft.keepass.model.EntryInfo
|
||||
import com.kunzisoft.keepass.settings.PreferencesUtil.isUserVerificationDeviceCredential
|
||||
import com.kunzisoft.keepass.utils.getEnumExtra
|
||||
import com.kunzisoft.keepass.utils.putEnumExtra
|
||||
import com.kunzisoft.keepass.view.ProtectedFieldView
|
||||
import com.kunzisoft.keepass.view.toastError
|
||||
import com.kunzisoft.keepass.viewmodels.UserVerificationViewModel
|
||||
|
||||
@@ -102,6 +104,24 @@ class UserVerificationHelper {
|
||||
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
|
||||
*/
|
||||
@@ -111,7 +131,7 @@ class UserVerificationHelper {
|
||||
) {
|
||||
if (isAuthenticatorsAllowed() && isUserVerificationDeviceCredential(this)) {
|
||||
showUserVerificationDeviceCredential(userVerificationViewModel, dataToVerify)
|
||||
} else {
|
||||
} else if (dataToVerify.database != null) {
|
||||
showUserVerificationDatabaseCredential(userVerificationViewModel, dataToVerify)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user