Fix broken capability checking and extend with some hierarchy checking
This commit is contained in:
parent
24a296c2d8
commit
8290296373
|
@ -55,13 +55,21 @@ tz = 'UTC'
|
|||
def now():
|
||||
return cPickle.dumps(datetime.datetime.now(pytz.timezone(tz)))
|
||||
|
||||
|
||||
def capab(user, capability):
|
||||
try:
|
||||
if capability in list(user.capabilities):
|
||||
capability = capability.lower()
|
||||
capabilities = list(user.capabilities)
|
||||
# Capability hierarchy #
|
||||
if capability == "bantracker":
|
||||
if capab(user.name, "admin"):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except:
|
||||
if capability == "admin":
|
||||
if capab(user.name, "owner"):
|
||||
return True
|
||||
# End #
|
||||
if capability in capabilities:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def hostmaskPatternEqual(pattern, hostmask):
|
||||
|
@ -531,7 +539,7 @@ class Bantracker(callbacks.Plugin):
|
|||
|
||||
hostmask = self.nick_to_host(irc, target)
|
||||
data = self.sort_bans(channel)
|
||||
if 'owner' in list(user.capabilities) or 'admin' in list(user.capabilities):
|
||||
if capab(user, 'admin'):
|
||||
if len(queue.msgcache) > 0:
|
||||
irc.reply("Warning: still syncing (%i)" % len(queue.msgcache))
|
||||
|
||||
|
@ -560,7 +568,7 @@ class Bantracker(callbacks.Plugin):
|
|||
|
||||
for i in ret:
|
||||
irc.reply("Match: %s by %s in %s on %s (ID: %s)" % (i[0] + (i[1],)))
|
||||
if 'botmsg' in list(user.capabilities):
|
||||
if capab(user, 'botmsg'):
|
||||
if target.split('!', 1)[0] != '*':
|
||||
irc.reply("%s/bans.cgi?log=%s&mark=%s" % (self.registryValue('bansite'), i[1], target.split('!')[0]), private=True)
|
||||
else:
|
||||
|
@ -697,7 +705,7 @@ class Bantracker(callbacks.Plugin):
|
|||
user = self.check_auth(irc, msg, args)
|
||||
if not user:
|
||||
return
|
||||
if 'botmsg' in list(user.capabilities):
|
||||
if capab(user, 'botmsg'):
|
||||
user.removeCapability('botmsg')
|
||||
irc.reply("Disabled")
|
||||
else:
|
||||
|
|
|
@ -64,17 +64,31 @@ def queue(irc, to, msg):
|
|||
irc.queueMsg(ircmsgs.privmsg(to, msg))
|
||||
|
||||
def capab(prefix, capability):
|
||||
capability = capability.lower()
|
||||
if prefix.find('!') > 0:
|
||||
user = prefix[:prefix.find('!')]
|
||||
else:
|
||||
user = prefix
|
||||
try:
|
||||
if 'editfactoids' in list(ircdb.users.getUser(prefix).capabilities):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
user = ircdb.users.getUser(prefix)
|
||||
capabilities = list(user.capabilities)
|
||||
except:
|
||||
return False
|
||||
# Capability hierarchy #
|
||||
if capability == "editfactoids":
|
||||
if capab(user.name, "addeditors"):
|
||||
return True
|
||||
if capability == "addeditors":
|
||||
if capab(user.name, "admin"):
|
||||
return True
|
||||
if capability == "admin":
|
||||
if capab(user.name, "owner"):
|
||||
return True
|
||||
# End #
|
||||
if capability in capabilities:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
class Encyclopedia(callbacks.Plugin):
|
||||
"""!factoid: show factoid"""
|
||||
|
@ -128,8 +142,7 @@ class Encyclopedia(callbacks.Plugin):
|
|||
|
||||
Lists all the users who are in the list of editors.
|
||||
"""
|
||||
irc.reply(', '.join([ircdb.users.getUser(u).name for u in ircdb.users.users \
|
||||
if 'editfactoids' in ircdb.users.getUser(u).capabilities]), private=True)
|
||||
irc.reply(', '.join([u.name for u in ircdb.users.users.values() if capab(u.name, "editfactoids")]), private=True)
|
||||
editors = wrap(editors)
|
||||
|
||||
def moderators(self, irc, msg, args):
|
||||
|
@ -137,8 +150,7 @@ class Encyclopedia(callbacks.Plugin):
|
|||
|
||||
Lists all the users who can add users to the list of editors.
|
||||
"""
|
||||
irc.reply(', '.join([ircdb.users.getUser(u).name for u in ircdb.users.users \
|
||||
if 'addeditors' in ircdb.users.getUser(u).capabilities]), private=True)
|
||||
irc.reply(', '.join([u.name for u in ircdb.users.users.values() if capab(u.name, 'addeditors')]), private=True)
|
||||
moderators = wrap(moderators)
|
||||
|
||||
def get_target(self, nick, text, orig_target):
|
||||
|
|
Loading…
Reference in New Issue