aboutsummaryrefslogtreecommitdiff
path: root/modules/permissions.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-08-02 23:00:42 +0100
committerGravatar jesopo2018-08-02 23:00:42 +0100
commit84ea92fea8604bbb6218bf39db5acaa26a9ae8a9 (patch)
tree494843254f92c5b1208a53caa633ad64ccbff78f /modules/permissions.py
parentAdded missing ")" in print_activity.py (diff)
signature
get user permissions every time they try to use a command that requires
permissions, instead of caching their permissions when they sign in
Diffstat (limited to 'modules/permissions.py')
-rw-r--r--modules/permissions.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/modules/permissions.py b/modules/permissions.py
index dac33a67..1c0c165c 100644
--- a/modules/permissions.py
+++ b/modules/permissions.py
@@ -42,11 +42,9 @@ class Module(object):
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:
@@ -89,10 +87,14 @@ class Module(object):
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"
+ if permission:
+ identified = event["user"].identified
+ user_permissions = event["user"].get_setting("permissions", [])
+ has_permission = permission and (
+ permission in user_permissions or "*" in user_permissions)
+ if not identified or not has_permission:
+ return "You do not have permission to do that"
def my_permissions(self, event):
- permissions = event["user"].permissions
+ permissions = event["user"].get_setting("permissions", [])
event["stdout"].write("Your permissions: %s" % ", ".join(permissions))