Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render, HttpResponseRedirect,HttpResponse, redirect
- from django.contrib.auth import authenticate, login, logout
- from django.contrib import messages
- from django.urls import reverse
- from django.contrib.auth.decorators import login_required
- from django.core.mail import send_mail, BadHeaderError
- from django.template.loader import render_to_string
- from django.conf import settings
- import random
- from django.contrib.auth.models import User
- @login_required()
- def home(request):
- context = {}
- if request.session['otp_session_is_valid']:
- return render(request, 'login/index.html', context)
- # when otp is not valid redirect to otp_page
- return redirect('otp_page')
- @login_required()
- def generate_and_send_otp(request):
- rand_no = random.randint(100000, 999999)
- otp = str(rand_no)
- subject = 'Activate Your Account'
- context = {'otp': otp}
- message = render_to_string('login/otp_email.html', context)
- sender = settings.EMAIL_HOST_USER
- recipients = [request.user.email]
- send_mail(subject, message,sender, recipients, fail_silently=True)
- messages.warning(request, ('you have received otp in your mail!'))
- request.session['otp'] = otp
- return render(request, 'login/otp_page.html', context)
- @login_required()
- def validate_otp(request):
- user_otp = request.POST.get("otp")
- if user_otp == request.session['otp']:
- set_otp_session(request)
- return render(request, 'login/index.html')
- messages.success(request, "wrong otp")
- return redirect('otp_page')
- def set_otp_session(request):
- request.session['otp_session_is_valid'] = True
- def invalidate_otp_session(request):
- request.session['otp_session_is_valid'] = False
- def login_user(request):
- context = {}
- return render(request, 'login/login.html', context)
- def login_validate(request):
- if request.method == "POST":
- username = request.POST['username']
- password = request.POST['password']
- user = authenticate(request, username = username, password = password)
- if user is not None:
- login(request, user)
- return HttpResponseRedirect(reverse('otp_page'))
- else:
- messages.error(request, "bad username")
- context = {}
- return render(request, 'login/login.html', context)
- def logout_user(request):
- logout(request)
- invalidate_otp_session(request)
- request.session['otp'] = None
- return redirect('login')
Add Comment
Please, Sign In to add comment