django-simplekeys/simplekeys/middleware.py
2024-12-16 23:04:51 -06:00

34 lines
962 B
Python

import re
from .verifier import verify_request
try:
from django.utils.deprecation import MiddlewareMixin
except ImportError:
MiddlewareMixin = object
class SimpleKeysMiddleware(MiddlewareMixin):
def __init__(self, get_response=None):
self._zones = None
self.get_response = get_response
@property
def zones(self):
if not self._zones:
from django.conf import settings
zones = getattr(settings, 'SIMPLEKEYS_ZONE_PATHS',
[('.*', 'default')])
self._zones = [
((re.compile(path) if isinstance(path, str) else path), zone)
for (path, zone) in zones
]
return self._zones
def process_request(self, request):
for path, zone in self.zones:
if path.match(request.path):
return verify_request(request, zone)
# no paths matched, pass-through
return None