summaryrefslogtreecommitdiff
path: root/modules/commands/cs_xop.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-08-09 01:55:34 -0400
committerAdam <Adam@anope.org>2011-08-09 01:55:34 -0400
commit776583a665fdc1b98b66266f6649865d27337a28 (patch)
treebe07b292c7d307285b5afd78c5e816df8e2a71c5 /modules/commands/cs_xop.cpp
parent91c3363c1578d24e70d0ed215d6aedc769076f08 (diff)
Simiplied a bit of the access system
Diffstat (limited to 'modules/commands/cs_xop.cpp')
-rw-r--r--modules/commands/cs_xop.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/modules/commands/cs_xop.cpp b/modules/commands/cs_xop.cpp
index 0fa51a048..a6107be3c 100644
--- a/modules/commands/cs_xop.cpp
+++ b/modules/commands/cs_xop.cpp
@@ -316,7 +316,7 @@ class XOPBase : public Command
ChanAccess *highest = access.Highest();
int u_level = (highest ? XOPChanAccess::DetermineLevel(highest) : 0);
- if (((access.HasPriv(CA_FOUNDER) || level >= u_level) || !access.HasPriv(CA_ACCESS_CHANGE)) && !u->HasPriv("chanserv/access/modify"))
+ if ((!access.HasPriv(CA_FOUNDER) && !access.HasPriv(CA_ACCESS_CHANGE) && !u->HasPriv("chanserv/access/modify")) || (level <= u_level && !access.Founder))
{
source.Reply(ACCESS_DENIED);
return;
@@ -328,7 +328,7 @@ class XOPBase : public Command
if (a->mask.equals_ci(mask))
{
- if (XOPChanAccess::DetermineLevel(a) >= u_level && !u->HasPriv("chanserv/access/modify"))
+ if (XOPChanAccess::DetermineLevel(a) >= u_level && !access.Founder && !u->HasPriv("chanserv/access/modify"))
{
source.Reply(ACCESS_DENIED);
return;
@@ -360,7 +360,7 @@ class XOPBase : public Command
acc->created = Anope::CurTime;
ci->AddAccess(acc);
- bool override = level >= u_level || !access.HasPriv(CA_ACCESS_CHANGE);
+ bool override = (level >= u_level && !access.Founder) || !access.HasPriv(CA_ACCESS_CHANGE);
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << mask;
FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, acc));
@@ -512,13 +512,13 @@ class XOPBase : public Command
return;
}
- if (!ci->HasPriv(u, CA_FOUNDER) && !u->HasPriv("chanserv/access/modify"))
+ if (!ci->AccessFor(u).HasPriv(CA_FOUNDER) && !u->HasPriv("chanserv/access/modify"))
{
source.Reply(ACCESS_DENIED);
return;
}
- bool override = !ci->HasPriv(u, CA_FOUNDER);
+ bool override = !ci->AccessFor(u).HasPriv(CA_FOUNDER);
Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR";
for (unsigned i = ci->GetAccessCount(); i > 0; --i)