diff options
| author | 2016-04-06 18:23:02 +0100 | |
|---|---|---|
| committer | 2016-04-06 18:23:02 +0100 | |
| commit | eac1d127bd4ab658b5e8c42f5c9d499c93cb92d5 (patch) | |
| tree | f718dbcf7d29302352698663ee7a96f361edacff /modules/permissions.py | |
| parent | made 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.py | 13 |
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" |
