mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 19:19:02 -04:00
cmd_names Do the HasPrivPermission() check only in the NAMES handler
This commit is contained in:
parent
930fd98e48
commit
c27122858b
@ -53,10 +53,11 @@ CmdResult CommandNames::Handle (const std::vector<std::string>& parameters, User
|
||||
// - the user doing the /NAMES is inside the channel
|
||||
// - the user doing the /NAMES has the channels/auspex privilege
|
||||
|
||||
bool has_user = c->HasUser(user);
|
||||
if ((!c->IsModeSet(secretmode)) || (has_user) || (user->HasPrivPermission("channels/auspex")))
|
||||
// If the user is inside the channel or has privs, instruct SendNames() to show invisible (+i) members
|
||||
bool show_invisible = ((c->HasUser(user)) || (user->HasPrivPermission("channels/auspex")));
|
||||
if ((show_invisible) || (!c->IsModeSet(secretmode)))
|
||||
{
|
||||
SendNames(user, c, has_user);
|
||||
SendNames(user, c, show_invisible);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
}
|
||||
@ -65,10 +66,8 @@ CmdResult CommandNames::Handle (const std::vector<std::string>& parameters, User
|
||||
return CMD_FAILURE;
|
||||
}
|
||||
|
||||
void CommandNames::SendNames(User* user, Channel* chan, bool isinside)
|
||||
void CommandNames::SendNames(User* user, Channel* chan, bool show_invisible)
|
||||
{
|
||||
bool has_privs = user->HasPrivPermission("channels/auspex");
|
||||
|
||||
std::string list;
|
||||
if (chan->IsModeSet(secretmode))
|
||||
list.push_back('@');
|
||||
@ -87,7 +86,7 @@ void CommandNames::SendNames(User* user, Channel* chan, bool isinside)
|
||||
const Channel::MemberMap& members = chan->GetUsers();
|
||||
for (Channel::MemberMap::const_iterator i = members.begin(); i != members.end(); ++i)
|
||||
{
|
||||
if ((!isinside) && (i->first->IsModeSet(invisiblemode)) && (!has_privs))
|
||||
if ((!show_invisible) && (i->first->IsModeSet(invisiblemode)))
|
||||
{
|
||||
// Member is invisible and we are not supposed to show them
|
||||
continue;
|
||||
|
@ -104,9 +104,9 @@ class CommandNames : public Command
|
||||
/** Spool the NAMES list for a given channel to the given user
|
||||
* @param user User to spool the NAMES list to
|
||||
* @param chan Channel whose nicklist to send
|
||||
* @param isinside If true, the user is inside the channel, if not then false
|
||||
* @param show_invisible True to show invisible (+i) members to the user, false to omit them from the list
|
||||
*/
|
||||
void SendNames(User* user, Channel* chan, bool isinside);
|
||||
void SendNames(User* user, Channel* chan, bool show_invisible);
|
||||
};
|
||||
|
||||
/** Handle /KICK.
|
||||
|
Loading…
x
Reference in New Issue
Block a user