1
2 from pkg_resources import EntryPoint
3
5 def _predicate(environ):
6 return 'REMOTE_USER' in environ or 'repoze.who.identity' in environ
7 return _predicate
8
10
11 - def __init__(self, app, predicate, enabled=True, **kw):
12 self.app = app
13 self.enabled = enabled
14 options = kw.copy()
15 self.predicate = predicate(**options)
16
17 - def __call__(self, environ, start_response):
18 if self.enabled:
19 if not self.predicate(environ):
20 start_response('401 Unauthorized', ())
21 return []
22 return self.app(environ, start_response)
23
26
29 if isinstance(predicate, basestring):
30 predicate = EntryPoint.parse('x=%s' % predicate).load(False)
31 return PredicateRestriction(app, predicate, enabled, **kw)
32