haikal/inventory/middleware.py
Marwan Alwali 6af5249454 update
2025-03-06 23:27:04 +03:00

79 lines
2.4 KiB
Python

import logging
from django.conf import settings
from inventory import models
from django.utils import timezone
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.deprecation import MiddlewareMixin
from fpdf import FPDF
import os
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:
request.is_dealer = False
request.is_staff = False
if hasattr(request.user, "dealer"):
request.is_dealer = True
if hasattr(request.user, "staffmember"):
request.is_staff = True
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)