Revision 5ce3ce4f snf-astakos-app/astakos/im/target/redirect.py
b/snf-astakos-app/astakos/im/target/redirect.py | ||
---|---|---|
48 | 48 |
|
49 | 49 |
logger = logging.getLogger(__name__) |
50 | 50 |
|
51 |
|
|
51 | 52 |
def login(request): |
52 | 53 |
""" |
53 | 54 |
If there is no ``next`` request parameter redirects to astakos index page |
... | ... | |
75 | 76 |
# delete force parameter |
76 | 77 |
parts[3] = urlencode(params) |
77 | 78 |
next = urlunsplit(parts) |
78 |
|
|
79 |
|
|
79 | 80 |
# build url location |
80 | 81 |
parts[2] = reverse('latest_terms') |
81 |
params = {'next':next} |
|
82 |
params = {'next': next}
|
|
82 | 83 |
parts[3] = urlencode(params) |
83 | 84 |
url = urlunsplit(parts) |
84 | 85 |
response['Location'] = url |
... | ... | |
93 | 94 |
return HttpResponseBadRequest(e) |
94 | 95 |
# authenticate before login |
95 | 96 |
user = authenticate(email=request.user.email, |
96 |
auth_token=request.user.auth_token |
|
97 |
) |
|
97 |
auth_token=request.user.auth_token
|
|
98 |
)
|
|
98 | 99 |
auth_login(request, user) |
99 | 100 |
set_cookie(response, user) |
100 | 101 |
logger.info('Token reset for %s' % request.user.email) |
101 | 102 |
parts = list(urlsplit(next)) |
102 | 103 |
parts[3] = urlencode({'user': request.user.email, |
103 |
'token': request.user.auth_token |
|
104 |
} |
|
105 |
) |
|
104 |
'token': request.user.auth_token
|
|
105 |
}
|
|
106 |
)
|
|
106 | 107 |
url = urlunsplit(parts) |
107 | 108 |
response['Location'] = url |
108 | 109 |
response.status_code = 302 |
109 | 110 |
return response |
110 | 111 |
else: |
111 | 112 |
# redirect to login with next the request path |
112 |
|
|
113 |
|
|
113 | 114 |
# first build next parameter |
114 | 115 |
parts = list(urlsplit(request.build_absolute_uri())) |
115 | 116 |
params = dict(parse_qsl(parts[3], keep_blank_values=True)) |
... | ... | |
118 | 119 |
del params['force'] |
119 | 120 |
parts[3] = urlencode(params) |
120 | 121 |
next = urlunsplit(parts) |
121 |
|
|
122 |
|
|
122 | 123 |
# build url location |
123 | 124 |
parts[2] = reverse('index') |
124 |
params = {'next':next} |
|
125 |
params = {'next': next}
|
|
125 | 126 |
parts[3] = urlencode(params) |
126 | 127 |
url = urlunsplit(parts) |
127 | 128 |
response['Location'] = url |
128 | 129 |
response.status_code = 302 |
129 |
return response |
|
130 |
return response |
Also available in: Unified diff