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