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.activate_user()
The confirmation uuid can be sent as part of the body for example:
body = 'Follow this link to verify your account: https://nalkins.cloud{}'.format(
reverse('verify_account', kwargs={'verification_uuid': str(user_object.get_uuid_of_email())})
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file django_user_email_extension-2.6.1-py3-none-any.whl
.
File metadata
- Download URL: django_user_email_extension-2.6.1-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1aa6faaa58ecbe3e18d6f0428b0d6e915841b43fd422d82064d9b9fa25c8570f |
|
MD5 | 5a073cae78ee85b33cc898da591312ee |
|
BLAKE2b-256 | 4f86620e524cf1c9fad778d19974cb4c645432a9ba7af8b0428e0a4e9ba9f7af |