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()
@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):
"""
:help: Change config options
:usage: <context>[:name] [-][setting [value]]
"""
arg_count = len(event["args_split"])
context_desc, _, name = event["args_split"][0].partition(":")

View file

@ -317,6 +317,12 @@ class Module(ModuleManager.BaseModule):
else:
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")
def preprocess_command(self, event):
allowed = None
@ -326,9 +332,15 @@ class Module(ModuleManager.BaseModule):
allowed = self._has_permission(event["user"], permission)
elif authenticated:
allowed = self._is_identified(event["user"])
else:
return
if not allowed == None:
if allowed:
return utils.consts.PERMISSION_FORCE_SUCCESS, None
else:
return utils.consts.PERMISSION_ERROR, NO_PERMISSION
return self._assert(allowed)
@utils.hook("check.command.permission")
def check_permission(self, event):
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"]))