]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/config/middleware.py
We have pie charts.
[bluechips.git] / bluechips / config / middleware.py
index e3cd2da6f9021ea54572be0a5066200915c77d07..15983584c3f48bd61d5ca12d94417fe64a18155d 100644 (file)
@@ -3,18 +3,20 @@ 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, StaticJavascripts, \
-    StatusCodeRedirect
+from pylons.middleware import ErrorHandler, StatusCodeRedirect
 from pylons.wsgiapp import PylonsApp
 from routes.middleware import RoutesMiddleware
-from paste import httpexceptions
 
-from tw.api import make_middleware
+import authkit.authorize
 
 from bluechips.config.environment import load_environment
 
+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,29 +42,24 @@ def make_app(global_conf, full_stack=True, **app_conf):
     app = PylonsApp()
     
     # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
-    app = httpexceptions.make_middleware(app, global_conf)
+    if not asbool(app_conf.get('noauth')):
+        app = authkit.authorize.middleware(app, BlueChipUser())
     
     # Routing/Session/Cache Middleware
     app = RoutesMiddleware(app, config['routes.map'])
     app = SessionMiddleware(app, config)
     app = CacheMiddleware(app, config)
     
-    app = make_middleware(app, {
-            'toscawidgets.framework': 'pylons',
-            'toscawidgets.framework.default_view': 'mako',
-            'toscawidgets.middleware.inject_resources': True
-            })
-    
     if asbool(full_stack):
         # Handle Python exceptions
         app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
 
         # 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)
@@ -71,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