Revision 63de12cf snf-pithos-app/pithos/api/util.py

b/snf-pithos-app/pithos/api/util.py
1091 1091
                    request.backend.close()
1092 1092
        return wrapper
1093 1093
    return decorator
1094

  
1095

  
1096
def get_token_from_cookie(request):
1097
    assert(request.method == 'GET'),\
1098
        "Cookie based authentication is only allowed to GET requests"
1099
    token = None
1100
    if COOKIE_NAME in request.COOKIES:
1101
        cookie_value = unquote(request.COOKIES.get(COOKIE_NAME, ''))
1102
        account, sep, token = cookie_value.partition('|')
1103
    return token
1104

  
1105

  
1106
def view_method():
1107
    """Decorator function for views."""
1108

  
1109
    def decorator(func):
1110
        @wraps(func)
1111
        def wrapper(request, *args, **kwargs):
1112
            request.META['HTTP_X_AUTH_TOKEN'] = get_token_from_cookie(request)
1113
            # Get the response object
1114
            response = func(request, *args, **kwargs)
1115
            # TODO: support additional success codes
1116
            if response.status_code == 200:
1117
                return response
1118
            else:
1119
                # TODO: raise more specific exceptions
1120
                raise Exception()
1121
        return wrapper
1122
    return decorator

Also available in: Unified diff