diff options
-rw-r--r-- | include/users.h | 6 | ||||
-rw-r--r-- | src/modules/m_sajoin.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_samode.cpp | 5 | ||||
-rw-r--r-- | src/users.cpp | 16 |
4 files changed, 10 insertions, 19 deletions
diff --git a/include/users.h b/include/users.h index 9a90567a0..d130aec1d 100644 --- a/include/users.h +++ b/include/users.h @@ -463,10 +463,9 @@ class CoreExport User : public Extensible * all operators, yet are not commands. An example might be oper override, mass messaging (/notice $*), etc. * * @param privstr The priv to chec, e.g. "users/override/topic". These are loaded free-form from the config file. - * @param noisy If set to true, the user is notified that they do not have the specified permission where applicable. If false, no notification is sent. * @return True if this user has the permission in question. */ - virtual bool HasPrivPermission(const std::string &privstr, bool noisy = false); + virtual bool HasPrivPermission(const std::string& privstr); /** Returns true or false if a user can set a privileged user or channel mode. * This is done by looking up their oper type from User::oper, then referencing @@ -840,10 +839,9 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node<Local * all operators, yet are not commands. An example might be oper override, mass messaging (/notice $*), etc. * * @param privstr The priv to chec, e.g. "users/override/topic". These are loaded free-form from the config file. - * @param noisy If set to true, the user is notified that they do not have the specified permission where applicable. If false, no notification is sent. * @return True if this user has the permission in question. */ - bool HasPrivPermission(const std::string &privstr, bool noisy = false) CXX11_OVERRIDE; + bool HasPrivPermission(const std::string& privstr) CXX11_OVERRIDE; /** Returns true or false if a user can set a privileged user or channel mode. * This is done by looking up their oper type from User::oper, then referencing diff --git a/src/modules/m_sajoin.cpp b/src/modules/m_sajoin.cpp index f506a2e1c..d01339133 100644 --- a/src/modules/m_sajoin.cpp +++ b/src/modules/m_sajoin.cpp @@ -45,7 +45,7 @@ class CommandSajoin : public Command User* dest = ServerInstance->FindNick(nickname); if ((dest) && (dest->registered == REG_ALL)) { - if (user != dest && !user->HasPrivPermission("users/sajoin-others", false)) + if (user != dest && !user->HasPrivPermission("users/sajoin-others")) { user->WriteNotice("*** You are not allowed to /SAJOIN other users (the privilege users/sajoin-others is needed to /SAJOIN others)."); return CMD_FAILURE; diff --git a/src/modules/m_samode.cpp b/src/modules/m_samode.cpp index 322ee91b8..61d676d6a 100644 --- a/src/modules/m_samode.cpp +++ b/src/modules/m_samode.cpp @@ -49,8 +49,11 @@ class CommandSamode : public Command } // Changing the modes of another user requires a special permission - if ((target != user) && (!user->HasPrivPermission("users/samode-usermodes", true))) + if ((target != user) && (!user->HasPrivPermission("users/samode-usermodes"))) + { + user->WriteNotice("*** You are not allowed to /SAMODE other users (the privilege users/samode-usermodes is needed to /SAMODE others)."); return CMD_FAILURE; + } } // XXX: Make ModeParser clear LastParse diff --git a/src/users.cpp b/src/users.cpp index 3a6ddbc0f..827d818c3 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -195,27 +195,17 @@ bool LocalUser::HasPermission(const std::string &command) return oper->AllowedOperCommands.Contains(command); } -bool User::HasPrivPermission(const std::string &privstr, bool noisy) +bool User::HasPrivPermission(const std::string& privstr) { return true; } -bool LocalUser::HasPrivPermission(const std::string &privstr, bool noisy) +bool LocalUser::HasPrivPermission(const std::string& privstr) { if (!this->IsOper()) - { - if (noisy) - this->WriteNotice("You are not an oper"); return false; - } - - if (oper->AllowedPrivs.Contains(privstr)) - return true; - - if (noisy) - this->WriteNotice("Oper type " + oper->name + " does not have access to priv " + privstr); - return false; + return oper->AllowedPrivs.Contains(privstr); } void UserIOHandler::OnDataReady() |