From 68992735d81a7709543ab7c6056385b9d3946d75 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 1 Jun 2024 04:14:43 -0400 Subject: [PATCH] Clean up command perms (#28451) * Change BanExemption command to AdminFlags.Ban permissions * Change LOOC to check for Moderator permission * Change ListVerbs from Admin to Debug AdminFlags * Change RunVerbAs from Admin to Fun AdminFlags * More permission changes * Change GhostKick to Moderator perm * Clean up command perms * fuck --------- Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> --- .../Administration/Commands/AdminWhoCommand.cs | 2 +- .../Administration/Commands/AnnounceUiCommand.cs | 2 +- .../Commands/BanExemptionCommands.cs | 4 ++-- Content.Server/Administration/Commands/DSay.cs | 2 +- .../Administration/Commands/FaxUiCommand.cs | 3 +-- .../Commands/LinkBluespaceLocker.cs | 2 +- .../Administration/Commands/PlayTimeCommands.cs | 10 +++++----- .../Administration/Commands/SetAdminOOC.cs | 2 +- .../AlertLevel/Commands/SetAlertLevelCommand.cs | 2 +- Content.Server/Announcements/AnnounceCommand.cs | 2 +- Content.Server/Chat/Commands/SetOOCCommand.cs | 2 +- Content.Server/Chat/Systems/ChatSystem.cs | 11 ++++++++--- Content.Server/Damage/Commands/GodModeCommand.cs | 2 +- Content.Server/GhostKick/GhostKickManager.cs | 2 +- Content.Server/Motd/SetMOTDCommand.cs | 2 +- .../Toolshed/Commands/Verbs/RunVerbAsCommand.cs | 2 +- Content.Server/Verbs/Commands/ListVerbsCommand.cs | 3 ++- Content.Server/Voting/Managers/VoteManager.cs | 4 ++-- Content.Server/Voting/VoteCommands.cs | 4 ++-- Content.Shared/Administration/AdminFlags.cs | 15 +++++++++++++++ Resources/engineCommandPerms.yml | 12 +++++++++--- 21 files changed, 58 insertions(+), 32 deletions(-) diff --git a/Content.Server/Administration/Commands/AdminWhoCommand.cs b/Content.Server/Administration/Commands/AdminWhoCommand.cs index cf2f8c453c..feeec90e48 100644 --- a/Content.Server/Administration/Commands/AdminWhoCommand.cs +++ b/Content.Server/Administration/Commands/AdminWhoCommand.cs @@ -7,7 +7,7 @@ using Robust.Shared.Utility; namespace Content.Server.Administration.Commands; -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.AdminWho)] public sealed class AdminWhoCommand : IConsoleCommand { public string Command => "adminwho"; diff --git a/Content.Server/Administration/Commands/AnnounceUiCommand.cs b/Content.Server/Administration/Commands/AnnounceUiCommand.cs index d80db96686..abb9235a3a 100644 --- a/Content.Server/Administration/Commands/AnnounceUiCommand.cs +++ b/Content.Server/Administration/Commands/AnnounceUiCommand.cs @@ -5,7 +5,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] public sealed class AnnounceUiCommand : IConsoleCommand { public string Command => "announceui"; diff --git a/Content.Server/Administration/Commands/BanExemptionCommands.cs b/Content.Server/Administration/Commands/BanExemptionCommands.cs index 6db00db90c..b6b5f705f9 100644 --- a/Content.Server/Administration/Commands/BanExemptionCommands.cs +++ b/Content.Server/Administration/Commands/BanExemptionCommands.cs @@ -6,7 +6,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands; -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Ban)] public sealed class BanExemptionUpdateCommand : LocalizedCommands { [Dependency] private readonly IServerDbManager _dbManager = default!; @@ -61,7 +61,7 @@ public sealed class BanExemptionUpdateCommand : LocalizedCommands } } -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Ban)] public sealed class BanExemptionGetCommand : LocalizedCommands { [Dependency] private readonly IServerDbManager _dbManager = default!; diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs index 8682614b5f..f29e105909 100644 --- a/Content.Server/Administration/Commands/DSay.cs +++ b/Content.Server/Administration/Commands/DSay.cs @@ -4,7 +4,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] sealed class DSay : IConsoleCommand { [Dependency] private readonly IEntityManager _e = default!; diff --git a/Content.Server/Administration/Commands/FaxUiCommand.cs b/Content.Server/Administration/Commands/FaxUiCommand.cs index cf9e97e399..8323278c58 100644 --- a/Content.Server/Administration/Commands/FaxUiCommand.cs +++ b/Content.Server/Administration/Commands/FaxUiCommand.cs @@ -5,7 +5,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands; -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Fun)] public sealed class FaxUiCommand : IConsoleCommand { public string Command => "faxui"; @@ -27,4 +27,3 @@ public sealed class FaxUiCommand : IConsoleCommand eui.OpenEui(ui, player); } } - diff --git a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs index d2f7e4de15..9fac72664b 100644 --- a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs +++ b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs @@ -4,7 +4,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands; -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Fun)] public sealed class LinkBluespaceLocker : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; diff --git a/Content.Server/Administration/Commands/PlayTimeCommands.cs b/Content.Server/Administration/Commands/PlayTimeCommands.cs index 97d3f12e38..42bc8635c4 100644 --- a/Content.Server/Administration/Commands/PlayTimeCommands.cs +++ b/Content.Server/Administration/Commands/PlayTimeCommands.cs @@ -6,7 +6,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands; -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class PlayTimeAddOverallCommand : IConsoleCommand { [Dependency] private readonly IPlayerManager _playerManager = default!; @@ -58,7 +58,7 @@ public sealed class PlayTimeAddOverallCommand : IConsoleCommand } } -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class PlayTimeAddRoleCommand : IConsoleCommand { [Dependency] private readonly IPlayerManager _playerManager = default!; @@ -123,7 +123,7 @@ public sealed class PlayTimeAddRoleCommand : IConsoleCommand } } -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class PlayTimeGetOverallCommand : IConsoleCommand { [Dependency] private readonly IPlayerManager _playerManager = default!; @@ -168,7 +168,7 @@ public sealed class PlayTimeGetOverallCommand : IConsoleCommand } } -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class PlayTimeGetRoleCommand : IConsoleCommand { [Dependency] private readonly IPlayerManager _playerManager = default!; @@ -247,7 +247,7 @@ public sealed class PlayTimeGetRoleCommand : IConsoleCommand /// /// Saves the timers for a particular player immediately /// -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class PlayTimeSaveCommand : IConsoleCommand { [Dependency] private readonly IPlayerManager _playerManager = default!; diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs index 27528e1940..c1f72f7666 100644 --- a/Content.Server/Administration/Commands/SetAdminOOC.cs +++ b/Content.Server/Administration/Commands/SetAdminOOC.cs @@ -5,7 +5,7 @@ using Robust.Shared.Console; namespace Content.Server.Administration.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.NameColor)] internal sealed class SetAdminOOC : IConsoleCommand { public string Command => "setadminooc"; diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs index f52fc2b718..405500442f 100644 --- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs +++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs @@ -8,7 +8,7 @@ using Robust.Shared.Console; namespace Content.Server.AlertLevel.Commands { [UsedImplicitly] - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Fun)] public sealed class SetAlertLevelCommand : LocalizedCommands { [Dependency] private readonly IEntitySystemManager _entitySystems = default!; diff --git a/Content.Server/Announcements/AnnounceCommand.cs b/Content.Server/Announcements/AnnounceCommand.cs index cedde3fc14..2307f36a5d 100644 --- a/Content.Server/Announcements/AnnounceCommand.cs +++ b/Content.Server/Announcements/AnnounceCommand.cs @@ -6,7 +6,7 @@ using Robust.Shared.Console; namespace Content.Server.Announcements { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] public sealed class AnnounceCommand : IConsoleCommand { public string Command => "announce"; diff --git a/Content.Server/Chat/Commands/SetOOCCommand.cs b/Content.Server/Chat/Commands/SetOOCCommand.cs index e6e688377e..d712a62401 100644 --- a/Content.Server/Chat/Commands/SetOOCCommand.cs +++ b/Content.Server/Chat/Commands/SetOOCCommand.cs @@ -6,7 +6,7 @@ using Robust.Shared.Console; namespace Content.Server.Chat.Commands; -[AdminCommand(AdminFlags.Server)] +[AdminCommand(AdminFlags.Admin)] public sealed class SetOOCCommand : IConsoleCommand { public string Command => "setooc"; diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 8e6c2ba4b3..531c4259ef 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -10,6 +10,7 @@ using Content.Server.Speech.EntitySystems; using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.ActionBlocker; +using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Database; @@ -277,9 +278,13 @@ public sealed partial class ChatSystem : SharedChatSystem message = SanitizeInGameOOCMessage(message); var sendType = type; - // If dead player LOOC is disabled, unless you are an aghost, send dead messages to dead chat - if (!_adminManager.IsAdmin(player) && !_deadLoocEnabled && - (HasComp(source) || _mobStateSystem.IsDead(source))) + // If dead player LOOC is disabled, unless you are an admin with Moderator perms, send dead messages to dead chat + if ((_adminManager.IsAdmin(player) && _adminManager.HasAdminFlag(player, AdminFlags.Moderator)) // Override if admin + || _deadLoocEnabled + || (!HasComp(source) && !_mobStateSystem.IsDead(source))) // Check that player is not dead + { + } + else sendType = InGameOOCChatType.Dead; // If crit player LOOC is disabled, don't send the message at all. diff --git a/Content.Server/Damage/Commands/GodModeCommand.cs b/Content.Server/Damage/Commands/GodModeCommand.cs index 866737f17a..06a968b473 100644 --- a/Content.Server/Damage/Commands/GodModeCommand.cs +++ b/Content.Server/Damage/Commands/GodModeCommand.cs @@ -5,7 +5,7 @@ using Robust.Shared.Console; namespace Content.Server.Damage.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Fun)] public sealed class GodModeCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; diff --git a/Content.Server/GhostKick/GhostKickManager.cs b/Content.Server/GhostKick/GhostKickManager.cs index 7dd82970ac..40d21d79d2 100644 --- a/Content.Server/GhostKick/GhostKickManager.cs +++ b/Content.Server/GhostKick/GhostKickManager.cs @@ -44,7 +44,7 @@ public sealed class GhostKickManager } } -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class GhostKickCommand : IConsoleCommand { public string Command => "ghostkick"; diff --git a/Content.Server/Motd/SetMOTDCommand.cs b/Content.Server/Motd/SetMOTDCommand.cs index c99f728435..3a7a5e71c6 100644 --- a/Content.Server/Motd/SetMOTDCommand.cs +++ b/Content.Server/Motd/SetMOTDCommand.cs @@ -12,7 +12,7 @@ namespace Content.Server.Motd; /// /// A console command usable by any user which prints or sets the Message of the Day. /// -[AdminCommand(AdminFlags.Admin)] +[AdminCommand(AdminFlags.Moderator)] public sealed class SetMotdCommand : LocalizedCommands { [Dependency] private readonly IAdminLogManager _adminLogManager = default!; diff --git a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs index 1b11dffeea..5c1bac6c93 100644 --- a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs +++ b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs @@ -8,7 +8,7 @@ using Robust.Shared.Toolshed.TypeParsers; namespace Content.Server.Toolshed.Commands.Verbs; -[ToolshedCommand, AdminCommand(AdminFlags.Admin)] +[ToolshedCommand, AdminCommand(AdminFlags.Moderator)] public sealed class RunVerbAsCommand : ToolshedCommand { private SharedVerbSystem? _verb; diff --git a/Content.Server/Verbs/Commands/ListVerbsCommand.cs b/Content.Server/Verbs/Commands/ListVerbsCommand.cs index 7b541afa66..1c80edb82a 100644 --- a/Content.Server/Verbs/Commands/ListVerbsCommand.cs +++ b/Content.Server/Verbs/Commands/ListVerbsCommand.cs @@ -1,11 +1,12 @@ using Content.Server.Administration; +using Content.Server.Database; using Content.Shared.Administration; using Content.Shared.Verbs; using Robust.Shared.Console; namespace Content.Server.Verbs.Commands { - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] public sealed class ListVerbsCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entManager = default!; diff --git a/Content.Server/Voting/Managers/VoteManager.cs b/Content.Server/Voting/Managers/VoteManager.cs index 5bd18cd8c4..edb11f0bdb 100644 --- a/Content.Server/Voting/Managers/VoteManager.cs +++ b/Content.Server/Voting/Managers/VoteManager.cs @@ -316,7 +316,7 @@ namespace Content.Server.Voting.Managers timeSpan = default; // Admins can always call votes. - if (_adminMgr.HasAdminFlag(initiator, AdminFlags.Admin)) + if (_adminMgr.HasAdminFlag(initiator, AdminFlags.Moderator)) { isAdmin = true; return true; @@ -370,7 +370,7 @@ namespace Content.Server.Voting.Managers .Select(e => e.Data) .ToImmutableArray(); // Store all votes in order for webhooks - var voteTally = new List(); + var voteTally = new List(); foreach(var entry in v.Entries) { voteTally.Add(entry.Votes); diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs index 3c792dc625..a6cfb3e0b9 100644 --- a/Content.Server/Voting/VoteCommands.cs +++ b/Content.Server/Voting/VoteCommands.cs @@ -66,7 +66,7 @@ namespace Content.Server.Voting } } - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] public sealed class CreateCustomCommand : IConsoleCommand { [Dependency] private readonly IAdminLogManager _adminLogger = default!; @@ -308,7 +308,7 @@ namespace Content.Server.Voting } } - [AdminCommand(AdminFlags.Admin)] + [AdminCommand(AdminFlags.Moderator)] public sealed class CancelVoteCommand : IConsoleCommand { [Dependency] private readonly IAdminLogManager _adminLogger = default!; diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs index 280745af58..02db1cf394 100644 --- a/Content.Shared/Administration/AdminFlags.cs +++ b/Content.Shared/Administration/AdminFlags.cs @@ -109,6 +109,21 @@ /// Pii = 1 << 18, + /// + /// Lets you take moderator actions on the game server. + /// + Moderator = 1 << 19, + + /// + /// Lets you check currently online admins. + /// + AdminWho = 1 << 20, + + /// + /// Lets you set the color of your OOC name. + /// + NameColor = 1 << 21, + /// /// Dangerous host permissions like scsi. /// diff --git a/Resources/engineCommandPerms.yml b/Resources/engineCommandPerms.yml index 42cc4668a9..b68a2b22df 100644 --- a/Resources/engineCommandPerms.yml +++ b/Resources/engineCommandPerms.yml @@ -90,12 +90,12 @@ - Flags: ADMIN Commands: - - delete - - kick - listplayers - tp - tpto - - respawn + +- Flags: FUN + Commands: - tippy - tip @@ -111,6 +111,12 @@ Commands: - spawn - cspawn + - delete + +- Flags: MODERATOR + Commands: + - kick + - respawn - Flags: HOST Commands: -- 2.51.2