v2: send proper scopes for authorization failures

Fixes #1278.
This commit is contained in:
Jimmy Zelinskie 2016-03-09 18:09:20 -05:00
parent bb46cc933d
commit ea2e17cc11
9 changed files with 91 additions and 71 deletions

View file

@ -5,25 +5,23 @@ import datetime
import os
import re
# Register the various exceptions via decorators.
import endpoints.decorated
from random import SystemRandom
from functools import wraps
from cachetools import lru_cache
from flask import make_response, render_template, request, abort, session
from flask.ext.login import login_user
from flask.ext.principal import identity_changed
from random import SystemRandom
from cachetools import lru_cache
from app import app, oauth_apps, LoginWrappedDBUser
from auth.permissions import QuayDeferredPermissionUser
from auth import scopes
from functools import wraps
from config import frontend_visible_config
from external_libraries import get_external_javascript, get_external_css
from util.secscan import PRIORITY_LEVELS
from util.names import parse_namespace_repository
import endpoints.decorated # Register the various exceptions via decorators.
import features
logger = logging.getLogger(__name__)
@ -55,21 +53,19 @@ def parse_repository_name(include_tag=False,
def inner(func):
@wraps(func)
def wrapper(*args, **kwargs):
parsed_stuff = parse_namespace_repository(kwargs[incoming_repo_kwarg],
app.config['LIBRARY_NAMESPACE'],
include_tag=include_tag)
repo_name_components = parse_namespace_repository(kwargs[incoming_repo_kwarg],
app.config['LIBRARY_NAMESPACE'],
include_tag=include_tag)
del kwargs[incoming_repo_kwarg]
kwargs[ns_kwarg_name] = parsed_stuff[0]
kwargs[repo_kwarg_name] = parsed_stuff[1]
kwargs[ns_kwarg_name] = repo_name_components[0]
kwargs[repo_kwarg_name] = repo_name_components[1]
if include_tag:
kwargs[tag_kwarg_name] = parsed_stuff[2]
kwargs[tag_kwarg_name] = repo_name_components[2]
return func(*args, **kwargs)
return wrapper
return inner
# TODO get rid of all calls to this parse_repository_name_and_tag
def route_show_if(value):
def decorator(f):
@wraps(f)