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