From 354df070903e3f1511306c9b8431168c7288cf5e Mon Sep 17 00:00:00 2001 From: MrDave1999 Date: Mon, 10 Aug 2026 10:51:39 -0500 Subject: [PATCH] refactor: improve IsServerOwner API Remove the ownerName parameter from IsServerOwner and resolve the configured server owner internally. This keeps the owner configuration detail encapsulated by the API, allowing consumers to query whether a player is the server owner without providing configuration data. The direct dependency on EnvReader is intentional because server owner configuration is always provided through environment variables. --- .../Players/Accounts/Roles/PlayerRoleSystem.cs | 2 +- .../Players/GeneralCommands/AdminCommands.cs | 5 ++--- .../Players/GeneralCommands/ModeratorCommands.cs | 8 +++----- src/Application/Players/PlayerExtensions.cs | 15 ++++++++------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/Application/Players/Accounts/Roles/PlayerRoleSystem.cs b/src/Application/Players/Accounts/Roles/PlayerRoleSystem.cs index 402c67fc..a22a6b25 100644 --- a/src/Application/Players/Accounts/Roles/PlayerRoleSystem.cs +++ b/src/Application/Players/Accounts/Roles/PlayerRoleSystem.cs @@ -24,7 +24,7 @@ public void SetRole( return; } - if (targetPlayer.IsServerOwner(serverOwnerSettings.Name)) + if (targetPlayer.IsServerOwner()) { currentPlayer.SendClientMessage(Color.Red, Messages.CannotPerformActionOnServerOwner); return; diff --git a/src/Application/Players/GeneralCommands/AdminCommands.cs b/src/Application/Players/GeneralCommands/AdminCommands.cs index ac3c23f7..8ccb9a8d 100644 --- a/src/Application/Players/GeneralCommands/AdminCommands.cs +++ b/src/Application/Players/GeneralCommands/AdminCommands.cs @@ -4,8 +4,7 @@ public class AdminCommands( IEntityManager entityManager, IServerService serverService, IWorldService worldService, - IDialogService dialogService, - ServerOwnerSettings serverOwnerSettings) : ISystem + IDialogService dialogService) : ISystem { [PlayerCommand("cmdsadmin")] [RequiresMinimumRole(RoleId.Admin)] @@ -88,7 +87,7 @@ public void BanPlayer( return; } - if (targetPlayer.IsServerOwner(serverOwnerSettings.Name)) + if (targetPlayer.IsServerOwner()) { currentPlayer.SendClientMessage(Color.Red, Messages.CannotPerformActionOnServerOwner); return; diff --git a/src/Application/Players/GeneralCommands/ModeratorCommands.cs b/src/Application/Players/GeneralCommands/ModeratorCommands.cs index 569d12c0..131fe281 100644 --- a/src/Application/Players/GeneralCommands/ModeratorCommands.cs +++ b/src/Application/Players/GeneralCommands/ModeratorCommands.cs @@ -1,8 +1,6 @@ namespace CTF.Application.Players.GeneralCommands; -public class ModeratorCommands( - IWorldService worldService, - ServerOwnerSettings serverOwnerSettings) : ISystem +public class ModeratorCommands(IWorldService worldService) : ISystem { [PlayerCommand("cmdsmoderator")] [RequiresMinimumRole(RoleId.Moderator)] @@ -36,7 +34,7 @@ public void Kick( return; } - if (targetPlayer.IsServerOwner(serverOwnerSettings.Name)) + if (targetPlayer.IsServerOwner()) { currentPlayer.SendClientMessage(Color.Red, Messages.CannotPerformActionOnServerOwner); return; @@ -105,7 +103,7 @@ public void Warn( return; } - if (targetPlayer.IsServerOwner(serverOwnerSettings.Name)) + if (targetPlayer.IsServerOwner()) { currentPlayer.SendClientMessage(Color.Red, Messages.CannotPerformActionOnServerOwner); return; diff --git a/src/Application/Players/PlayerExtensions.cs b/src/Application/Players/PlayerExtensions.cs index 722f5a21..09aa4fee 100644 --- a/src/Application/Players/PlayerExtensions.cs +++ b/src/Application/Players/PlayerExtensions.cs @@ -74,15 +74,16 @@ public static Team RemoveFromCurrentTeam(this Player player) /// /// The player to check. /// - /// - /// The name configured as the server owner. - /// /// - /// if the player's name matches the configured - /// server owner name; otherwise, . + /// if the player is the server owner; + /// otherwise, . /// - public static bool IsServerOwner(this Player player, string ownerName) - => player.Name.Equals( + public static bool IsServerOwner(this Player player) + { + var envReader = new EnvReader(); + var ownerName = envReader["ServerOwner__Name"]; + return player.Name.Equals( ownerName, StringComparison.OrdinalIgnoreCase); + } }