diff options
Diffstat (limited to 'modules/channel_access.py')
| -rw-r--r-- | modules/channel_access.py | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/modules/channel_access.py b/modules/channel_access.py deleted file mode 100644 index 5502db9f..00000000 --- a/modules/channel_access.py +++ /dev/null @@ -1,91 +0,0 @@ -#--depends-on check_mode -#--depends-on commands -#--depends-on permissions - -from src import ModuleManager, utils - -class Module(ModuleManager.BaseModule): - _name = "ChanAccess" - - def _has_channel_access(self, target, user, require_access): - access = target.get_user_setting(user.get_id(), "access", []) - identified = self.exports.get_one("is-identified")(user) - - return (require_access in access or "*" in access) and identified - - def _command_check(self, event, target, require_access): - if event["is_channel"]: - if require_access: - if self._has_channel_access(target, event["user"], - require_access): - return utils.consts.PERMISSION_FORCE_SUCCESS, None - else: - return (utils.consts.PERMISSION_ERROR, - "You do not have permission to do this") - - @utils.hook("preprocess.command") - def preprocess_command(self, event): - require_access = event["hook"].get_kwarg("require_access") - if require_access: - return self._command_check(event, event["target"], require_access) - - @utils.hook("check.command.channel-access") - def check_command(self, event): - target = event["target"] - access = event["request_args"][0] - if len(event["request_args"]) > 1: - target = event["request_args"][0] - access = event["request_args"][1] - - return self._command_check(event, target, access) - - @utils.hook("received.command.access", min_args=1, channel_only=True) - def access(self, event): - """ - :help: Show/modify channel access for a user - :usage: list <nickname> - :usage: add <nickname> <permission1 permission2 ...> - :usage: remove <nickname> <permission1 permission2 ...> - :usage: set <nickname> <permission1 permission2 ...> - :require_mode: high - """ - subcommand = event["args_split"][0].lower() - target = event["server"].get_user(event["args_split"][1]) - access = event["target"].get_user_setting(target.get_id(), "access", []) - - if subcommand == "list": - event["stdout"].write("Access for %s: %s" % (target.nickname, - " ".join(access))) - elif subcommand == "set": - if not len(event["args_split"]) > 2: - raise utils.EventError("Please provide a list of permissions") - event["target"].set_user_setting(target.get_id(), "access", - event["args_split"][2:]) - elif subcommand == "add": - if not len(event["args_split"]) > 2: - raise utils.EventError("Please provide a list of permissions") - for acc in event["args_split"][2:]: - if acc in access: - raise utils.EventError("%s already has '%s' permission" % ( - target.nickname, acc)) - access.append(acc) - event["target"].set_user_setting(target.get_id(), "access", access) - event["stdout"].write("Added permission to %s: %s" % ( - target.nickname, " ".join(event["args_split"][2:]))) - elif subcommand == "remove": - if not len(event["args_split"]) > 2: - raise utils.EventError("Please provide a list of permissions") - for acc in event["args_split"][2:]: - if not acc in access: - raise utils.EventError("%s does not have '%s' permission" % - (target.nickname, acc)) - access.remove(acc) - if access: - event["target"].set_user_setting(target.get_id(), "access", - access) - else: - event["target"].del_user_setting(target.get_id(), "access") - event["stdout"].write("Removed permission from %s: %s" % ( - target.nickname, " ".join(event["args_split"][2:]))) - else: - event["stderr"].write("Unknown command '%s'" % subcommand) |
