示例#1
0
        private async Task InitializeAccessAsync(IServiceProvider serviceProvider, IDataBase dataBase, Authentication authentication)
        {
            var isLoaded    = dataBase.IsLoaded;
            var userFlags   = UserFlags.Offline | UserFlags.NotBanned;
            var excludeList = new List <string>()
            {
                authentication.ID
            };

            if (isLoaded == false)
            {
                await dataBase.LoadAsync(authentication);
            }
            await dataBase.SetPrivateAsync(authentication);

            {
                foreach (var item in new[] { UserFlags.Admin })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Master);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Developer);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Editor);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member, UserFlags.Guest })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Guest);

                    excludeList.Add(user.ID);
                }
            }
            if (isLoaded == false)
            {
                await dataBase.UnloadAsync(authentication);
            }
        }