X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Flib%2Fpermissions.py;h=4a30fdc3e0c66b59ab27bc7b866aa1b6eb276ca4;hb=a59d19c0581702321ebb6f89ab20f158cdc9d7bc;hp=143ed28d5a7a1759045f5d74d8d925723a5ad3f4;hpb=9a97b86940f328801195917c3d5fa0db3ecb03b3;p=bluechips.git diff --git a/bluechips/lib/permissions.py b/bluechips/lib/permissions.py index 143ed28..4a30fdc 100644 --- a/bluechips/lib/permissions.py +++ b/bluechips/lib/permissions.py @@ -3,24 +3,21 @@ authkit authorization permission objects for BlueChips """ from authkit.authenticate import AddDictToEnviron -from authkit.authorize import NotAuthorizedError +from authkit.authorize import NotAuthenticatedError, NotAuthorizedError from authkit.permissions import RequestPermission -from sqlalchemy.exceptions import InvalidRequestError - from bluechips import model from bluechips.model import meta class BlueChipUser(RequestPermission): def check(self, app, environ, start_response): if 'REMOTE_USER' not in environ: - raise NotAuthenticatedError('Not Authenticated') - try: - environ['user'] = meta.Session.query(model.User).\ - filter_by(username=environ['REMOTE_USER']).\ - one() - except InvalidRequestError: - raise NotAuthorizedError('You are not allowed access.') + raise NotAuthenticatedError('Not Authenticated') # pragma: nocover + environ['user'] = meta.Session.query(model.User).\ + filter_by(username=unicode(environ['REMOTE_USER'])).\ + first() + if environ['user'] == None: + raise NotAuthorizedError('You are not allowed access.') # pragma: nocover return app(environ, start_response) class DummyAuthenticate(AddDictToEnviron): @@ -28,8 +25,12 @@ class DummyAuthenticate(AddDictToEnviron): Set the authkit.authenticate environment variable so authkit.authorize shuts up """ - def __init__(self, app): - super(DummyAuthenticate, self).__init__(app, { - 'authkit.authenticate': True}) + def __init__(self, app, app_conf): + newenv = {} + newenv['authkit.authenticate'] = True + newenv['authkit.config'] = {'setup.enable': True} + if 'fake_username' in app_conf: + newenv['REMOTE_USER'] = app_conf['fake_username'] + super(DummyAuthenticate, self).__init__(app, newenv) __all__ = ['BlueChipUser', 'DummyAuthenticate']