.BANCHO. New privileges system, add restricted mode

This commit is contained in:
Nyo
2016-07-03 20:51:19 +02:00
parent 99276d83b3
commit 6ac3b853f4
16 changed files with 291 additions and 116 deletions

View File

@@ -47,16 +47,10 @@ def fokabotResponse(fro, chan, message):
# message has triggered a command
# Make sure the user has right permissions
if i["rank"] != None:
if i["privileges"] != None:
# Rank = x
if userHelper.getRankPrivileges(userHelper.getID(fro)) != i["rank"]:
if userHelper.getPrivileges(userHelper.getID(fro)) & i["privileges"] == 0:
return False
else:
# Rank > x
if i["minRank"] > 1:
# Get rank from db only if minrank > 1, so we save some CPU
if userHelper.getRankPrivileges(userHelper.getID(fro)) < i["minRank"]:
return False
# Check argument number
message = message.split(" ")

View File

@@ -8,6 +8,7 @@ from objects import glob
import uuid
import time
import threading
from helpers import logHelper as log
class token:
"""
@@ -16,7 +17,6 @@ class token:
token -- token string
userID -- userID associated to that token
username -- username relative to userID (cache)
rank -- rank (permissions) relative to userID (cache)
actionID -- current user action (see actions.py)
actionText -- current user action text
actionMd5 -- md5 relative to user action
@@ -47,7 +47,11 @@ class token:
# Set stuff
self.userID = __userID
self.username = userHelper.getUsername(self.userID)
self.rank = userHelper.getRankPrivileges(self.userID)
self.privileges = userHelper.getPrivileges(self.userID)
self.admin = userHelper.isInPrivilegeGroup(self.userID, "developer") or userHelper.isInPrivilegeGroup(self.userID, "community manager")
self.restricted = userHelper.isRestricted(self.userID)
if self.restricted == True:
self.setRestricted()
self.loginTime = int(time.time())
self.pingTime = self.loginTime
self.lock = threading.Lock() # Sync primitive
@@ -69,7 +73,6 @@ class token:
# Spam protection
self.spamRate = 0
#self.lastMessagetime = 0
# Stats cache
self.actionID = actions.idle
@@ -295,3 +298,11 @@ class token:
self.totalScore = stats["totalScore"]
self.gameRank = stats["gameRank"]
self.pp = stats["pp"]
def setRestricted(self):
"""
Set this token as restricted, send FokaBot message to user
and send offline packet to everyone
"""
self.restricted = True
self.enqueue(serverPackets.sendMessage("FokaBot", self.username, "Your account is currently in restricted mode. Please visit ripple's website for more information."))