fix: dispatcher fetch app key for app deliveries

This commit is contained in:
əlemi 2024-04-22 04:23:11 +02:00
parent 1d8b69dda7
commit b62b461305
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -84,13 +84,25 @@ async fn worker(db: DatabaseConnection, domain: String, poll_interval: u64, mut
},
};
let Some(model::user::Model{ private_key: Some(key), .. }) = model::user::Entity::find_by_id(&delivery.actor)
.one(&db).await?
else {
tracing::error!("can not dispatch activity for user without private key: {}", delivery.actor);
continue;
let key = if delivery.actor.ends_with(&domain) {
let Some(model::application::Model { private_key: key, .. }) = model::application::Entity::find()
.one(&db).await?
else {
tracing::error!("no private key configured for application");
continue;
};
key
} else {
let Some(model::user::Model{ private_key: Some(key), .. }) = model::user::Entity::find_by_id(&delivery.actor)
.one(&db).await?
else {
tracing::error!("can not dispatch activity for user without private key: {}", delivery.actor);
continue;
};
key
};
if let Err(e) = Context::request(
Method::POST, &delivery.target,
Some(&serde_json::to_string(&payload).unwrap()),