summaryrefslogtreecommitdiff
path: root/repoze/bfg/router.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-05 02:59:04 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-05 02:59:04 +0000
commit93a4f5df2f74e4cbefc70733f2c0258859207106 (patch)
tree437a2e991d29dc555e6727ef753c5b8059859c40 /repoze/bfg/router.py
parent79957510964157dae99201b1b6a14ef209bc50f7 (diff)
downloadpyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.tar.gz
pyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.tar.bz2
pyramid-93a4f5df2f74e4cbefc70733f2c0258859207106.zip
Add a plug point for a security policy.
Diffstat (limited to 'repoze/bfg/router.py')
-rw-r--r--repoze/bfg/router.py19
1 files changed, 11 insertions, 8 deletions
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 626080bdc..fde50b528 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -8,18 +8,21 @@ from repoze.bfg.interfaces import IWSGIApplicationFactory
from repoze.bfg.interfaces import IWebObRequest
class Router:
- def __init__(self, root_policy, traversal_policy):
+ def __init__(self, root_policy, traversal_policy, security_policy):
self.root_policy = root_policy
self.traversal_policy = traversal_policy
+ self.security_policy = security_policy
def __call__(self, environ, start_response):
root = self.root_policy(environ)
- context, name, subpath = self.traversal_policy(root, environ)
- environ['repoze.bfg.subpath'] = subpath
- request = Request(environ)
- directlyProvides(request, IWebObRequest)
- app = queryMultiAdapter((context, request),
- IWSGIApplicationFactory, name=name)
+ context, name, subpath = self.traversal_policy(environ, root)
+ app = self.security_policy(environ, context, name)
if app is None:
- app = HTTPNotFound(request.url)
+ environ['repoze.bfg.subpath'] = subpath
+ request = Request(environ)
+ directlyProvides(request, IWebObRequest)
+ app = queryMultiAdapter((context, request),
+ IWSGIApplicationFactory, name=name)
+ if app is None:
+ app = HTTPNotFound(request.url)
return app(environ, start_response)