コード例 #1
0
        public List <int> GetForumIdsWhereUserCanNot(int userGroupId, VBForumFlags flags, bool onlyParentCategories = false)
        {
            var forumIds = BuildForumPermissionQuery(userGroupId, flags, negate: true, onlyParentCategories, selectOnlyForumId: true)
                           .Select(f => f.Id)
                           .ToList();

            return(forumIds);
        }
コード例 #2
0
        public async Task <bool> UserCanInForum(int forumId, VBUserGroup userGroup, VBForumFlags flags)
        {
            // Since we only check if the user has permission, writing and tracking is never required here
            var forum = await GetForumsQuery().FirstOrDefaultAsync(f => f.Id == forumId);

            var highestPermission = FetchHighestPermissionFlagForUser(forum, userGroup);

            return(highestPermission.HasFlag(flags));
        }
コード例 #3
0
        public async Task <List <VBForum> > GetCategoriesWhereUserCanAsync(VBUserGroup userGroup, VBForumFlags flags = VBForumFlags.CanViewForum | VBForumFlags.CanViewThreads)
        {
            var forums = await GetForumsWhereUserCanAsync(userGroup, flags);

            var categories = forums.Where(f => f.ParentId == -1)
                             .ToList();

            return(categories);
        }
コード例 #4
0
        public async Task <Dictionary <VBForum, List <int> > > GetCategoriesWithChildIdsAsync(VBUserGroup userGroup, VBForumFlags flags = VBForumFlags.CanViewForum | VBForumFlags.CanViewThreads)
        {
            var forums = await GetCategoriesWhereUserCanAsync(userGroup, flags);

            var forumsWithChilds = forums.Select(f => new {
                Forum  = f,
                Childs = new List <int>(f.ChildList)
                {
                    f.Id
                }
            }).GroupBy(x => x.Forum)
                                   .ToDictionary(kvp => kvp.Key, kvp => kvp.SelectMany(x => x.Childs).ToList());

            return(forumsWithChilds);
        }
コード例 #5
0
 public VBForumPermission(int forumPermissionRaw)
 {
     Flag = (VBForumFlags)forumPermissionRaw;
 }
コード例 #6
0
 /// <summary>
 /// Neogation of GetForumswhereUserCan(): It returns all forums where the group doesn't have the provided flag
 /// </summary>
 /// <param name="onlyParentCategories">If false, all forums will be fetched (default). Set this to true if you only want to get categories (parent = -1).</param>
 public List <VBLightForum> GetForumsWhereUserCanNot(int userGroupId, VBForumFlags flags, bool onlyParentCategories = false)
 {
     return(BuildForumPermissionQuery(userGroupId, flags, negate: true, onlyParentCategories));
 }