From da0cde7800ae1a0c050ddd387f5de9ca9b61c977 Mon Sep 17 00:00:00 2001 From: Louis Chauvet Date: Sun, 5 Apr 2020 12:23:02 +0200 Subject: [PATCH] =?UTF-8?q?[base-auth]=20R=C3=A9paration=20de=20l'auth,=20?= =?UTF-8?q?ajout=20de=20la=20possibilit=C3=A9=20de=20limiter=20l'authentif?= =?UTF-8?q?ication=20=C3=A0=20un=20seul=20server,=20casse=20la=20config=20?= =?UTF-8?q?"owner"=20maintenant=20c'est=20"admin=5Froles"=20et=20"admin=5F?= =?UTF-8?q?users"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 2 +- modules/base/Base.py | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/main.py b/main.py index d5b8ac9..7409df6 100644 --- a/main.py +++ b/main.py @@ -236,7 +236,7 @@ class LBI(discord.Client): # Content: {"module_name": {"module": imported module, "class": initialized class}} self.modules = {} self.config = config - self.config.init({"modules": ["modules", "errors"], "prefix": "%", "owners": []}) + self.config.init({"modules": ["modules", "errors"], "prefix": "%", "admin_roles": [], "admin_users": []}) self.load_modules() @modules_edit diff --git a/modules/base/Base.py b/modules/base/Base.py index 9fe5c24..ee99ece 100644 --- a/modules/base/Base.py +++ b/modules/base/Base.py @@ -51,28 +51,31 @@ class BaseClass: inline=False) await channel.send(embed=embed) - async def auth(self, user: discord.User, role_list: List[int] = None, user_list: List[int] = None): + async def auth(self, user: discord.User, role_list: List[int] = None, user_list: List[int] = None, + guild: int = None): """ Return True if user is an owner of the bot or in authorized_users or he have a role in authorized_roles. + :param user: User to check :param user_list: List of authorized users, if not specified use self.authorized_users :param role_list: list of authorized roles, if not specified use self.authorized_roles + :param guild: Specific guild to search role :type user_list: List[Int] :type role_list: List[Int] + :type guild: Int :type user: discord.User """ - if role_list is None: - role_list = self.config["authorized_roles"] if user_list is None: - user_list = self.config["authorized_users"] - if len(role_list) == 0 and len(user_list) == 0: - # Everyone can use this command - return True - if user.id in self.client.config["owners"]: - return True + user_list = self.config.authorized_users + self.client.config.admin_users if user.id in user_list: return True - for guild in self.client.guilds: + if role_list is None: + role_list = self.config.authorized_roles + self.client.config.admin_roles + if guild is None: + guilds = self.client.guilds + else: + guilds = [guild] + for guild in guilds: if guild.get_member(user.id): for role_id in role_list: if role_id in [r.id for r in guild.get_member(user.id).roles]: