Un-revert IPlayerManager refactor (#21244)

This commit is contained in:
Leon Friedrich
2023-10-28 09:59:53 +11:00
committed by GitHub
parent c55e1dcafd
commit e685cb626b
245 changed files with 781 additions and 943 deletions

View File

@@ -7,15 +7,15 @@ using Content.Server.Database;
using Content.Server.Players;
using Content.Shared.Administration;
using Content.Shared.CCVar;
using Content.Shared.Players;
using Robust.Server.Console;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Console;
using Robust.Shared.ContentPack;
using Robust.Shared.Enums;
using Robust.Shared.Map;
using Robust.Shared.Network;
using Robust.Shared.Players;
using Robust.Shared.Player;
using Robust.Shared.Toolshed;
using Robust.Shared.Toolshed.Errors;
using Robust.Shared.Utility;
@@ -35,16 +35,16 @@ namespace Content.Server.Administration.Managers
[Dependency] private readonly IChatManager _chat = default!;
[Dependency] private readonly ToolshedManager _toolshed = default!;
private readonly Dictionary<IPlayerSession, AdminReg> _admins = new();
private readonly Dictionary<ICommonSession, AdminReg> _admins = new();
private readonly HashSet<NetUserId> _promotedPlayers = new();
public event Action<AdminPermsChangedEventArgs>? OnPermsChanged;
public IEnumerable<IPlayerSession> ActiveAdmins => _admins
public IEnumerable<ICommonSession> ActiveAdmins => _admins
.Where(p => p.Value.Data.Active)
.Select(p => p.Key);
public IEnumerable<IPlayerSession> AllAdmins => _admins.Select(p => p.Key);
public IEnumerable<ICommonSession> AllAdmins => _admins.Select(p => p.Key);
private readonly AdminCommandPermissions _commandPermissions = new();
private readonly AdminCommandPermissions _toolshedCommandPermissions = new();
@@ -56,7 +56,7 @@ namespace Content.Server.Administration.Managers
public AdminData? GetAdminData(ICommonSession session, bool includeDeAdmin = false)
{
if (_admins.TryGetValue((IPlayerSession)session, out var reg) && (reg.Data.Active || includeDeAdmin))
if (_admins.TryGetValue(session, out var reg) && (reg.Data.Active || includeDeAdmin))
{
return reg.Data;
}
@@ -66,13 +66,13 @@ namespace Content.Server.Administration.Managers
public AdminData? GetAdminData(EntityUid uid, bool includeDeAdmin = false)
{
if (_playerManager.TryGetSessionByEntity(uid, out var session) && session is IPlayerSession playerSession)
return GetAdminData(playerSession, includeDeAdmin);
if (_playerManager.TryGetSessionByEntity(uid, out var session))
return GetAdminData(session, includeDeAdmin);
return null;
}
public void DeAdmin(IPlayerSession session)
public void DeAdmin(ICommonSession session)
{
if (!_admins.TryGetValue(session, out var reg))
{
@@ -95,7 +95,7 @@ namespace Content.Server.Administration.Managers
UpdateAdminStatus(session);
}
public void ReAdmin(IPlayerSession session)
public void ReAdmin(ICommonSession session)
{
if (!_admins.TryGetValue(session, out var reg))
{
@@ -119,7 +119,7 @@ namespace Content.Server.Administration.Managers
UpdateAdminStatus(session);
}
public async void ReloadAdmin(IPlayerSession player)
public async void ReloadAdmin(ICommonSession player)
{
var data = await LoadAdminData(player);
var curAdmin = _admins.GetValueOrDefault(player);
@@ -236,7 +236,7 @@ namespace Content.Server.Administration.Managers
_toolshed.ActivePermissionController = this;
}
public void PromoteHost(IPlayerSession player)
public void PromoteHost(ICommonSession player)
{
_promotedPlayers.Add(player.UserId);
@@ -250,7 +250,7 @@ namespace Content.Server.Administration.Managers
}
// NOTE: Also sends commands list for non admins..
private void UpdateAdminStatus(IPlayerSession session)
private void UpdateAdminStatus(ICommonSession session)
{
var msg = new MsgUpdateAdminStatus();
@@ -290,7 +290,7 @@ namespace Content.Server.Administration.Managers
}
}
private async void LoginAdminMaybe(IPlayerSession session)
private async void LoginAdminMaybe(ICommonSession session)
{
var adminDat = await LoadAdminData(session);
if (adminDat == null)
@@ -323,7 +323,7 @@ namespace Content.Server.Administration.Managers
UpdateAdminStatus(session);
}
private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(IPlayerSession session)
private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(ICommonSession session)
{
var promoteHost = IsLocal(session) && _cfg.GetCVar(CCVars.ConsoleLoginLocal)
|| _promotedPlayers.Contains(session.UserId)
@@ -387,7 +387,7 @@ namespace Content.Server.Administration.Managers
}
}
private static bool IsLocal(IPlayerSession player)
private static bool IsLocal(ICommonSession player)
{
var ep = player.ConnectedClient.RemoteEndPoint;
var addr = ep.Address;
@@ -419,7 +419,7 @@ namespace Content.Server.Administration.Managers
return false;
}
public bool CanCommand(IPlayerSession session, string cmdName)
public bool CanCommand(ICommonSession session, string cmdName)
{
if (_commandPermissions.AnyCommands.Contains(cmdName))
{
@@ -474,7 +474,7 @@ namespace Content.Server.Administration.Managers
return true;
}
var data = GetAdminData((IPlayerSession)user);
var data = GetAdminData(user);
if (data == null)
{
// Player isn't an admin.
@@ -520,32 +520,32 @@ namespace Content.Server.Administration.Managers
return (attribs.Length != 0, attribs);
}
public bool CanViewVar(IPlayerSession session)
public bool CanViewVar(ICommonSession session)
{
return CanCommand(session, "vv");
}
public bool CanAdminPlace(IPlayerSession session)
public bool CanAdminPlace(ICommonSession session)
{
return GetAdminData(session)?.CanAdminPlace() ?? false;
}
public bool CanScript(IPlayerSession session)
public bool CanScript(ICommonSession session)
{
return GetAdminData(session)?.CanScript() ?? false;
}
public bool CanAdminMenu(IPlayerSession session)
public bool CanAdminMenu(ICommonSession session)
{
return GetAdminData(session)?.CanAdminMenu() ?? false;
}
public bool CanAdminReloadPrototypes(IPlayerSession session)
public bool CanAdminReloadPrototypes(ICommonSession session)
{
return GetAdminData(session)?.CanAdminReloadPrototypes() ?? false;
}
private void SendPermsChangedEvent(IPlayerSession session)
private void SendPermsChangedEvent(ICommonSession session)
{
var flags = GetAdminData(session)?.Flags;
OnPermsChanged?.Invoke(new AdminPermsChangedEventArgs(session, flags));
@@ -553,7 +553,7 @@ namespace Content.Server.Administration.Managers
private sealed class AdminReg
{
public readonly IPlayerSession Session;
public readonly ICommonSession Session;
public AdminData Data;
public int? RankId;
@@ -561,7 +561,7 @@ namespace Content.Server.Administration.Managers
// Such as console.loginlocal or promotehost
public bool IsSpecialLogin;
public AdminReg(IPlayerSession session, AdminData data)
public AdminReg(ICommonSession session, AdminData data)
{
Data = data;
Session = session;

View File

@@ -15,6 +15,7 @@ using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@@ -283,7 +284,7 @@ public sealed class BanManager : IBanManager, IPostInjectInit
SendRoleBans(player);
}
public void SendRoleBans(IPlayerSession pSession)
public void SendRoleBans(ICommonSession pSession)
{
var roleBans = _cachedRoleBans.GetValueOrDefault(pSession.UserId) ?? new HashSet<ServerRoleBanDef>();
var bans = new MsgRoleBans()

View File

@@ -1,9 +1,8 @@
using Content.Shared.Administration;
using Content.Shared.Administration.Managers;
using Robust.Server.Player;
using Robust.Shared.Player;
using Robust.Shared.Toolshed;
namespace Content.Server.Administration.Managers
{
/// <summary>
@@ -22,12 +21,12 @@ namespace Content.Server.Administration.Managers
/// <remarks>
/// This does not include admins that are de-adminned.
/// </remarks>
IEnumerable<IPlayerSession> ActiveAdmins { get; }
IEnumerable<ICommonSession> ActiveAdmins { get; }
/// <summary>
/// Gets all admins currently on the server, even de-adminned ones.
/// </summary>
IEnumerable<IPlayerSession> AllAdmins { get; }
IEnumerable<ICommonSession> AllAdmins { get; }
/// <summary>
/// De-admins an admin temporarily so they are effectively a normal player.
@@ -35,18 +34,18 @@ namespace Content.Server.Administration.Managers
/// <remarks>
/// De-adminned admins are able to re-admin at any time if they so desire.
/// </remarks>
void DeAdmin(IPlayerSession session);
void DeAdmin(ICommonSession session);
/// <summary>
/// Re-admins a de-adminned admin.
/// </summary>
void ReAdmin(IPlayerSession session);
void ReAdmin(ICommonSession session);
/// <summary>
/// Re-loads the permissions of an player in case their admin data changed DB-side.
/// </summary>
/// <seealso cref="ReloadAdminsWithRank"/>
void ReloadAdmin(IPlayerSession player);
void ReloadAdmin(ICommonSession player);
/// <summary>
/// Reloads admin permissions for all admins with a certain rank.
@@ -57,7 +56,7 @@ namespace Content.Server.Administration.Managers
void Initialize();
void PromoteHost(IPlayerSession player);
void PromoteHost(ICommonSession player);
bool TryGetCommandFlags(CommandSpec command, out AdminFlags[]? flags);
}

View File

@@ -2,8 +2,8 @@ using System.Collections.Immutable;
using System.Net;
using System.Threading.Tasks;
using Content.Shared.Database;
using Robust.Server.Player;
using Robust.Shared.Network;
using Robust.Shared.Player;
namespace Content.Server.Administration.Managers;
@@ -55,5 +55,5 @@ public interface IBanManager
/// Sends role bans to the target
/// </summary>
/// <param name="pSession">Player's session</param>
public void SendRoleBans(IPlayerSession pSession);
public void SendRoleBans(ICommonSession pSession);
}