aboutsummaryrefslogtreecommitdiff
path: root/modules/permissions.py
diff options
context:
space:
mode:
authorGravatar jesopo2016-04-06 18:23:02 +0100
committerGravatar jesopo2016-04-06 18:23:02 +0100
commiteac1d127bd4ab658b5e8c42f5c9d499c93cb92d5 (patch)
treef718dbcf7d29302352698663ee7a96f361edacff /modules/permissions.py
parentmade some finishing touches to todo.py. (diff)
added the code to prevent users using certain commands based on permissions.
Diffstat (limited to 'modules/permissions.py')
-rw-r--r--modules/permissions.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/modules/permissions.py b/modules/permissions.py
index 0e57efdd..17ca45b6 100644
--- a/modules/permissions.py
+++ b/modules/permissions.py
@@ -5,6 +5,8 @@ class Module(object):
def __init__(self, bot):
self.bot = bot
bot.events.on("new").on("user").hook(self.new_user)
+ bot.events.on("preprocess").on("command").hook(
+ self.preprocess_command)
bot.events.on("received").on("part").hook(self.on_part)
bot.events.on("received").on("command").on("identify"
).hook(self.identify, private_only=True, min_args=1,
@@ -27,18 +29,23 @@ class Module(object):
def _get_hash(self, user):
hash, salt = user.get_setting("authentication", (None, None))
return hash, salt
+
def _make_salt(self):
return base64.b64encode(os.urandom(64)).decode("utf8")
+
def _make_hash(self, password, salt=None):
salt = salt or self._make_salt()
hash = base64.b64encode(scrypt.hash(password, salt)).decode("utf8")
return hash, salt
+
def _identified(self, user):
user.identified = True
user.permissions = user.get_setting("permissions", [])
+
def _logout(self, user):
user.identified = False
user.permissions = []
+
def identify(self, event):
if not event["user"].channels:
event["stderr"].write("You must share at least one channel "
@@ -77,3 +84,9 @@ class Module(object):
event["stdout"].write("You have been logged out")
else:
event["stderr"].write("You are not logged in")
+
+ def preprocess_command(self, event):
+ permission = event["hook"].kwargs.get("permission", None)
+ if permission and not permission in event["user"
+ ].permissions and not "*" in event["user"].permissions:
+ return "You do not have permission to do that"