34 lines
962 B
Python
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
|