aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--backend/discord.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/backend/discord.py b/backend/discord.py
index 4a1ecf5..68aa706 100644
--- a/backend/discord.py
+++ b/backend/discord.py
@@ -151,15 +151,14 @@ async def _verify_access_helper(
return
form = models.Form(**form)
+ role_id_lookup = {role.id: role for role in await get_roles()}
- for role_id in getattr(form, attribute, None) or []:
- role = await request.state.db.roles.find_one({"id": role_id})
- if not role:
- continue
-
- role = models.DiscordRole(**json.loads(role["data"]))
+ for role_name_or_id in getattr(form, attribute, None) or []:
+ if role_name_or_id in request.auth.scopes:
+ return
- if role.name in request.auth.scopes:
+ role = role_id_lookup.get(role_name_or_id)
+ if role and role.name in request.auth.scopes:
return
raise UnauthorizedError(status_code=401)