示例#1
0
        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))
                );
        }
示例#2
0
        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));
        }