Proyecto LCX Dispatcharr multicuenta
Base Image Build / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled

This commit is contained in:
root
2026-05-09 21:24:50 +02:00
commit f56b088643
721 changed files with 177870 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
from urllib.parse import parse_qs
from channels.middleware import BaseMiddleware
from channels.db import database_sync_to_async
from rest_framework_simplejwt.tokens import UntypedToken
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth import get_user_model
from rest_framework_simplejwt.exceptions import InvalidToken, TokenError
from rest_framework_simplejwt.authentication import JWTAuthentication
import logging
logger = logging.getLogger(__name__)
User = get_user_model()
@database_sync_to_async
def get_user(validated_token):
try:
jwt_auth = JWTAuthentication()
user = jwt_auth.get_user(validated_token)
return user
except User.DoesNotExist:
logger.warning(f"User from token does not exist. User ID: {validated_token.get('user_id', 'unknown')}")
return AnonymousUser()
except Exception as e:
logger.error(f"Error getting user from token: {str(e)}")
return AnonymousUser()
class JWTAuthMiddleware(BaseMiddleware):
async def __call__(self, scope, receive, send):
try:
# Extract the token from the query string
query_string = parse_qs(scope["query_string"].decode())
token = query_string.get("token", [None])[0]
if token is not None:
try:
validated_token = JWTAuthentication().get_validated_token(token)
scope["user"] = await get_user(validated_token)
except (InvalidToken, TokenError) as e:
logger.warning(f"Invalid token: {str(e)}")
scope["user"] = AnonymousUser()
else:
scope["user"] = AnonymousUser()
except Exception as e:
logger.error(f"Error in JWT authentication: {str(e)}")
scope["user"] = AnonymousUser()
return await super().__call__(scope, receive, send)