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
|
from pyramid.authentication import RemoteUserAuthenticationPolicy
from pyramid.response import Response
from pyramid.security import Allowed, Denied
class AuthorizationPolicy:
def permits(self, context, principals, permission):
if 'bob' in principals and permission == 'foo':
return Allowed('')
else:
return Denied('')
def principals_allowed_by_permission(self, context, permission):
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_authentication_policy(RemoteUserAuthenticationPolicy())
config.set_authorization_policy(AuthorizationPolicy())
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')
|