fix: correct urls in AP user

This commit is contained in:
aprilthepink 2024-07-17 13:17:16 +02:00
parent d33de465bf
commit 071f6dcbd8
2 changed files with 22 additions and 5 deletions

View file

@ -115,7 +115,17 @@ pub async fn webfinger(
let res = resolve("acct:".to_string() + name + "@" + &LYSAND_DOMAIN, true) let res = resolve("acct:".to_string() + name + "@" + &LYSAND_DOMAIN, true)
.await .await
.unwrap(); .unwrap();
user = db_user_from_url(Url::parse(res.links.get(0).clone().unwrap().href.clone().unwrap().as_str())?).await?; user = db_user_from_url(Url::parse(
res.links
.get(0)
.clone()
.unwrap()
.href
.clone()
.unwrap()
.as_str(),
)?)
.await?;
} }
Ok(HttpResponse::Ok().json(build_webfinger_response( Ok(HttpResponse::Ok().json(build_webfinger_response(
query.resource.clone(), query.resource.clone(),

View file

@ -134,20 +134,27 @@ async fn fetch_user(
None => return Ok(HttpResponse::NotFound().finish()), None => return Ok(HttpResponse::NotFound().finish()),
}; };
let bridge_user_url = generate_user_id(&API_DOMAIN, &user.id)?;
let inbox = Url::parse(&format!(
"https://{}/{}/inbox",
API_DOMAIN.to_string(),
&user.username.clone()
))?;
Ok(HttpResponse::Ok() Ok(HttpResponse::Ok()
.content_type(FEDERATION_CONTENT_TYPE) .content_type(FEDERATION_CONTENT_TYPE)
.json(WithContext::new_default(crate::objects::person::Person { .json(WithContext::new_default(crate::objects::person::Person {
kind: Default::default(), kind: Default::default(),
id: generate_user_id(&API_DOMAIN, &user.id)?.into(), id: bridge_user_url.clone().into(),
preferred_username: user.username.clone(), preferred_username: user.username.clone(),
name: user.name.clone(), name: user.name.clone(),
summary: user.summary.clone(), summary: user.summary.clone(),
url: Url::parse(user.url.as_str()).unwrap(), url: Url::parse(user.url.as_str()).unwrap(),
inbox: Url::parse(user.inbox.as_str()).unwrap(), inbox,
public_key: PublicKey { public_key: PublicKey {
owner: Url::parse(user.url.as_str()).unwrap(), owner: bridge_user_url.clone(),
public_key_pem: user.public_key, public_key_pem: user.public_key,
id: format!("{}#main-key", Url::parse(user.url.as_str()).unwrap()), id: format!("{}#main-key", bridge_user_url.clone()),
}, },
}))) })))
} }