Have the index use the same abort method
This commit is contained in:
parent
aa5f669e69
commit
30a26d099f
3 changed files with 32 additions and 25 deletions
|
@ -2,7 +2,7 @@ import json
|
||||||
import logging
|
import logging
|
||||||
import urlparse
|
import urlparse
|
||||||
|
|
||||||
from flask import request, make_response, jsonify, abort, session, Blueprint
|
from flask import request, make_response, jsonify, abort as flask_abort, session, Blueprint
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from data import model
|
from data import model
|
||||||
|
@ -16,6 +16,8 @@ from auth.permissions import (ModifyRepositoryPermission, UserPermission,
|
||||||
ReadRepositoryPermission,
|
ReadRepositoryPermission,
|
||||||
CreateRepositoryPermission)
|
CreateRepositoryPermission)
|
||||||
|
|
||||||
|
from util.http import abort
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
index = Blueprint('index', __name__)
|
index = Blueprint('index', __name__)
|
||||||
|
|
|
@ -10,8 +10,9 @@ from time import time
|
||||||
from data.queue import image_diff_queue
|
from data.queue import image_diff_queue
|
||||||
|
|
||||||
from app import app
|
from app import app
|
||||||
from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token
|
from auth.auth import process_auth, extract_namespace_repo_from_session
|
||||||
from util import checksums, changes
|
from util import checksums, changes
|
||||||
|
from util.http import abort
|
||||||
from auth.permissions import (ReadRepositoryPermission,
|
from auth.permissions import (ReadRepositoryPermission,
|
||||||
ModifyRepositoryPermission)
|
ModifyRepositoryPermission)
|
||||||
from data import model
|
from data import model
|
||||||
|
@ -21,10 +22,6 @@ registry = Blueprint('registry', __name__)
|
||||||
store = app.config['STORAGE']
|
store = app.config['STORAGE']
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEFAULT_MESSAGE = {}
|
|
||||||
DEFAULT_MESSAGE[400] = 'Invalid Request'
|
|
||||||
DEFAULT_MESSAGE[403] = 'Forbidden'
|
|
||||||
DEFAULT_MESSAGE[404] = 'Not Found'
|
|
||||||
|
|
||||||
@registry.errorhandler(404)
|
@registry.errorhandler(404)
|
||||||
def fallback_not_found(e):
|
def fallback_not_found(e):
|
||||||
|
@ -38,25 +35,6 @@ def fallback_forbidden(e):
|
||||||
def fallback_invalid_request(e):
|
def fallback_invalid_request(e):
|
||||||
return make_response('Invalid Request', 400)
|
return make_response('Invalid Request', 400)
|
||||||
|
|
||||||
def abort(status_code, message=None, **kwargs):
|
|
||||||
if status_code == 403 and not message:
|
|
||||||
# Create a default error message for auth failure.
|
|
||||||
message = 'Forbidden. '
|
|
||||||
auth_user = get_authenticated_user()
|
|
||||||
auth_token = get_validated_token()
|
|
||||||
if auth_user:
|
|
||||||
message = message + 'Current user: ' + auth_user
|
|
||||||
elif auth_token:
|
|
||||||
message = message + 'Current token: ' + auth_token
|
|
||||||
|
|
||||||
message = message % kwargs if message else DEFAULT_MESSAGE[status_code]
|
|
||||||
|
|
||||||
# Log the abort.
|
|
||||||
log.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args))
|
|
||||||
|
|
||||||
# Report the abort to the user.
|
|
||||||
flask_abort(make_response(HTTPException(message), status_code, headers))
|
|
||||||
|
|
||||||
|
|
||||||
class SocketReader(object):
|
class SocketReader(object):
|
||||||
def __init__(self, fp):
|
def __init__(self, fp):
|
||||||
|
|
27
util/http.py
Normal file
27
util/http.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
from flask import request, abort as flask_abort
|
||||||
|
from auth.auth import process_auth, extract_namespace_repo_from_session, get_authenticated_user, get_validated_token
|
||||||
|
|
||||||
|
DEFAULT_MESSAGE = {}
|
||||||
|
DEFAULT_MESSAGE[400] = 'Invalid Request'
|
||||||
|
DEFAULT_MESSAGE[403] = 'Forbidden'
|
||||||
|
DEFAULT_MESSAGE[404] = 'Not Found'
|
||||||
|
|
||||||
|
def abort(status_code, message=None, **kwargs):
|
||||||
|
if status_code == 403 and not message:
|
||||||
|
# Create a default error message for auth failure.
|
||||||
|
message = 'Forbidden. '
|
||||||
|
auth_user = get_authenticated_user()
|
||||||
|
auth_token = get_validated_token()
|
||||||
|
if auth_user:
|
||||||
|
message = message + 'Current user: ' + auth_user
|
||||||
|
elif auth_token:
|
||||||
|
message = message + 'Current token: ' + auth_token
|
||||||
|
|
||||||
|
message = message % kwargs if message else DEFAULT_MESSAGE[status_code]
|
||||||
|
|
||||||
|
# Log the abort.
|
||||||
|
log.error('Error %s: %s. Arguments: %s' % (status_code, message, request.view_args))
|
||||||
|
|
||||||
|
# Report the abort to the user.
|
||||||
|
flask_abort(make_response(HTTPException(message), status_code, headers))
|
||||||
|
|
Reference in a new issue