diff options
| author | 2010-08-06 20:01:03 -0400 | |
|---|---|---|
| committer | 2010-08-06 20:01:03 -0400 | |
| commit | 2b981924b99ef6703ff26d5782b3e1a5656237a4 (patch) | |
| tree | eac0681e0075d2b0e5bcc92d3b92e1ee78f5bf1c /src/modules/m_opflags.cpp | |
| parent | Fix 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.cpp | 24 |
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; } } |
