fix: UUID fallback in GET /users/{id} so AP actor URLs resolve for signature verification

This commit is contained in:
2026-05-15 03:11:33 +02:00
parent b5427cab7d
commit bbf6c97379

View File

@@ -32,7 +32,16 @@ pub async fn get_user(
OptionalAuthUser(viewer): OptionalAuthUser,
headers: HeaderMap,
) -> Result<Response, ApiError> {
let user = get_user_by_username(&*s.users, &username).await?;
// AP actor URLs use the user's UUID (e.g. /users/{uuid}). Fall back to UUID lookup
// so remote servers can fetch the actor JSON for HTTP signature verification.
let user = if let Ok(uuid) = uuid::Uuid::parse_str(&username) {
s.users
.find_by_id(&domain::value_objects::UserId::from_uuid(uuid))
.await?
.ok_or(ApiError::Domain(domain::errors::DomainError::NotFound))?
} else {
get_user_by_username(&*s.users, &username).await?
};
let accept = headers
.get(header::ACCEPT)