Simple email confirmation for django.
A Django app providing simple email confirmation.
This app can be used to support three types of User models:
- Users have one email address that is stored on the User model
- Users have one primary email address stored on the User model, and have N secondary emails stored in EmailAddress objects
- Users have N email addresses stored in EmailAddress objects.
Add the provided mixin to your django 1.5+ custom user model:
from django.contrib.auth.models import AbstractUser from simple_email_confirmation import SimpleEmailConfirmationUserMixin class User(SimpleEmailConfirmationUserMixin, AbstractUser): pass
then, when creating a new User you probably want to do something like:
user = User.objects.create_user('email@example.com') address = user.add_unconfirmed_email(user.email) confirmation_key = address.key user.is_confirmed # False send_email(user.email, 'Use %s to confirm your email' % confirmation_key) # User gets email, passes the confirmation_key back to your server user.confirm_email(confirmation_key) user.is_confirmed # True
when changing a User’s email, the flow might go:
new_email = 'firstname.lastname@example.org' address = user.add_unconfirmed_email(new_email) confirmation_key = address.key user.is_email_confirmed(new_email) # False send_email(new_email, 'Use %s to confirm your new email' % confirmation_key) # User gets email, passes the confirmation_key back to your server user.confirm_email(confirmation_key) user.is_email_confirmed(new_email) # True user.set_primary_email(new_email) user.email # email@example.com
Running the Tests
mktmpenv pip install django-simple-email-confirmation export DJANGO_SETTINGS_MODULE=simple_email_confirmation.test_project.settings django-admin.py test simple_email_confirmation
Found a Bug?
To file a bug or submit a patch, please head over to django-simple-email-confirmation on github.