From 2071a1018053c59d6a0178a7595d56e01df44bab Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 30 Jan 2019 11:16:09 +0000 Subject: Support a way to check user channel access in a private command (channel_access.py) --- modules/channel_access.py | 23 ++++++++++++++++++----- modules/commands.py | 3 ++- 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'modules') diff --git a/modules/channel_access.py b/modules/channel_access.py index 72c8cad5..121e4718 100644 --- a/modules/channel_access.py +++ b/modules/channel_access.py @@ -13,12 +13,25 @@ class Module(ModuleManager.BaseModule): @utils.hook("preprocess.command") def preprocess_command(self, event): require_access = event["hook"].get_kwarg("require_access") - if event["is_channel"] and require_access: - if self._has_channel_access(event["target"], event["user"], - require_access): - return utils.consts.PERMISSION_FORCE_SUCCESS + if event["is_channel"]: + if require_access: + if self._has_channel_access(event["target"], event["user"], + require_access): + return utils.consts.PERMISSION_FORCE_SUCCESS + else: + return "You do not have permission to do this" + else: + channel_arg_index = event["hook"].get_kwarg("channel_arg") + channel_name = event["args_split"][channel_arg_index] + if channel_name in event["server"].channels: + channel = event["server"].channels.get(channel_name) + if self._has_channel_access(channel, event["user"], + require_access): + return utils.consts.PERMISSION_FORCE_SUCCESS + else: + return "You do not have permission to do this" else: - return "You do not have permission to do this" + return "I'm not in that channel" @utils.hook("get.haschannelaccess") def has_channel_access(self, event): diff --git a/modules/commands.py b/modules/commands.py index 7dca06cd..8e3772eb 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -171,7 +171,8 @@ class Module(ModuleManager.BaseModule): returns = self.events.on("preprocess.command").call_unsafe( hook=hook, user=event["user"], server=event["server"], - target=target, is_channel=is_channel, tags=event["tags"]) + target=target, is_channel=is_channel, tags=event["tags"], + args_split=args_split) hard_fail = False force_success = False -- cgit v1.3.1-10-gc9f91