aboutsummaryrefslogtreecommitdiffstats
path: root/backend/authentication/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/authentication/user.py')
-rw-r--r--backend/authentication/user.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/backend/authentication/user.py b/backend/authentication/user.py
index a1d78e5..52baa61 100644
--- a/backend/authentication/user.py
+++ b/backend/authentication/user.py
@@ -2,6 +2,7 @@ import typing as t
import jwt
from starlette.authentication import BaseUser
+from starlette.requests import Request
from backend.constants import SECRET_KEY
from backend.discord import fetch_user_details
@@ -13,6 +14,7 @@ class User(BaseUser):
def __init__(self, token: str, payload: dict[str, t.Any]) -> None:
self.token = token
self.payload = payload
+ self.admin = False
@property
def is_authenticated(self) -> bool:
@@ -32,6 +34,13 @@ class User(BaseUser):
def decoded_token(self) -> dict[str, any]:
return jwt.decode(self.token, SECRET_KEY, algorithms=["HS256"])
+ def fetch_admin_status(self, request: Request) -> bool:
+ self.admin = request.state.db.admins.find_one(
+ {"_id": self.payload["id"]}
+ ) is not None
+
+ return self.admin
+
async def refresh_data(self) -> None:
"""Fetches user data from discord, and updates the instance."""
self.payload = await fetch_user_details(self.decoded_token.get("token"))