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