# -*- encoding: utf-8 -*- import time import keycloak_oidc.views class KeycloakSessionRefreshMiddleware(object): def __init__(self, get_response): self.get_response = get_response # One-time configuration and initialization. def __call__(self, request): # Code to be executed for each request before # the view (and later middleware) are called. refresh_expires_at = request.session.get('refresh_expires_at',None) #print("refresh_expires_at", refresh_expires_at, time.time()) if refresh_expires_at is not None: if refresh_expires_at - time.time() < 5*60: # 5 minutes before expiration rslt = keycloak_oidc.views.renew_session(request) if rslt != 0: # renew not successful return keycloak_oidc.views.logout(request, multiSessionFound=False) return self.get_response(request)