def tack_environ(environ, msg): import pprint penv = pprint.pformat(environ) return msg + '\n\n' + penv def deny(start_response, environ, msg): ct = 'text/plain' msg = tack_environ(environ, msg) cl = str(len(msg)) start_response('401 Unauthorized', [ ('Content-Type', ct), ('Content-Length', cl) ], ) def allow(start_response, environ, msg): ct = 'text/plain' msg = tack_environ(environ, msg) cl = str(len(msg)) start_response('200 OK', [ ('Content-Type', ct), ('Content-Length', cl) ], ) return [msg] def app(environ, start_response): path_info = environ['PATH_INFO'] remote_user = environ.get('REMOTE_USER') if path_info.endswith('/shared'): if not remote_user: return deny(start_response, environ, 'You cant do that') else: return allow(start_response, environ, 'Welcome to the shared area, %s' % remote_user) elif path_info.endswith('/admin'): if remote_user != 'admin': return deny(start_response, environ, 'Only admin can do that') else: return allow(start_response, environ, 'Hello, admin!') elif path_info.endswith('/chris'): if remote_user != 'chris': return deny(start_response, environ, 'Only chris can do that') else: return allow(start_response, environ, 'Hello, chris!') else: return allow(start_response, environ, 'Unprotected page') def make_app(global_config, **kw): return app