mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 17:36:29 +03:00
refactor: Check that verifier is verified in turn
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user