1
0
mirror of https://github.com/Eugeny/tabby-web.git synced 2025-07-22 02:48:03 +00:00
Files
.github
backend
node_modules
tabby
app
__init__.py
middleware.py
settings.py
urls.py
wsgi.py
.flake8
.gitignore
gunicorn.conf.py
manage.py
manage.sh
poetry.lock
pyproject.toml
start.sh
yarn.lock
docs
frontend
.bumpversion.cfg
.dockerignore
.editorconfig
.flake8
.gitignore
Dockerfile
LICENSE
README.md
docker-compose.yml
tabby-web/backend/tabby/middleware.py
Eugene Pankov 99264d2bfc lint
2022-11-07 18:56:10 +01:00

54 lines
1.7 KiB
Python

import logging
from tabby.app.models import User
from django.conf import settings
from django.contrib.auth import login
from pyga.requests import Tracker, Page, Session, Visitor
class BaseMiddleware:
def __init__(self, get_response):
self.get_response = get_response
class TokenMiddleware(BaseMiddleware):
def __call__(self, request):
token_value = None
if "auth_token" in request.GET:
token_value = request.GET["auth_token"]
if request.META.get("HTTP_AUTHORIZATION"):
token_type, *credentials = request.META["HTTP_AUTHORIZATION"].split()
if token_type == "Bearer" and len(credentials):
token_value = credentials[0]
user = User.objects.filter(config_sync_token=token_value).first()
if user:
request.session.save = lambda *args, **kwargs: None
setattr(user, "backend", "django.contrib.auth.backends.ModelBackend")
login(request, user)
setattr(request, "_dont_enforce_csrf_checks", True)
response = self.get_response(request)
if user:
response.set_cookie = lambda *args, **kwargs: None
return response
class GAMiddleware(BaseMiddleware):
def __init__(self, get_response):
super().__init__(get_response)
if settings.GA_ID:
self.tracker = Tracker(settings.GA_ID, settings.GA_DOMAIN)
def __call__(self, request):
response = self.get_response(request)
if settings.GA_ID and request.path in ["/", "/app"]:
try:
self.tracker.track_pageview(Page(request.path), Session(), Visitor())
except Exception:
logging.exception()
return response