From e9b49b8e9ea216fca02d8c1c97614a8aa5cba7d2 Mon Sep 17 00:00:00 2001 From: Matt Wright Date: Thu, 12 Jul 2012 14:25:10 -0400 Subject: [PATCH] clean up --- flask_security/decorators.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/flask_security/decorators.py b/flask_security/decorators.py index c5a100f..5750689 100644 --- a/flask_security/decorators.py +++ b/flask_security/decorators.py @@ -11,7 +11,7 @@ from functools import wraps -from flask import current_app as app, Response, request, redirect +from flask import current_app, Response, request, redirect from flask.ext.login import login_required, login_url, current_user from flask.ext.principal import RoleNeed, Permission from werkzeug.local import LocalProxy @@ -21,7 +21,9 @@ from .exceptions import UserNotFoundError # Convenient references -_security = LocalProxy(lambda: app.security) +_security = LocalProxy(lambda: current_app.security) + +_logger = LocalProxy(lambda: current_app.logger) _default_unauthorized_txt = """ @@ -45,8 +47,8 @@ def _get_unauthorized_view(): def _check_token(): - header_key = app.security.token_authentication_header - args_key = app.security.token_authentication_key + header_key = _security.token_authentication_header + args_key = _security.token_authentication_key header_token = request.headers.get(header_key, None) token = request.args.get(args_key, header_token) @@ -55,7 +57,7 @@ def _check_token(): try: data = serializer.loads(token) - user = app.security.datastore.find_user(id=data[0], + user = _security.datastore.find_user(id=data[0], authentication_token=token) if data[1] != utils.md5(user.email): @@ -71,11 +73,11 @@ def _check_http_auth(): auth = request.authorization or dict(username=None, password=None) try: - user = app.security.datastore.find_user(email=auth.username) + user = _security.datastore.find_user(email=auth.username) except UserNotFoundError: return False - return app.security.pwd_context.verify(auth.password, user.password) + return _security.pwd_context.verify(auth.password, user.password) def http_auth_required(realm): @@ -102,6 +104,7 @@ def http_auth_required(realm): def auth_token_required(fn): """Decorator that protects endpoints using token authentication.""" + @wraps(fn) def decorated(*args, **kwargs): if _check_token(): @@ -135,8 +138,8 @@ def roles_required(*roles): for perm in perms: if not perm.can(): - app.logger.debug('Identity does not provide the ' - 'roles: %s' % [r for r in roles]) + _logger.debug('Identity does not provide the ' + 'roles: %s' % [r for r in roles]) return _get_unauthorized_view() @@ -174,8 +177,8 @@ def roles_accepted(*roles): r1 = [r for r in roles] r2 = [r.name for r in current_user.roles] - app.logger.debug('Current user does not provide a ' - 'required role. Accepted: %s Provided: %s' % (r1, r2)) + _logger.debug('Current user does not provide a required role. ' + 'Accepted: %s Provided: %s' % (r1, r2)) return _get_unauthorized_view()