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); } }