View difference between Paste ID: b74wsJGY and 1Uh3KTEA
SHOW: | | - or go back to the newest paste.
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-
# Create your views here.
12+
13
def home(request):
14
    context = {}
15
    if request.session['otp_session_is_valid']:
16
	return render(request, 'login/index.html', context)
17-
    return render(request, 'login/index.html', context)
17+
    # when otp is not valid redirect to otp_page
18
    return redirect('otp_page')
19-
otp = 0
19+
20
@login_required()
21-
def otp_page(request):
21+
def generate_and_send_otp(request):
22-
    rno = random.randint(100000, 999999)
22+
    rand_no = random.randint(100000, 999999)
23-
    global otp
23+
    otp = str(rand_no)
24-
    otp = str(rno)
24+
25
    context = {'otp': otp}
26-
    message = render_to_string('login/otp_email.html', {
26+
    message = render_to_string('login/otp_email.html', context)
27-
        'otp': otp
27+
28-
    })
28+
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-
    context = {'otp':str(otp)}
36+
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-
    if user_otp == str(otp):
43+
    messages.success(request, "wrong otp")
44
    return redirect('otp_page')
45-
    else:
45+
46-
        messages.success(request, "wrong otp")
46+
47-
        return render(request,  'login/login.html')
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')