public async Task <bool> VerifyAccess(APEntity entity, string userId) { if (entity.Type == "_blocks" && !entity.Data["attributedTo"].Any(a => a.Id == userId)) { return(false); } if (entity.Type == "_blocked") { return(false); } if (entity.Type == "https://www.w3.org/ns/activitystreams#OrderedCollection" || entity.Type == "https://www.w3.org/ns/activitystreams#Collection" || entity.Type.StartsWith("_")) { return(true); } if (_entityData.IsActor(entity.Data)) { return(true); } var audience = DeliveryService.GetAudienceIds(entity.Data); return( entity.Data["attributedTo"].Concat(entity.Data["actor"]).Any(a => a.Id == userId) || audience.Contains("https://www.w3.org/ns/activitystreams#Public") || (userId != null && audience.Contains(userId)) ); }
private bool _verifyAudience(string user, CollectionItem entity) { if (entity.IsPublic) { return(true); } if (_configuration.IsActor(entity.Element.Data)) { return(true); } var audience = DeliveryService.GetAudienceIds(entity.Element.Data); return(audience.Contains(user)); }