Package repoze :: Package who :: Module restrict
[hide private]

Source Code for Module repoze.who.restrict

 1  # Authorization middleware 
 2  from pkg_resources import EntryPoint 
 3   
4 -def authenticated_predicate():
5 def _predicate(environ): 6 return 'REMOTE_USER' in environ or 'repoze.who.identity' in environ
7 return _predicate 8
9 -class PredicateRestriction:
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
24 -def make_authenticated_restriction(app, global_config, enabled=True):
25 return PredicateRestriction(app, authenticated_predicate, enabled)
26
27 -def make_predicate_restriction(app, global_config, 28 predicate, enabled=True, **kw):
29 if isinstance(predicate, basestring): 30 predicate = EntryPoint.parse('x=%s' % predicate).load(False) 31 return PredicateRestriction(app, predicate, enabled, **kw)
32