diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:59:04 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-05 02:59:04 +0000 |
| commit | 93a4f5df2f74e4cbefc70733f2c0258859207106 (patch) | |
| tree | 437a2e991d29dc555e6727ef753c5b8059859c40 /repoze/bfg/router.py | |
| parent | 79957510964157dae99201b1b6a14ef209bc50f7 (diff) | |
| download | pyramid-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.py | 19 |
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) |
