middleware.py
950 Bytes
"""
Middleware to register a log event for a session expire
Called before session_security package clears the session and log out the user
"""
from datetime import datetime, timedelta
from session_security.settings import EXPIRE_AFTER
from session_security.utils import get_last_activity, set_last_activity
from log.models import Log
class SessionExpireMiddleware(object):
def process_request(self, request):
if not request.user.is_authenticated():
return
now = datetime.now()
if '_session_security' not in request.session:
return
delta = now - get_last_activity(request.session)
expire_seconds = EXPIRE_AFTER
if delta >= timedelta(seconds = expire_seconds):
log = Log()
log.user = str(request.user)
log.user_id = request.user.id
log.user_email = request.user.email
log.context = {'condition': 'session_expire'}
log.component = "user"
log.action = "logout"
log.resource = "system"
log.save()