fix: dispatcher fetch app key for app deliveries
This commit is contained in:
parent
1d8b69dda7
commit
b62b461305
1 changed files with 17 additions and 5 deletions
|
@ -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()),
|
||||
|
|
Loading…
Reference in a new issue