haikal/inventory/middleware.py
2025-02-19 13:56:19 +00:00

69 lines
2.0 KiB
Python

import logging
from inventory import models
from django.utils import timezone
from django.shortcuts import redirect
from django.urls import reverse
from inventory.utils import get_user_type
logger = logging.getLogger('user_activity')
class LogUserActivityMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if request.user.is_authenticated:
action = f"{request.method} {request.path}"
models.UserActivityLog.objects.create(
user=request.user,
action=action,
timestamp=timezone.now()
)
return response
def get_client_ip(self, request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
return x_forwarded_for.split(',')[0]
return request.META.get('REMOTE_ADDR')
class InjectParamsMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
try:
# request.entity = request.user.dealer.entity
request.dealer = get_user_type(request)
except Exception as e:
pass
response = self.get_response(request)
return response
class InjectDealerMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
try:
dealer = get_user_type(request)
request.user.dealer = dealer
except Exception as e:
pass
response = self.get_response(request)
return response
# class OTPVerificationMiddleware:
# def __init__(self, get_response):
# self.get_response = get_response
#
# def __call__(self, request):
# if request.user.is_authenticated and not request.session.get('otp_verified', False):
# return redirect(reverse('verify_otp'))
# return self.get_response(request)