dennoh

OTP

Oct 28th, 2020 (edited)
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from django.shortcuts import render, HttpResponseRedirect,HttpResponse, redirect
  2. from django.contrib.auth import authenticate, login, logout
  3. from django.contrib import messages
  4. from django.urls import reverse
  5. from django.contrib.auth.decorators import login_required
  6. from django.core.mail import send_mail, BadHeaderError
  7. from django.template.loader import render_to_string
  8. from django.conf import settings
  9. import random
  10. from django.contrib.auth.models import User
  11.  
  12. @login_required()
  13. def home(request):
  14. context = {}
  15. if request.session['otp_session_is_valid']:
  16. return render(request, 'login/index.html', context)
  17. # when otp is not valid redirect to otp_page
  18. return redirect('otp_page')
  19.  
  20. @login_required()
  21. def generate_and_send_otp(request):
  22. rand_no = random.randint(100000, 999999)
  23. otp = str(rand_no)
  24. subject = 'Activate Your Account'
  25. context = {'otp': otp}
  26. message = render_to_string('login/otp_email.html', context)
  27. sender = settings.EMAIL_HOST_USER
  28. recipients = [request.user.email]
  29. send_mail(subject, message,sender, recipients, fail_silently=True)
  30. messages.warning(request, ('you have received otp in your mail!'))
  31.  
  32. request.session['otp'] = otp
  33. return render(request, 'login/otp_page.html', context)
  34.  
  35. @login_required()
  36. def validate_otp(request):
  37. user_otp = request.POST.get("otp")
  38.  
  39. if user_otp == request.session['otp']:
  40. set_otp_session(request)
  41. return render(request, 'login/index.html')
  42.  
  43. messages.success(request, "wrong otp")
  44. return redirect('otp_page')
  45.  
  46.  
  47. def set_otp_session(request):
  48. request.session['otp_session_is_valid'] = True
  49.  
  50. def invalidate_otp_session(request):
  51. request.session['otp_session_is_valid'] = False
  52.  
  53. def login_user(request):
  54.  
  55. context = {}
  56. return render(request, 'login/login.html', context)
  57.  
  58. def login_validate(request):
  59. if request.method == "POST":
  60. username = request.POST['username']
  61. password = request.POST['password']
  62. user = authenticate(request, username = username, password = password)
  63. if user is not None:
  64. login(request, user)
  65. return HttpResponseRedirect(reverse('otp_page'))
  66. else:
  67. messages.error(request, "bad username")
  68.  
  69. context = {}
  70. return render(request, 'login/login.html', context)
  71.  
  72. def logout_user(request):
  73. logout(request)
  74. invalidate_otp_session(request)
  75. request.session['otp'] = None
  76. return redirect('login')
Add Comment
Please, Sign In to add comment