Skip to content

Commit

Permalink
Merge branch 'master' into update-url
Browse files Browse the repository at this point in the history
 Conflicts:
	CHANGELOG.md
  • Loading branch information
Minglee01 committed Jun 5, 2017
2 parents b3d0217 + 30765e2 commit 4ce7692
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

* Allow VerifyUserEmailView get_redirect_url function to accept an extra string.

* Allow user login after email verification providing a setting is true in an apps settings file.
This works in Django 1.10.

## 16.0.1

* Fix email verification when `LOGIN_URL` is a url name.
Expand Down
15 changes: 15 additions & 0 deletions user_management/ui/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from user_management.models.tests.factories import VerifyEmailUserFactory
from user_management.models.tests.models import VerifyEmailUser
from user_management.models.tests.utils import RequestTestCase

from .. import views


Expand Down Expand Up @@ -32,6 +33,20 @@ def test_get(self):
str(request._messages.store[0]),
)

@override_settings(LOGIN_ON_EMAIL_VERIFICATION=True)
def test_auto_login_get(self):
"""A user is automatically logged in when they activate their account."""
user = VerifyEmailUserFactory.create(email_verified=False)
token = user.generate_validation_token()

request = self.create_request('get', auth=False)
self.add_session_to_request(request)

view = self.view_class.as_view()
view(request, token=token)

self.assertEqual(int(request.session['_auth_user_id']), user.pk)

@override_settings(LOGIN_URL='login')
def test_get_named_login_url(self):
"""A user clicks the link in their email and activates their account."""
Expand Down
7 changes: 6 additions & 1 deletion user_management/ui/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.conf import settings
from django.contrib import messages
from django.contrib import auth, messages
from django.shortcuts import resolve_url
from django.utils.translation import ugettext_lazy as _
from django.views import generic
Expand Down Expand Up @@ -44,7 +44,12 @@ def dispatch(self, request, *args, **kwargs):
return super(VerifyUserEmailView, self).dispatch(request, *args, **kwargs)

def get(self, request, *args, **kwargs):
auto_login = getattr(settings, 'LOGIN_ON_EMAIL_VERIFICATION', False)

if not self.already_verified:
self.activate_user()
if auto_login is True:
self.user.backend = settings.AUTHENTICATION_BACKENDS[0]
auth.login(request=request, user=self.user)
messages.success(request, self.success_message)
return super(VerifyUserEmailView, self).get(request, *args, **kwargs)

0 comments on commit 4ce7692

Please sign in to comment.