[backend/federation] Process incoming user deletes
This commit is contained in:
parent
7a7f6cb527
commit
72d13c19d8
2 changed files with 25 additions and 4 deletions
|
@ -78,8 +78,8 @@ public class ActivityHandlerService(
|
||||||
if (activity.Actor.Id != actor.Id)
|
if (activity.Actor.Id != actor.Id)
|
||||||
throw GracefulException.UnprocessableEntity("Refusing to delete user: actor doesn't match");
|
throw GracefulException.UnprocessableEntity("Refusing to delete user: actor doesn't match");
|
||||||
|
|
||||||
//TODO: handle user deletes
|
await userSvc.DeleteUserAsync(actor);
|
||||||
throw new NotImplementedException("User deletes aren't supported yet");
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activity.Object is not ASTombstone tombstone)
|
if (activity.Object is not ASTombstone tombstone)
|
||||||
|
@ -95,8 +95,7 @@ public class ActivityHandlerService(
|
||||||
if (tombstone.Id != activity.Actor.Id)
|
if (tombstone.Id != activity.Actor.Id)
|
||||||
throw GracefulException.UnprocessableEntity("Refusing to delete user: actor doesn't match");
|
throw GracefulException.UnprocessableEntity("Refusing to delete user: actor doesn't match");
|
||||||
|
|
||||||
//TODO: handle user deletes
|
await userSvc.DeleteUserAsync(activity.Actor);
|
||||||
throw new NotImplementedException("User deletes aren't supported yet");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.LogDebug("Delete activity object {id} is unknown, skipping", tombstone.Id);
|
logger.LogDebug("Delete activity object {id} is unknown, skipping", tombstone.Id);
|
||||||
|
|
|
@ -317,4 +317,26 @@ public class UserService(
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task DeleteUserAsync(ASActor actor)
|
||||||
|
{
|
||||||
|
var user = await db.Users
|
||||||
|
.Include(user => user.Avatar)
|
||||||
|
.Include(user => user.Banner)
|
||||||
|
.FirstOrDefaultAsync(p => p.Uri == actor.Id && p.Host != null);
|
||||||
|
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
logger.LogDebug("User {uri} is unknown, skipping delete task", actor.Id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
db.Remove(user);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
|
if (user.Avatar != null)
|
||||||
|
await driveSvc.RemoveFile(user.Avatar);
|
||||||
|
if (user.Banner != null)
|
||||||
|
await driveSvc.RemoveFile(user.Banner);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue