aboutsummaryrefslogtreecommitdiff
path: root/src/modules/m_check.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_check.cpp')
-rw-r--r--src/modules/m_check.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp
index c924f55e5..10ec6ca4b 100644
--- a/src/modules/m_check.cpp
+++ b/src/modules/m_check.cpp
@@ -134,6 +134,19 @@ class CommandCheck final
return ret;
}
+ static std::string GetAllowedOperOnlyCommands(LocalUser* user)
+ {
+ std::string ret;
+ for (const auto& [_, cmd] : ServerInstance->Parser.GetCommands())
+ {
+ if (cmd->access_needed == CmdAccess::OPERATOR && user->HasCommandPermission(cmd->name))
+ ret += cmd->name + " ";
+ }
+ if (!ret.empty())
+ ret.pop_back();
+ return ret;
+ }
+
static std::string GetAllowedOperOnlyModes(LocalUser* user, ModeType modetype)
{
std::string ret;
@@ -209,15 +222,15 @@ public:
if (targetuser->IsOper())
{
- /* user is an oper of type ____ */
- context.Write("opertype", targetuser->oper->name);
+ context.Write("oper", targetuser->oper->GetName());
+ context.Write("opertype", targetuser->oper->GetType());
if (localtarget)
{
context.Write("chanmodeperms", GetAllowedOperOnlyModes(localtarget, MODETYPE_CHANNEL));
context.Write("usermodeperms", GetAllowedOperOnlyModes(localtarget, MODETYPE_USER));
context.Write("snomaskperms", GetAllowedOperOnlySnomasks(localtarget));
- context.Write("commandperms", targetuser->oper->AllowedOperCommands.ToString());
- context.Write("permissions", targetuser->oper->AllowedPrivs.ToString());
+ context.Write("commandperms", GetAllowedOperOnlyCommands(localtarget));
+ context.Write("permissions", localtarget->oper->GetPrivileges());
}
}