Accept Move() activities coming from "target" actor
This commit is contained in:
parent
73ef78f021
commit
df8c206cf0
1 changed files with 7 additions and 4 deletions
|
@ -30,20 +30,23 @@ pub async fn handle_move_person(
|
||||||
activity: Activity,
|
activity: Activity,
|
||||||
) -> HandlerResult {
|
) -> HandlerResult {
|
||||||
let object_id = find_object_id(&activity.object)?;
|
let object_id = find_object_id(&activity.object)?;
|
||||||
if object_id != activity.actor {
|
|
||||||
return Err(ValidationError("actor ID mismatch").into());
|
|
||||||
};
|
|
||||||
let target_value = activity.target
|
let target_value = activity.target
|
||||||
.ok_or(ValidationError("target is missing"))?;
|
.ok_or(ValidationError("target is missing"))?;
|
||||||
let target_id = find_object_id(&target_value)?;
|
let target_id = find_object_id(&target_value)?;
|
||||||
|
|
||||||
|
// Actor is old profile (Mastodon)
|
||||||
|
// Actor is new profile (Mitra)
|
||||||
|
if object_id != activity.actor && target_id != activity.actor {
|
||||||
|
return Err(ValidationError("actor ID mismatch").into());
|
||||||
|
};
|
||||||
|
|
||||||
let instance = config.instance();
|
let instance = config.instance();
|
||||||
let media_dir = config.media_dir();
|
let media_dir = config.media_dir();
|
||||||
let old_profile = get_or_import_profile_by_actor_id(
|
let old_profile = get_or_import_profile_by_actor_id(
|
||||||
db_client,
|
db_client,
|
||||||
&instance,
|
&instance,
|
||||||
&media_dir,
|
&media_dir,
|
||||||
&activity.actor,
|
&object_id,
|
||||||
).await?;
|
).await?;
|
||||||
let old_actor = old_profile.actor_json.unwrap();
|
let old_actor = old_profile.actor_json.unwrap();
|
||||||
let new_profile = get_or_import_profile_by_actor_id(
|
let new_profile = get_or_import_profile_by_actor_id(
|
||||||
|
|
Loading…
Reference in a new issue