Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

User model extender for django

Project description

Django-User-Email-Extension

Django application that extends User module, and provides email verification process.

Install

pip install django-user-email-extension

Add to installed apps, and email provider details:

import os

INSTALLED_APPS = [
    # ...
    'django_user_email_extension',
    # ...
]

###############################
# Define the default user model 
###############################
AUTH_USER_MODEL = 'django_user_email_extension.User'

# if set then users age will be validated for minimal age (in years)
USER_MINIMAL_AGE = int(os.environ.get('USER_MINIMAL_AGE', None))

# if set, used address cannot be saved with non verified phone number
ENFORCE_USER_ADDRESS_VERIFIED_PHONE = int(os.environ.get('ENFORCE_USER_ADDRESS_VERIFIED_PHONE', False)) 

EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = os.environ.get('email_host')
EMAIL_PORT = os.environ.get('email_port')
EMAIL_HOST_USER = os.environ.get('email_username')
EMAIL_HOST_PASSWORD = os.environ.get('email_password')

# optional, if not set, verification email will never expire.
DJANGO_EMAIL_VERIFIER_EXPIRE_TIME = 24  # In Hours

Run migrations:

python3 manage.py makemigrations
python3 manage.py migrate

Usage Example

use:

from django.contrib.auth import get_user_model

User = get_user_model()

user_object = User.objects.create_user(
    email='EMAIL',
    password='PASSWORD'
)

# .save() must be called
# this option has been modified so extra action could be executed before final user creation
user_object.save()

# user is a Django User object
user_object.create_verification_email()

# Send the verification email
user_object.send_verification_email(
    subject=subject,
    body=body,  # *** view body example below to contain the unique UUID
    from_mail=EMAIL_HOST_USER
)

Then when user click the link (from the body sent via email)

# make sure url is getting a uuid key in urls.py
path('verify_account/<uuid:verification_uuid>/', views.VerifyEmailUUIDView.as_view(), name='verify_account')

# initiate verification process on the return view
ver_uuid = DjangoEmailVerifier.objects.get(verification_uuid='UUID_FROM_REQUEST')
ver_uuid.verify_record()

The confirmation uuid can be sent as part of the body for example:

body = 'Follow this link to verify your account: https://nalkins.cloud' + \
       '%s' % reverse('verify_account',
                      kwargs={'uuid': str(user_object.get_uuid_of_email())})

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-user-email-extension, version 2.2.1
Filename, size File type Python version Upload date Hashes
Filename, size django_user_email_extension-2.2.1-py3-none-any.whl (34.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size django-user-email-extension-2.2.1.tar.gz (27.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page