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())})
)
Metadata
Release files for django-user-email-extension 2.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_user_email_extension-2.6.1-py3-none-any.whl | Python 3 | none | any | Details for django_user_email_extension-2.6.1-py3-none-any.whl |
Release files / django_user_email_extension-2.6.1-py3-none-any.whl
| Download URL | django_user_email_extension-2.6.1-py3-none-any.whl |
|---|---|
| Size | 35.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1aa6faaa58ecbe3e18d6f0428b0d6e915841b43fd422d82064d9b9fa25c8570f
|
|
BLAKE2b-256 checksum How to use checksums |
4f86620e524cf1c9fad778d19974cb4c645432a9ba7af8b0428e0a4e9ba9f7af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.5
|
Security for django-user-email-extension 2.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.