1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
from pyramid.response import Response
from pyramid.security import Allowed, Denied
class SecurityPolicy:
def identify(self, request):
return self.authenticated_userid(request)
def authenticated_userid(self, request):
return request.environ.get('REMOTE_USER')
def permits(self, request, context, identity, permission):
userid = self.authenticated_userid(request)
if userid and permission == 'foo':
return Allowed('')
else:
return Denied('')
def remember(self, request, userid, **kw):
raise NotImplementedError() # pragma: no cover
def forget(self, request, **kw):
raise NotImplementedError() # pragma: no cover
def public(context, request):
return Response('Hello')
def private(context, request):
return Response('Secret')
def inaccessible(context, request):
raise AssertionError() # pragma: no cover
def includeme(config):
config.set_security_policy(SecurityPolicy())
config.add_route('public', '/public')
config.add_view(public, route_name='public')
config.add_route('private', '/private')
config.add_view(private, route_name='private', permission='foo')
config.add_route('inaccessible', '/inaccessible')
config.add_view(inaccessible, route_name='inaccessible', permission='bar')
|