]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/config/middleware.py
Introduce a new "noauth" config option and deprecate fake_username.
[bluechips.git] / bluechips / config / middleware.py
index b13fe9a703bb81ec677ae2f5a5276663504d2eee..e52eb3a8a5f59067fd6476205a9de3ec7d69267f 100644 (file)
@@ -3,18 +3,19 @@ from beaker.middleware import CacheMiddleware, SessionMiddleware
 from paste.cascade import Cascade
 from paste.registry import RegistryManager
 from paste.urlparser import StaticURLParser
+from paste.auth.basic import AuthBasicHandler
 from paste.deploy.converters import asbool
 from pylons import config
 from pylons.middleware import ErrorHandler, StatusCodeRedirect
 from pylons.wsgiapp import PylonsApp
 from routes.middleware import RoutesMiddleware
-from paste import httpexceptions
 
 import authkit.authorize
 
 from bluechips.config.environment import load_environment
 
-from bluechips.lib.permissions import BlueChipUser, DummyAuthenticate
+from bluechips.lib.permissions import (BlueChipUser, DummyAuthenticate,
+                                       authenticate)
 
 def make_app(global_conf, full_stack=True, **app_conf):
     """Create a Pylons WSGI application and return it
@@ -41,9 +42,8 @@ def make_app(global_conf, full_stack=True, **app_conf):
     app = PylonsApp()
     
     # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
-    app = authkit.authorize.middleware(app, BlueChipUser())
-    app = DummyAuthenticate(app, app_conf)
-    app = httpexceptions.make_middleware(app, global_conf)
+    if not app_conf.get('noauth', False):
+        app = authkit.authorize.middleware(app, BlueChipUser())
     
     # Routing/Session/Cache Middleware
     app = RoutesMiddleware(app, config['routes.map'])
@@ -56,10 +56,10 @@ def make_app(global_conf, full_stack=True, **app_conf):
 
         # Display error documents for 401, 403, 404 status codes (and
         # 500 when debug is disabled)
-        if asbool(config['debug']):
-            app = StatusCodeRedirect(app)
-        else:
-            app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
+        status_codes = [400, 401, 403, 404]
+        if not asbool(config.get('debug')):
+            status_codes.append(500)
+        app = StatusCodeRedirect(app, status_codes)
 
     # Establish the Registry for this application
     app = RegistryManager(app)
@@ -68,4 +68,6 @@ def make_app(global_conf, full_stack=True, **app_conf):
     # server is handling this static content, remove the following 3 lines)
     static_app = StaticURLParser(config['pylons.paths']['static_files'])
     app = Cascade([static_app, app])
+    app = AuthBasicHandler(app, 'BlueChips', authenticate)
+    app = DummyAuthenticate(app, app_conf)
     return app