Seperate out access checking logic so we can call across-modules with the event
system to check if users have specific channel access (channel_access.py)
This commit is contained in:
parent
bdeaf7b69e
commit
e0722dfc8a
1 changed files with 15 additions and 6 deletions
|
@ -3,20 +3,29 @@ from src import ModuleManager, utils
|
||||||
class Module(ModuleManager.BaseModule):
|
class Module(ModuleManager.BaseModule):
|
||||||
_name = "ChanAccess"
|
_name = "ChanAccess"
|
||||||
|
|
||||||
|
def _has_channel_access(self, target, user, require_access):
|
||||||
|
access = event["target"].get_user_setting(event["user"].get_id(),
|
||||||
|
"access", [])
|
||||||
|
identified_account = event["user"].get_identified_account()
|
||||||
|
|
||||||
|
return ((require_access in access or "*" in access
|
||||||
|
) and identified_account)
|
||||||
|
|
||||||
@utils.hook("preprocess.command")
|
@utils.hook("preprocess.command")
|
||||||
def preprocess_command(self, event):
|
def preprocess_command(self, event):
|
||||||
require_access = event["hook"].get_kwarg("require_access")
|
require_access = event["hook"].get_kwarg("require_access")
|
||||||
if event["is_channel"] and require_access:
|
if event["is_channel"] and require_access:
|
||||||
access = event["target"].get_user_setting(event["user"].get_id(),
|
if self._has_channel_access(event["target"], event["user"],
|
||||||
"access", [])
|
require_access):
|
||||||
identified_account = event["user"].get_identified_account()
|
|
||||||
|
|
||||||
if ((require_access in access or "*" in access) and
|
|
||||||
identified_account):
|
|
||||||
return utils.consts.PERMISSION_FORCE_SUCCESS
|
return utils.consts.PERMISSION_FORCE_SUCCESS
|
||||||
else:
|
else:
|
||||||
return "You do not have permission to do this"
|
return "You do not have permission to do this"
|
||||||
|
|
||||||
|
@utils.hook("get.haschannelaccess")
|
||||||
|
def has_channel_access(self, event):
|
||||||
|
return self._has_channel_access(event["target"], event["user"],
|
||||||
|
event["access"])
|
||||||
|
|
||||||
@utils.hook("received.command.access", min_args=1, channel_only=True)
|
@utils.hook("received.command.access", min_args=1, channel_only=True)
|
||||||
def access(self, event):
|
def access(self, event):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue