コード例 #1
0
        /// <summary>
        /// Filters a sequence of <see cref="HiveId"/> where the Anonymous <see cref="UserGroup"/> has permissions <paramref name="permissionIds"/> by checking with <paramref name="securityService"/>.
        /// </summary>
        /// <param name="entityIds">The entity ids.</param>
        /// <param name="securityService">The security service.</param>
        /// <param name="entityUow">The entity uow.</param>
        /// <param name="securityUow">The security uow.</param>
        /// <param name="permissionIds">The permission ids.</param>
        /// <returns></returns>
        public static IEnumerable <HiveId> FilterAnonymousWithPermissions(this IEnumerable <HiveId> entityIds,
                                                                          ISecurityService securityService,
                                                                          IReadonlyGroupUnit <IContentStore> entityUow,
                                                                          IReadonlyGroupUnit <ISecurityStore> securityUow,
                                                                          Guid firstPermission,
                                                                          params Guid[] permissionIds)
        {
            var anonymousUserGroup = securityService.GetAnonymousUserGroup(securityUow);

            if (anonymousUserGroup == null || firstPermission == Guid.Empty)
            {
                return(Enumerable.Empty <HiveId>());
            }
            return(entityIds.Where(id => securityService.GetEffectivePermissions(anonymousUserGroup.Id.AsEnumerableOfOne(), entityUow, securityUow, id, firstPermission.AsEnumerableOfOne().Concat(permissionIds).ToArray()).AreAllAllowed()));
        }