mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
fix: Exclude field for form filling #2097
This commit is contained in:
@@ -258,7 +258,7 @@ object AutofillHelper {
|
||||
}
|
||||
}
|
||||
}
|
||||
for (field in entryInfo.customFields) {
|
||||
for (field in entryInfo.getCustomFieldsForFilling()) {
|
||||
if (field.name == TemplateField.LABEL_HOLDER) {
|
||||
struct.creditCardHolderId?.let { ccNameId ->
|
||||
datasetBuilder.addValueToDatasetBuilder(
|
||||
|
||||
@@ -41,9 +41,9 @@ import androidx.core.graphics.BlendModeCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.credentialprovider.activity.EntrySelectionLauncherActivity
|
||||
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper
|
||||
import com.kunzisoft.keepass.adapters.FieldsAdapter
|
||||
import com.kunzisoft.keepass.credentialprovider.EntrySelectionHelper
|
||||
import com.kunzisoft.keepass.credentialprovider.activity.EntrySelectionLauncherActivity
|
||||
import com.kunzisoft.keepass.database.ContextualDatabase
|
||||
import com.kunzisoft.keepass.database.DatabaseTaskProvider
|
||||
import com.kunzisoft.keepass.database.element.Field
|
||||
@@ -324,9 +324,9 @@ class MagikeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionL
|
||||
actionGoAutomatically()
|
||||
}
|
||||
KEY_FIELDS -> {
|
||||
getEntryInfo()?.customFields?.let { customFields ->
|
||||
getEntryInfo()?.getCustomFieldsForFilling()?.let { customFields ->
|
||||
fieldsAdapter?.apply {
|
||||
setFields(customFields.filter { it.name != OTP_TOKEN_FIELD})
|
||||
setFields(customFields)
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,10 +274,12 @@ class ClipboardEntryNotificationService : LockNotificationService() {
|
||||
val containsPasswordToCopy = entry.password.isNotEmpty()
|
||||
&& PreferencesUtil.allowCopyProtectedFields(context)
|
||||
val containsOTPToCopy = entry.containsCustomField(OTP_TOKEN_FIELD)
|
||||
val containsExtraFieldToCopy = entry.customFields.isNotEmpty()
|
||||
&& (entry.containsCustomFieldsNotProtected()
|
||||
val customFields = entry.getCustomFieldsForFilling()
|
||||
val containsExtraFieldToCopy = customFields.isNotEmpty()
|
||||
&& (customFields.any { !it.protectedValue.isProtected }
|
||||
||
|
||||
(entry.containsCustomFieldsProtected() && PreferencesUtil.allowCopyProtectedFields(context))
|
||||
(customFields.any { it.protectedValue.isProtected }
|
||||
&& PreferencesUtil.allowCopyProtectedFields(context))
|
||||
)
|
||||
|
||||
var startService = false
|
||||
@@ -320,7 +322,7 @@ class ClipboardEntryNotificationService : LockNotificationService() {
|
||||
if (containsExtraFieldToCopy) {
|
||||
try {
|
||||
var anonymousFieldNumber = 0
|
||||
entry.customFields.forEach { field ->
|
||||
entry.getCustomFieldsForFilling().forEach { field ->
|
||||
//If value is not protected or allowed
|
||||
if ((!field.protectedValue.isProtected
|
||||
|| PreferencesUtil.allowCopyProtectedFields(context))
|
||||
|
||||
@@ -24,10 +24,10 @@ import com.kunzisoft.keepass.database.element.Entry
|
||||
import com.kunzisoft.keepass.database.element.Group
|
||||
import com.kunzisoft.keepass.database.element.node.NodeHandler
|
||||
import com.kunzisoft.keepass.database.element.node.NodeId
|
||||
import com.kunzisoft.keepass.model.PasskeyEntryFields
|
||||
import com.kunzisoft.keepass.model.PasskeyEntryFields.FIELD_RELYING_PARTY
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||
import com.kunzisoft.keepass.model.PasskeyEntryFields.isPasskeyExclusion
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_FIELD
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields.isOtpExclusion
|
||||
import com.kunzisoft.keepass.utils.UuidUtil
|
||||
import com.kunzisoft.keepass.utils.inTheSameDomainAs
|
||||
|
||||
@@ -186,8 +186,8 @@ class SearchHelper {
|
||||
}
|
||||
if (searchParameters.searchInOther) {
|
||||
if(entry.getExtraFields().any { field ->
|
||||
OtpEntryFields.searchExcluded(field)
|
||||
&& PasskeyEntryFields.searchExcluded(field)
|
||||
field.isOtpExclusion()
|
||||
&& field.isPasskeyExclusion()
|
||||
&& checkSearchQuery(field.protectedValue.toString(), searchParameters)
|
||||
})
|
||||
return true
|
||||
|
||||
@@ -30,10 +30,12 @@ import com.kunzisoft.keepass.database.element.Tags
|
||||
import com.kunzisoft.keepass.database.element.entry.AutoType
|
||||
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
||||
import com.kunzisoft.keepass.database.element.template.TemplateField
|
||||
import com.kunzisoft.keepass.model.PasskeyEntryFields.isPasskeyExclusion
|
||||
import com.kunzisoft.keepass.model.PasskeyEntryFields.setPasskey
|
||||
import com.kunzisoft.keepass.otp.OtpElement
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
|
||||
import com.kunzisoft.keepass.otp.OtpEntryFields.isOtpExclusion
|
||||
import com.kunzisoft.keepass.utils.readBooleanCompat
|
||||
import com.kunzisoft.keepass.utils.readListCompat
|
||||
import com.kunzisoft.keepass.utils.readParcelableCompat
|
||||
@@ -99,12 +101,11 @@ class EntryInfo : NodeInfo {
|
||||
parcel.writeBooleanCompat(isTemplate)
|
||||
}
|
||||
|
||||
fun containsCustomFieldsProtected(): Boolean {
|
||||
return customFields.any { it.protectedValue.isProtected }
|
||||
}
|
||||
|
||||
fun containsCustomFieldsNotProtected(): Boolean {
|
||||
return customFields.any { !it.protectedValue.isProtected }
|
||||
fun getCustomFieldsForFilling(): List<Field> {
|
||||
return customFields.filter {
|
||||
!it.isOtpExclusion()
|
||||
&& !it.isPasskeyExclusion()
|
||||
}
|
||||
}
|
||||
|
||||
fun containsCustomField(label: String): Boolean {
|
||||
|
||||
@@ -120,8 +120,12 @@ object PasskeyEntryFields {
|
||||
return newCustomFields
|
||||
}
|
||||
|
||||
fun searchExcluded(field: Field): Boolean {
|
||||
return when(field.name) {
|
||||
/**
|
||||
* Field ignored for a search or a form filling
|
||||
*/
|
||||
fun Field.isPasskeyExclusion(): Boolean {
|
||||
return when(name) {
|
||||
PASSKEY_FIELD -> true
|
||||
FIELD_USERNAME -> true
|
||||
FIELD_PRIVATE_KEY -> true
|
||||
FIELD_CREDENTIAL_ID -> true
|
||||
|
||||
@@ -487,8 +487,11 @@ object OtpEntryFields {
|
||||
return newCustomFields
|
||||
}
|
||||
|
||||
fun searchExcluded(field: Field): Boolean {
|
||||
return when(field.name) {
|
||||
/**
|
||||
* Field ignored for a search or a form filling
|
||||
*/
|
||||
fun Field.isOtpExclusion(): Boolean {
|
||||
return when(name) {
|
||||
OTP_FIELD -> true
|
||||
TOTP_SEED_FIELD -> true
|
||||
TOTP_SETTING_FIELD -> true
|
||||
|
||||
Reference in New Issue
Block a user