refactor: Check that verifier is verified in turn

This commit is contained in:
iequidoo
2025-08-29 14:57:09 -03:00
committed by iequidoo
parent 61633cf23b
commit bd15d90e77

View File

@@ -1975,16 +1975,21 @@ pub(crate) async fn mark_contact_id_as_verified(
bail!("Non-key-contact {contact_id} cannot be verified"); bail!("Non-key-contact {contact_id} cannot be verified");
} }
if verifier_id != ContactId::SELF { if verifier_id != ContactId::SELF {
let verifier_fingerprint: String = transaction.query_row( let (verifier_fingerprint, verifier_verifier_id): (String, ContactId) = transaction
"SELECT fingerprint FROM contacts WHERE id=?", .query_row(
(verifier_id,), "SELECT fingerprint, verifier FROM contacts WHERE id=?",
|row| row.get(0), (verifier_id,),
)?; |row| Ok((row.get(0)?, row.get(1)?)),
)?;
if verifier_fingerprint.is_empty() { if verifier_fingerprint.is_empty() {
bail!( bail!(
"Contact {contact_id} cannot be verified by non-key-contact {verifier_id}" "Contact {contact_id} cannot be verified by non-key-contact {verifier_id}"
); );
} }
ensure!(
verifier_id == contact_id || verifier_verifier_id != ContactId::UNDEFINED,
"Contact {contact_id} cannot be verified by unverified contact {verifier_id}",
);
} }
transaction.execute( transaction.execute(
"UPDATE contacts SET verifier=?1 "UPDATE contacts SET verifier=?1