from .models import UserActionLog
from django.utils.deprecation import MiddlewareMixin

class UserActionLoggingMiddleware(MiddlewareMixin):
    def process_view(self, request, view_func, view_args, view_kwargs):
        if request.user.is_authenticated:
            action = f"Accessed {view_func.__name__}"
            path = request.path
            method = request.method
            ip_address = self.get_client_ip(request)

            UserActionLog.objects.create(
                user=request.user,
                action=action,
                path=path,
                method=method,
                ip_address=ip_address
            )

    def get_client_ip(self, request):
        x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
        if x_forwarded_for:
            ip = x_forwarded_for.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
        return ip
