diff options
author | 2024-07-28 17:37:39 +0100 | |
---|---|---|
committer | 2024-07-28 17:37:39 +0100 | |
commit | df05afa14faf4c4a445f491c2bf9b34ca9cab7ab (patch) | |
tree | 78594782fc4a3ebd4a65dd461d52611b25ea1456 /backend | |
parent | Update dependency uvicorn to v0.30.3 (#299) (diff) |
Use redis role cache when validating access to form resources
Diffstat (limited to 'backend')
-rw-r--r-- | backend/discord.py | 13 |
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) |