Revision 8fbf5367 astakos/im/util.py
b/astakos/im/util.py | ||
---|---|---|
124 | 124 |
pass |
125 | 125 |
return invitation |
126 | 126 |
|
127 |
def prepare_response(request, user, next='', renew=False, skip_login=False):
|
|
127 |
def prepare_response(request, user, next='', renew=False): |
|
128 | 128 |
"""Return the unique username and the token |
129 | 129 |
as 'X-Auth-User' and 'X-Auth-Token' headers, |
130 | 130 |
or redirect to the URL provided in 'next' |
... | ... | |
141 | 141 |
user.renew_token() |
142 | 142 |
user.save() |
143 | 143 |
|
144 |
if next: |
|
145 |
# TODO: Avoid redirect loops. |
|
146 |
parts = list(urlsplit(next)) |
|
147 |
if not parts[1] or (parts[1] and request.get_host() != parts[1]): |
|
148 |
parts[3] = urlencode({'user': user.email, 'token': user.auth_token}) |
|
149 |
next = urlunsplit(parts) |
|
150 |
|
|
151 | 144 |
if settings.FORCE_PROFILE_UPDATE and not user.is_verified and not user.is_superuser: |
152 | 145 |
params = '' |
153 | 146 |
if next: |
... | ... | |
156 | 149 |
|
157 | 150 |
response = HttpResponse() |
158 | 151 |
|
159 |
if not skip_login: |
|
160 |
# authenticate before login |
|
161 |
user = authenticate(email=user.email, auth_token=user.auth_token) |
|
162 |
login(request, user) |
|
163 |
# set cookie |
|
164 |
expire_fmt = user.auth_token_expires.strftime('%a, %d-%b-%Y %H:%M:%S %Z') |
|
165 |
cookie_value = quote(user.email + '|' + user.auth_token) |
|
166 |
response.set_cookie(settings.COOKIE_NAME, value=cookie_value, |
|
167 |
expires=expire_fmt, path='/', |
|
168 |
domain = settings.COOKIE_DOMAIN) |
|
152 |
# authenticate before login |
|
153 |
user = authenticate(email=user.email, auth_token=user.auth_token) |
|
154 |
login(request, user) |
|
155 |
# set cookie |
|
156 |
expire_fmt = user.auth_token_expires.strftime('%a, %d-%b-%Y %H:%M:%S %Z') |
|
157 |
cookie_value = quote(user.email + '|' + user.auth_token) |
|
158 |
response.set_cookie(settings.COOKIE_NAME, value=cookie_value, |
|
159 |
expires=expire_fmt, path='/', |
|
160 |
domain = settings.COOKIE_DOMAIN) |
|
169 | 161 |
|
170 | 162 |
if not next: |
171 | 163 |
next = reverse('astakos.im.views.index') |
172 | 164 |
|
173 | 165 |
response['Location'] = next |
174 | 166 |
response.status_code = 302 |
175 |
return response |
|
167 |
return response |
Also available in: Unified diff