fix: Exclude field for form filling #2097

This commit is contained in:
J-Jamet
2025-08-21 21:25:26 +02:00
parent 05a39f6922
commit 6672085d84
7 changed files with 33 additions and 23 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

@@ -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