Revision 1ecda536
b/snf-astakos-app/astakos/im/tests/auth.py | ||
---|---|---|
465 | 465 |
'password2': 'password', 'first_name': 'Kostas', |
466 | 466 |
'last_name': 'Mitroglou', 'provider': 'local'} |
467 | 467 |
r = self.client.post(ui_url("signup"), data, follow=True) |
468 |
self.assertRedirects(r, reverse('index'))
|
|
468 |
self.assertRedirects(r, reverse('login'))
|
|
469 | 469 |
self.assertContains(r, messages.VERIFICATION_SENT) |
470 | 470 |
|
471 | 471 |
user = AstakosUser.objects.get() |
... | ... | |
517 | 517 |
user = AstakosUser.objects.get(pk=user.pk) |
518 | 518 |
self.assertEqual(len(get_mailbox(self.helpdesk_email)), 0) |
519 | 519 |
r = self.client.get(user.get_activation_url(), follow=True) |
520 |
self.assertRedirects(r, reverse('index'))
|
|
520 |
self.assertRedirects(r, reverse('login'))
|
|
521 | 521 |
# user sees that account is pending approval from admins |
522 | 522 |
self.assertContains(r, messages.NOTIFICATION_SENT) |
523 | 523 |
self.assertEqual(len(get_mailbox(self.helpdesk_email)), 1) |
... | ... | |
545 | 545 |
self.assertTrue(quote(user.auth_token) in |
546 | 546 |
cookies.get('_pithos2_a').value) |
547 | 547 |
r = self.client.get(ui_url('logout'), follow=True) |
548 |
r = self.client.get(ui_url('')) |
|
548 |
r = self.client.get(ui_url(''), follow=True) |
|
549 |
self.assertRedirects(r, ui_url('login')) |
|
549 | 550 |
# user logged out, token cookie removed |
550 | 551 |
self.assertFalse(r.context['request'].user.is_authenticated()) |
551 | 552 |
self.assertFalse(self.client.cookies.get('_pithos2_a').value) |
... | ... | |
1325 | 1326 |
# not authenticated, redirects to login which contains next param with |
1326 | 1327 |
# additional nested quoted next params |
1327 | 1328 |
r = self.client.get(valid_scheme, follow=True) |
1328 |
login_redirect = reverse('index') + '?next=' + \
|
|
1329 |
login_redirect = reverse('login') + '?next=' + \
|
|
1329 | 1330 |
urllib.quote_plus("http://testserver" + valid_scheme_quoted) |
1330 | 1331 |
self.assertRedirects(r, login_redirect) |
1331 | 1332 |
|
b/snf-astakos-app/astakos/im/urls.py | ||
---|---|---|
43 | 43 |
urlpatterns = patterns( |
44 | 44 |
'astakos.im.views', |
45 | 45 |
url(r'^$', 'index', {}, name='index'), |
46 |
url(r'^login/?$', 'index', {}, name='login'),
|
|
46 |
url(r'^login/?$', 'login', {}, name='login'),
|
|
47 | 47 |
url(r'^landing/?$', 'landing', {}, name='landing'), |
48 | 48 |
url(r'^profile/update_token?$', 'update_token', {}, name='update_token'), |
49 | 49 |
url(r'^profile/?$','edit_profile', {}, name='edit_profile'), |
b/snf-astakos-app/astakos/im/views/im.py | ||
---|---|---|
79 | 79 |
@require_http_methods(["GET", "POST"]) |
80 | 80 |
@cookie_fix |
81 | 81 |
@signed_terms_required |
82 |
def index(request, login_template_name='im/login.html', profile_template_name='im/profile.html', extra_context=None):
|
|
82 |
def login(request, template_name='im/login.html', extra_context=None):
|
|
83 | 83 |
""" |
84 |
If there is logged on user renders the profile page otherwise renders login page.
|
|
84 |
Renders login page.
|
|
85 | 85 |
|
86 | 86 |
**Arguments** |
87 | 87 |
|
88 |
``login_template_name``
|
|
88 |
``template_name`` |
|
89 | 89 |
A custom login template to use. This is optional; if not specified, |
90 | 90 |
this will default to ``im/login.html``. |
91 | 91 |
|
92 |
``profile_template_name`` |
|
93 |
A custom profile template to use. This is optional; if not specified, |
|
94 |
this will default to ``im/profile.html``. |
|
95 |
|
|
96 | 92 |
``extra_context`` |
97 | 93 |
An dictionary of variables to add to the template context. |
98 |
|
|
99 |
**Template:** |
|
100 |
|
|
101 |
im/profile.html or im/login.html or ``template_name`` keyword argument. |
|
102 |
|
|
103 | 94 |
""" |
95 |
|
|
104 | 96 |
extra_context = extra_context or {} |
105 |
template_name = login_template_name |
|
106 |
if request.user.is_authenticated(): |
|
107 |
return HttpResponseRedirect(reverse('landing')) |
|
108 | 97 |
|
109 | 98 |
third_party_token = request.GET.get('key', False) |
110 | 99 |
if third_party_token: |
111 | 100 |
messages.info(request, astakos_messages.AUTH_PROVIDER_LOGIN_TO_ADD) |
112 | 101 |
|
102 |
if request.user.is_authenticated(): |
|
103 |
return HttpResponseRedirect(reverse('landing')) |
|
104 |
|
|
113 | 105 |
return render_response( |
114 | 106 |
template_name, |
115 |
login_form = LoginForm(request=request),
|
|
116 |
context_instance = get_context(request, extra_context)
|
|
107 |
login_form=LoginForm(request=request),
|
|
108 |
context_instance=get_context(request, extra_context)
|
|
117 | 109 |
) |
118 | 110 |
|
119 | 111 |
|
112 |
@require_http_methods(["GET", "POST"]) |
|
113 |
@cookie_fix |
|
114 |
@signed_terms_required |
|
115 |
def index(request, authenticated_redirect='landing', |
|
116 |
anonymous_redirect='login', extra_context=None): |
|
117 |
""" |
|
118 |
If user is authenticated redirect to ``authenticated_redirect`` url. |
|
119 |
Otherwise redirects to ``anonymous_redirect`` url. |
|
120 |
|
|
121 |
""" |
|
122 |
if request.user.is_authenticated(): |
|
123 |
return HttpResponseRedirect(reverse(authenticated_redirect)) |
|
124 |
return HttpResponseRedirect(reverse(anonymous_redirect)) |
|
125 |
|
|
126 |
|
|
120 | 127 |
@require_http_methods(["POST"]) |
121 | 128 |
@cookie_fix |
122 | 129 |
@valid_astakos_user_required |
b/snf-astakos-app/astakos/im/views/target/redirect.py | ||
---|---|---|
133 | 133 |
next = urlunsplit(parts) |
134 | 134 |
|
135 | 135 |
# build url location |
136 |
parts[2] = reverse('index')
|
|
136 |
parts[2] = reverse('login')
|
|
137 | 137 |
params = {'next': next} |
138 | 138 |
parts[3] = urlencode(params) |
139 | 139 |
url = urlunsplit(parts) |
Also available in: Unified diff