Add channel_access.py
, to give permissions to users in a channel (similar to
chanserv)
This commit is contained in:
parent
d10a6d94c1
commit
a94d35f0f1
1 changed files with 62 additions and 0 deletions
62
modules/channel_access.py
Normal file
62
modules/channel_access.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
from src import ModuleManager, utils
|
||||
|
||||
class Module(ModuleManager.BaseModule):
|
||||
_name = "ChanAccess"
|
||||
|
||||
@utils.hook("preprocess.command")
|
||||
def preprocess_command(self, event):
|
||||
require_access = event["hook"].get_kwarg("require_access")
|
||||
if event["is_channel"] and require_access:
|
||||
access = event["target"].get_user_setting(event["user"].id,
|
||||
"access", [])
|
||||
identified_account = event["user"].get_identified_account()
|
||||
|
||||
if not require_access in access or not identified_account:
|
||||
return "You do not have permission to do this"
|
||||
else:
|
||||
return utils.consts.PERMISSION_FORCE_SUCCESS
|
||||
|
||||
@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.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.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.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)
|
||||
event["target"].set_user_setting(target.id, "access", access)
|
||||
event["stdout"].write("Removed permission from %s: %s" % (
|
||||
target.nickname, " ".join(event["args_split"][2:])))
|
Loading…
Reference in a new issue