Optional server whitelists (#5979)

This commit is contained in:
mirrorcult
2022-01-04 06:37:06 -07:00
committed by GitHub
parent 66deacc322
commit af785f873f
13 changed files with 1958 additions and 1 deletions

View File

@@ -379,6 +379,7 @@ namespace Content.Server.Database
.Include(p => p.Flags)
.Include(p => p.AdminRank)
.ThenInclude(p => p!.Flags)
.AsSplitQuery() // tests fail because of a random warning if you dont have this!
.SingleOrDefaultAsync(p => p.UserId == userId.UserId, cancel);
}
@@ -671,6 +672,33 @@ namespace Content.Server.Database
#endregion
#region Whitelist
public async Task<bool> GetWhitelistStatusAsync(NetUserId player)
{
await using var db = await GetDb();
return await db.DbContext.Whitelist.AnyAsync(w => w.UserId == player);
}
public async Task AddToWhitelistAsync(NetUserId player)
{
await using var db = await GetDb();
db.DbContext.Whitelist.Add(new Whitelist { UserId = player });
await db.DbContext.SaveChangesAsync();
}
public async Task RemoveFromWhitelistAsync(NetUserId player)
{
await using var db = await GetDb();
var entry = await db.DbContext.Whitelist.SingleAsync(w => w.UserId == player);
db.DbContext.Whitelist.Remove(entry);
await db.DbContext.SaveChangesAsync();
}
#endregion
protected abstract Task<DbGuard> GetDb();
protected abstract class DbGuard : IAsyncDisposable