Skip to content

Latest commit

 

History

History
87 lines (60 loc) · 2.06 KB

README.md

File metadata and controls

87 lines (60 loc) · 2.06 KB

Project Description

email_verification is a django package that verifies a user's email on registration.

  • An email is sent to registered users to verify their email before login.
  • All users that are not verified after 24hrs will be automatically deleted from the database.

Installation

pip install django-email-certify

Setup

After a successful installation, you will need to setup your django project to use the package. Follow the steps below to do that.

First, we need to add email_verification to our project's INSTALLED_APPS

# settings.py

INSTALLED_APPS = [
    # ...other apps
    "email_verification.apps.EmailVerificationConfig",
]

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 465
EMAIL_HOST_USER = "your_email_user"
EMAIL_HOST_PASSWORD = "your_email_password"
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = "Default<[email protected]>"

LOGIN_URL = "" # ensure to set this

Next, we will add the url configuration for our package.

# urls.py

urlpatterns = [
    # ...other urls
    path("verify-email/", include("email_verification.urls")),
]
python manage.py migrate

Next, we'll need to handle inactive user deletion for our project. To do that, we will be adding some configuration to our wsgi.py file

# wsgi.py

from threading import Thread

application = get_wsgi_application() # already in code

# this should come after the get_wsgi_application() object
from email_verification.views import delete_inactive_users

t = Thread(target=delete_inactive_users)
t.start()

That's all for the configurations. Next up, we will be using verifying our users using a django form

# views.py

from email_verification.views import VerifyEmail

def signup(request):
    form = RegisterForm() # create your form class
    if request.method == "POST":
        form = RegisterForm(request.POST)
        if form.is_valid():
            VerifyEmail(request, form)

            return redirect("redirect_url")
    
    return render(request, "register.html", {"form": form})