add check.command.permission and check.command.authenticated callbacks

This commit is contained in:
jesopo 2019-11-26 15:32:24 +00:00
parent e4a5bd01e9
commit 14c30c4c05
2 changed files with 21 additions and 11 deletions

View file

@ -150,13 +150,11 @@ class Module(ModuleManager.BaseModule):
raise ConfigSettingInexistent() raise ConfigSettingInexistent()
@utils.hook("received.command.c", alias_of="config") @utils.hook("received.command.c", alias_of="config")
@utils.hook("received.command.config", min_args=1) @utils.hook("received.command.config")
@utils.kwarg("min_args", 1)
@utils.kwarg("help", "Change config options")
@utils.kwarg("usage", "<context>[:name] [-][setting [value]]")
def config(self, event): def config(self, event):
"""
:help: Change config options
:usage: <context>[:name] [-][setting [value]]
"""
arg_count = len(event["args_split"]) arg_count = len(event["args_split"])
context_desc, _, name = event["args_split"][0].partition(":") context_desc, _, name = event["args_split"][0].partition(":")

View file

@ -317,6 +317,12 @@ class Module(ModuleManager.BaseModule):
else: else:
raise utils.EventError("Unknown subcommand %s" % subcommand) raise utils.EventError("Unknown subcommand %s" % subcommand)
def _assert(self, allowed):
if allowed:
return utils.consts.PERMISSION_FORCE_SUCCESS, None
else:
return utils.consts.PERMISSION_ERROR, NO_PERMISSION
@utils.hook("preprocess.command") @utils.hook("preprocess.command")
def preprocess_command(self, event): def preprocess_command(self, event):
allowed = None allowed = None
@ -326,9 +332,15 @@ class Module(ModuleManager.BaseModule):
allowed = self._has_permission(event["user"], permission) allowed = self._has_permission(event["user"], permission)
elif authenticated: elif authenticated:
allowed = self._is_identified(event["user"]) allowed = self._is_identified(event["user"])
else:
return
if not allowed == None: return self._assert(allowed)
if allowed:
return utils.consts.PERMISSION_FORCE_SUCCESS, None @utils.hook("check.command.permission")
else: def check_permission(self, event):
return utils.consts.PERMISSION_ERROR, NO_PERMISSION return self._assert(
self._has_permission(event["user"], event["request_args"][0]))
@utils.hook("check.command.authenticated")
def check_authenticated(self, event):
return self._assert(self._is_identified(event["user"]))