diff options
author | Thomas Fargeix <t.fargeix@gmail.com> | 2015-06-14 19:28:51 +0200 |
---|---|---|
committer | Thomas Fargeix <t.fargeix@gmail.com> | 2015-06-14 19:33:45 +0200 |
commit | 57b614ae59603b6628012ef9ba86912dbb240f8e (patch) | |
tree | 0712054646076b68f97f535838afcbcec66d1684 /modules/commands/cs_access.cpp | |
parent | 65bf84cfb59082f122ee3b05ff3b85aa8550f648 (diff) |
Allow opers with chanserv/access/list to view the levels list
Diffstat (limited to 'modules/commands/cs_access.cpp')
-rw-r--r-- | modules/commands/cs_access.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/modules/commands/cs_access.cpp b/modules/commands/cs_access.cpp index 7fef5bfc5..2fc245690 100644 --- a/modules/commands/cs_access.cpp +++ b/modules/commands/cs_access.cpp @@ -758,12 +758,20 @@ class CommandCSLevels : public Command return; } + bool has_access = false; + if (source.HasPriv("chanserv/access/modify")) + has_access = true; + else if (cmd.equals_ci("LIST") && source.HasPriv("chanserv/access/list")) + has_access = true; + else if (source.AccessFor(ci).HasPriv("FOUNDER")) + has_access = true; + /* If SET, we want two extra parameters; if DIS[ABLE] or FOUNDER, we want only * one; else, we want none. */ if (cmd.equals_ci("SET") ? s.empty() : (cmd.substr(0, 3).equals_ci("DIS") ? (what.empty() || !s.empty()) : !what.empty())) this->OnSyntaxError(source, cmd); - else if (!source.AccessFor(ci).HasPriv("FOUNDER") && !source.HasPriv("chanserv/access/modify")) + else if (!has_access) source.Reply(ACCESS_DENIED); else if (Anope::ReadOnly && !cmd.equals_ci("LIST")) source.Reply(READ_ONLY_MODE); |