Ticket #3583: modpython.py

File modpython.py, 1.5 KB (added by mcallister.sean@…, 18 years ago)

apache authentication via session and authentication framework (using cookies)

Line 
1from mod_python import apache
2import os
3from django.core.handlers.base import BaseHandler
4from django.core.handlers.modpython import ModPythonRequest
5
6class AccessHandler(BaseHandler):
7 def __call__(self, req):
8 from django.conf import settings
9 # set up middleware
10 if self._request_middleware is None:
11 self.load_middleware()
12 # populate the request object
13 request = ModPythonRequest(req)
14 # and apply the middleware to it
15 # actually only session and auth middleware would be needed here
16 for middleware_method in self._request_middleware:
17 middleware_method(request)
18 return request
19
20def accesshandler(req):
21 os.environ.update(req.subprocess_env)
22
23 # check for PythonOptions
24 _str_to_bool = lambda s: s.lower() in ('1', 'true', 'on', 'yes')
25
26 options = req.get_options()
27 permission_name = options.get('DjangoPermissionName', None)
28 staff_only = _str_to_bool(options.get('DjangoRequireStaffStatus', "on"))
29 superuser_only = _str_to_bool(options.get('DjangoRequireSuperuserStatus', "off"))
30 settings_module = options.get('DJANGO_SETTINGS_MODULE', None)
31
32 if settings_module:
33 os.environ['DJANGO_SETTINGS_MODULE'] = settings_module
34
35 request=AccessHandler()(req)
36 if request.user.is_authenticated():
37 if superuser_only and request.user.is_superuser:
38 return apache.OK
39 elif staff_only and request.user.is_staff:
40 return apache.OK
41 elif permission_name and request.user.has_perm(permission_name):
42 return apache.OK
43 return apache.HTTP_UNAUTHORIZED
Back to Top