aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_opflags.cpp
diff options
context:
space:
mode:
authorGravatar Daniel De Graaf2010-08-06 20:01:03 -0400
committerGravatar Daniel De Graaf2010-08-06 20:01:03 -0400
commit2b981924b99ef6703ff26d5782b3e1a5656237a4 (patch)
treeeac0681e0075d2b0e5bcc92d3b92e1ee78f5bf1c /src/modules/m_opflags.cpp
parentFix incorrect test in m_restrictchans (diff)
Fix the permissions code to be a bit less confusing
Diffstat (limited to 'src/modules/m_opflags.cpp')
-rw-r--r--src/modules/m_opflags.cpp24
1 files changed, 6 insertions, 18 deletions
diff --git a/src/modules/m_opflags.cpp b/src/modules/m_opflags.cpp
index daba838c6..9d3d884dd 100644
--- a/src/modules/m_opflags.cpp
+++ b/src/modules/m_opflags.cpp
@@ -54,27 +54,15 @@ class OpFlagProviderImpl : public OpFlagProvider
return v;
}
- ModResult PermissionCheck(Membership* memb, const std::string& needed)
+ bool PermissionCheck(Membership* memb, const std::string& needed)
{
- if (!memb)
- return MOD_RES_DENY;
-
- if (needed.empty())
- return MOD_RES_PASSTHRU;
+ if (!memb || needed.empty())
+ return false;
std::string* mine = ext.get(memb);
irc::commasepstream flags(needed);
std::string flag;
- if (flags.GetToken(flag))
- {
- ModeHandler* privmh = flag.length() == 1 ?
- ServerInstance->Modes->FindMode(flag[0], MODETYPE_CHANNEL) :
- ServerInstance->Modes->FindMode(flag);
- unsigned int neededrank = privmh ? privmh->GetPrefixRank() : INT_MAX;
- if (neededrank && memb->getRank() >= neededrank)
- return MOD_RES_ALLOW;
- }
while (flags.GetToken(flag))
{
@@ -83,10 +71,10 @@ class OpFlagProviderImpl : public OpFlagProvider
while (myflags.GetToken(myflag))
{
if (flag == myflag)
- return MOD_RES_ALLOW;
+ return true;
}
}
- return MOD_RES_DENY;
+ return false;
}
};
@@ -237,7 +225,7 @@ class ModuleOpFlags : public Module
if (perm.chan && perm.source && perm.result == MOD_RES_PASSTHRU)
{
Membership* memb = perm.chan->GetUser(perm.source);
- if (cmd.prov.PermissionCheck(memb, perm.name) == MOD_RES_ALLOW)
+ if (cmd.prov.PermissionCheck(memb, perm.name))
perm.result = MOD_RES_ALLOW;
}
}