diff options
author | Adam <Adam@anope.org> | 2011-08-01 22:37:27 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-08-01 22:37:27 -0400 |
commit | f7adc0b35b50f06706872a161f1c7476e6e6981e (patch) | |
tree | 91fbe281f2772136a327fd4fc4c64740d1ab65ab /modules/core/cs_mode.cpp | |
parent | 710c02f3bd3581b7c5b3d48e7604756975219fc8 (diff) |
Rewrote the access systems and added a flags access system
Diffstat (limited to 'modules/core/cs_mode.cpp')
-rw-r--r-- | modules/core/cs_mode.cpp | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/modules/core/cs_mode.cpp b/modules/core/cs_mode.cpp index 23bd9e577..e67abd85a 100644 --- a/modules/core/cs_mode.cpp +++ b/modules/core/cs_mode.cpp @@ -20,15 +20,15 @@ class CommandCSMode : public Command switch (mode) { case CMODE_OWNER: - return check_access(u, ci, CA_OWNER); + return ci->HasPriv(u, CA_OWNER); case CMODE_PROTECT: - return check_access(u, ci, CA_PROTECT); + return ci->HasPriv(u, CA_PROTECT); case CMODE_OP: - return check_access(u, ci, CA_OPDEOP); + return ci->HasPriv(u, CA_OPDEOP); case CMODE_HALFOP: - return check_access(u, ci, CA_HALFOP); + return ci->HasPriv(u, CA_HALFOP); case CMODE_VOICE: - return check_access(u, ci, CA_VOICE); + return ci->HasPriv(u, CA_VOICE); default: break; } @@ -228,8 +228,7 @@ class CommandCSMode : public Command break; } - ChanAccess *u_access = ci->GetAccess(u); - int16 u_level = u_access ? u_access->level : 0; + AccessGroup u_access = ci->AccessFor(u); if (str_is_wildcard(param)) { @@ -237,10 +236,9 @@ class CommandCSMode : public Command { UserContainer *uc = *it; - ChanAccess *targ_access = ci->GetAccess(uc->user); - int16 t_level = targ_access ? targ_access->level : 0; + AccessGroup targ_access = ci->AccessFor(uc->user); - if (t_level > u_level) + if (targ_access > u_access) { source.Reply(_("You do not have the access to change %s's modes."), uc->user->nick.c_str()); continue; @@ -260,9 +258,8 @@ class CommandCSMode : public Command User *target = finduser(param); if (target != NULL) { - ChanAccess *targ_access = ci->GetAccess(target); - int16 t_level = targ_access ? targ_access->level : 0; - if (t_level > u_level) + AccessGroup targ_access = ci->AccessFor(target); + if (targ_access > u_access) { source.Reply(_("You do not have the access to change %s's modes."), target->nick.c_str()); break; @@ -314,7 +311,7 @@ class CommandCSMode : public Command if (!ci || !ci->c) source.Reply(CHAN_X_NOT_IN_USE, ci->name.c_str()); - else if (!check_access(u, ci, CA_MODE) && !u->HasCommand("chanserv/chanserv/mode")) + else if (!ci->HasPriv(u, CA_MODE) && !u->HasCommand("chanserv/chanserv/mode")) source.Reply(ACCESS_DENIED); else if (subcommand.equals_ci("LOCK")) this->DoLock(source, ci, params); |