]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/config/middleware.py
We have pie charts.
[bluechips.git] / bluechips / config / middleware.py
index c8c62fdc5a917ad8ecd55e68896446af0ba578b2..15983584c3f48bd61d5ca12d94417fe64a18155d 100644 (file)
@@ -3,6 +3,7 @@ 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
@@ -13,7 +14,8 @@ 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
@@ -40,8 +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)
+    if not asbool(app_conf.get('noauth')):
+        app = authkit.authorize.middleware(app, BlueChipUser())
     
     # Routing/Session/Cache Middleware
     app = RoutesMiddleware(app, config['routes.map'])
@@ -54,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)
@@ -66,4 +68,7 @@ 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])
+    if not asbool(app_conf.get('noauth')):
+        app = AuthBasicHandler(app, 'BlueChips', authenticate)
+        app = DummyAuthenticate(app, app_conf)
     return app