initial commit

This commit is contained in:
2024-12-17 13:07:06 -08:00
commit 3a3382ffff
183 changed files with 186691 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
# your_app/middleware.py
from channels.db import database_sync_to_async
from rest_framework.authtoken.models import Token
from django.contrib.auth.models import AnonymousUser
from urllib.parse import parse_qs
class QueryAuthMiddleware:
"""
Custom middleware to authenticate users using a token passed in the WebSocket URL query string.
"""
def __init__(self, inner):
self.inner = inner
async def __call__(self, scope, receive, send):
query_string = scope["query_string"].decode()
query_params = parse_qs(query_string)
token_key = query_params.get("token", [None])[0]
if token_key:
try:
token = await database_sync_to_async(Token.objects.get)(key=token_key)
scope["user"] = token.user
except Token.DoesNotExist:
scope["user"] = AnonymousUser()
else:
scope["user"] = AnonymousUser()
return await self.inner(scope, receive, send)