Fix role unbans not applying in real time (#20547)
This commit is contained in:
@@ -432,7 +432,7 @@ namespace Content.Server.Database
|
||||
ImmutableArray<byte>? hwId,
|
||||
bool includeUnbanned);
|
||||
|
||||
public abstract Task AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan);
|
||||
public abstract Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan);
|
||||
public abstract Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverRoleUnban);
|
||||
|
||||
public async Task EditServerRoleBan(int id, string reason, NoteSeverity severity, DateTime? expiration, Guid editedBy, DateTime editedAt)
|
||||
|
||||
@@ -14,7 +14,6 @@ using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Npgsql;
|
||||
using Prometheus;
|
||||
using Robust.Shared.Asynchronous;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.ContentPack;
|
||||
using Robust.Shared.Network;
|
||||
@@ -140,7 +139,7 @@ namespace Content.Server.Database
|
||||
ImmutableArray<byte>? hwId,
|
||||
bool includeUnbanned = true);
|
||||
|
||||
Task AddServerRoleBanAsync(ServerRoleBanDef serverBan);
|
||||
Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverBan);
|
||||
Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverBan);
|
||||
|
||||
public Task EditServerRoleBan(
|
||||
@@ -453,7 +452,7 @@ namespace Content.Server.Database
|
||||
return RunDbCommand(() => _db.GetServerRoleBansAsync(address, userId, hwId, includeUnbanned));
|
||||
}
|
||||
|
||||
public Task AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan)
|
||||
public Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan)
|
||||
{
|
||||
DbWriteOpsMetric.Inc();
|
||||
return RunDbCommand(() => _db.AddServerRoleBanAsync(serverRoleBan));
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Immutable;
|
||||
using System.Data;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
@@ -350,6 +351,7 @@ namespace Content.Server.Database
|
||||
return query;
|
||||
}
|
||||
|
||||
[return: NotNullIfNotNull(nameof(ban))]
|
||||
private static ServerRoleBanDef? ConvertRoleBan(ServerRoleBan? ban)
|
||||
{
|
||||
if (ban == null)
|
||||
@@ -406,11 +408,11 @@ namespace Content.Server.Database
|
||||
unban.UnbanTime);
|
||||
}
|
||||
|
||||
public override async Task AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan)
|
||||
public override async Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverRoleBan)
|
||||
{
|
||||
await using var db = await GetDbImpl();
|
||||
|
||||
db.PgDbContext.RoleBan.Add(new ServerRoleBan
|
||||
var ban = new ServerRoleBan
|
||||
{
|
||||
Address = serverRoleBan.Address,
|
||||
HWId = serverRoleBan.HWId?.ToArray(),
|
||||
@@ -423,9 +425,11 @@ namespace Content.Server.Database
|
||||
PlaytimeAtNote = serverRoleBan.PlaytimeAtNote,
|
||||
PlayerUserId = serverRoleBan.UserId?.UserId,
|
||||
RoleId = serverRoleBan.Role,
|
||||
});
|
||||
};
|
||||
db.PgDbContext.RoleBan.Add(ban);
|
||||
|
||||
await db.PgDbContext.SaveChangesAsync();
|
||||
return ConvertRoleBan(ban);
|
||||
}
|
||||
|
||||
public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverRoleUnban)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
@@ -246,11 +247,11 @@ namespace Content.Server.Database
|
||||
return hwId is { Length: > 0 } hwIdVar && hwIdVar.AsSpan().SequenceEqual(ban.HWId);
|
||||
}
|
||||
|
||||
public override async Task AddServerRoleBanAsync(ServerRoleBanDef serverBan)
|
||||
public override async Task<ServerRoleBanDef> AddServerRoleBanAsync(ServerRoleBanDef serverBan)
|
||||
{
|
||||
await using var db = await GetDbImpl();
|
||||
|
||||
db.SqliteDbContext.RoleBan.Add(new ServerRoleBan
|
||||
var ban = new ServerRoleBan
|
||||
{
|
||||
Address = serverBan.Address,
|
||||
Reason = serverBan.Reason,
|
||||
@@ -263,9 +264,11 @@ namespace Content.Server.Database
|
||||
PlaytimeAtNote = serverBan.PlaytimeAtNote,
|
||||
PlayerUserId = serverBan.UserId?.UserId,
|
||||
RoleId = serverBan.Role,
|
||||
});
|
||||
};
|
||||
db.SqliteDbContext.RoleBan.Add(ban);
|
||||
|
||||
await db.SqliteDbContext.SaveChangesAsync();
|
||||
return ConvertRoleBan(ban);
|
||||
}
|
||||
|
||||
public override async Task AddServerRoleUnbanAsync(ServerRoleUnbanDef serverUnban)
|
||||
@@ -282,6 +285,7 @@ namespace Content.Server.Database
|
||||
await db.SqliteDbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
[return: NotNullIfNotNull(nameof(ban))]
|
||||
private static ServerRoleBanDef? ConvertRoleBan(ServerRoleBan? ban)
|
||||
{
|
||||
if (ban == null)
|
||||
|
||||
Reference in New Issue
Block a user