From d6f764b7995c07a7276d4f6c174e5a00a4361674 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 10:37:07 +0530 Subject: [PATCH 01/19] recaptchaVerification --- web_programming/recaptcha_verification.py | 86 +++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 web_programming/recaptcha_verification.py diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py new file mode 100644 index 000000000000..f9503c6c6d6f --- /dev/null +++ b/web_programming/recaptcha_verification.py @@ -0,0 +1,86 @@ +""" +Recaptcha is a free captcha service offered by Google in order to secure websites / forms +https://www.google.com/recaptcha/admin/create (This is the site where you can get your recaptcha keys created) +* Keep in mind that recaptcha doesn't work with localhost +When you register recaptcha for your site, you'll get two keys: ClientKey & SecretKey. +ClientKey is to be kept in the front end +SecretKey is to be kept at backend +""" + +""" + +# An example HTML login form with recaptcha tag is shown below + +
+

Log in

+ {% csrf_token %} +
+ +
+
+ +
+ +
+ +
+ + +
+ + +
+ + + + +""" + +""" +Below one Django function based code for views.py file for a login form has been shown with recaptcha verification +""" + +import json +import requests + +def loginUsingRecaptcha(request): + + # When Submit button is clicked + if request.method == 'POST': + # get username, password & clientKey from frontend + username = request.POST.get('username') + password = request.POST.get('password') + clientKey = request.POST.get('g-recaptcha-response') + + # Keep your recaptcha secret key here + secretKey = 'secretKey' + + # make json of your captcha data + captchaData = { + 'secret': secretKey, + 'response': clientKey + } + + # post recaptcha response to Google recaptcha api + post = requests.post('https://www.google.com/recaptcha/api/siteverify', data=captchaData) + + # read the json response from recaptcha api + response = json.loads(post.text) + verify = response['success'] + + # if verify is true + if verify == True: + #authenticate user + user = authenticate(request, username = username, password=password) + + # if user is in database + if user is not None: + #login user + login(request, user) + return redirect('/your-webpage') + else: + # else send user back to the login page again + return render(request, 'login.html') + else: + # if verify is not true, send user back to login page + return render(request, 'login.html') \ No newline at end of file From d27fe0900ada05f49de6827e20b71b88ffab3bb7 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 11:03:03 +0530 Subject: [PATCH 02/19] recaptchaVerification --- web_programming/recaptcha_verification.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index f9503c6c6d6f..2d97e49d3099 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -7,6 +7,9 @@ SecretKey is to be kept at backend """ +import json +import requests + """ # An example HTML login form with recaptcha tag is shown below @@ -40,9 +43,6 @@ Below one Django function based code for views.py file for a login form has been shown with recaptcha verification """ -import json -import requests - def loginUsingRecaptcha(request): # When Submit button is clicked From e0c8abc569446e1a948243952ad7feedb8e1c5e3 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 11:38:54 +0530 Subject: [PATCH 03/19] recaptchaVerification1 --- web_programming/recaptcha_verification.py | 78 +++++++++++------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 2d97e49d3099..566afe576f74 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -43,44 +43,44 @@ Below one Django function based code for views.py file for a login form has been shown with recaptcha verification """ + def loginUsingRecaptcha(request): - # When Submit button is clicked - if request.method == 'POST': - # get username, password & clientKey from frontend - username = request.POST.get('username') - password = request.POST.get('password') - clientKey = request.POST.get('g-recaptcha-response') - - # Keep your recaptcha secret key here - secretKey = 'secretKey' - - # make json of your captcha data - captchaData = { - 'secret': secretKey, - 'response': clientKey - } - - # post recaptcha response to Google recaptcha api - post = requests.post('https://www.google.com/recaptcha/api/siteverify', data=captchaData) - - # read the json response from recaptcha api - response = json.loads(post.text) - verify = response['success'] - - # if verify is true - if verify == True: - #authenticate user - user = authenticate(request, username = username, password=password) - - # if user is in database - if user is not None: - #login user - login(request, user) - return redirect('/your-webpage') - else: - # else send user back to the login page again - return render(request, 'login.html') - else: - # if verify is not true, send user back to login page - return render(request, 'login.html') \ No newline at end of file + # When Submit button is clicked + if request.method == "POST": + # get username, password & clientKey from frontend + username = request.POST.get("username") + password = request.POST.get("password") + clientKey = request.POST.get("g-recaptcha-response") + + # Keep your recaptcha secret key here + secretKey = "secretKey" + + # make json of your captcha data + captchaData = {"secret": secretKey, "response": clientKey} + + # post recaptcha response to Google recaptcha api + post = requests.post( + "https://www.google.com/recaptcha/api/siteverify", data=captchaData + ) + + # read the json response from recaptcha api + response = json.loads(post.text) + verify = response["success"] + + # if verify is true + if verify == True: + # authenticate user + user = authenticate(request, username=username, password=password) + + # if user is in database + if user is not None: + # login user + login(request, user) + return redirect("/your-webpage") + else: + # else send user back to the login page again + return render(request, "login.html") + else: + # if verify is not true, send user back to login page + return render(request, "login.html") From c0ab0863b17c40cb6a939d9ce4bc5cd5412db8b3 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 11:53:45 +0530 Subject: [PATCH 04/19] recaptchaVerification2 --- web_programming/recaptcha_verification.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 566afe576f74..c62b1e743851 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -84,3 +84,6 @@ def loginUsingRecaptcha(request): else: # if verify is not true, send user back to login page return render(request, "login.html") + + # return the login page when loading or when submit is not pressed direct user to login page + return render(request, "login.html") From e2387018afdb5df1ba017a6083b5e4ff135462c3 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 11:57:41 +0530 Subject: [PATCH 05/19] recaptchaVerification3 --- web_programming/recaptcha_verification.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index c62b1e743851..70917a90d5b4 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -44,20 +44,20 @@ """ -def loginUsingRecaptcha(request): +def login_using_recaptcha(request): # When Submit button is clicked if request.method == "POST": - # get username, password & clientKey from frontend + # get username, password & client_key from frontend username = request.POST.get("username") password = request.POST.get("password") - clientKey = request.POST.get("g-recaptcha-response") + client_key = request.POST.get("g-recaptcha-response") # Keep your recaptcha secret key here - secretKey = "secretKey" + secret_key = "secretKey" # make json of your captcha data - captchaData = {"secret": secretKey, "response": clientKey} + captchaData = {"secret": secret_key, "response": client_key} # post recaptcha response to Google recaptcha api post = requests.post( From d120d8c1bf4335233b114f6f500be5571de3669d Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 12:22:47 +0530 Subject: [PATCH 06/19] recaptchaVerification4 --- web_programming/recaptcha_verification.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 70917a90d5b4..aa10b5e707bb 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -37,15 +37,17 @@ -""" -""" Below one Django function based code for views.py file for a login form has been shown with recaptcha verification """ def login_using_recaptcha(request): + # when method is not POST, direct user to login page + if request.method != "POST": + return render(request, "login.html") + # When Submit button is clicked if request.method == "POST": # get username, password & client_key from frontend @@ -57,7 +59,7 @@ def login_using_recaptcha(request): secret_key = "secretKey" # make json of your captcha data - captchaData = {"secret": secret_key, "response": client_key} + captcha_data = {"secret": secret_key, "response": client_key} # post recaptcha response to Google recaptcha api post = requests.post( @@ -69,12 +71,12 @@ def login_using_recaptcha(request): verify = response["success"] # if verify is true - if verify == True: + if verify: # authenticate user user = authenticate(request, username=username, password=password) # if user is in database - if user is not None: + if user: # login user login(request, user) return redirect("/your-webpage") @@ -83,7 +85,4 @@ def login_using_recaptcha(request): return render(request, "login.html") else: # if verify is not true, send user back to login page - return render(request, "login.html") - - # return the login page when loading or when submit is not pressed direct user to login page - return render(request, "login.html") + return render(request, "login.html") \ No newline at end of file From 9c2f3892a39ebd8fb7b75a64b7df9d0727c4278e Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 12:29:56 +0530 Subject: [PATCH 07/19] recaptchaVerificatio5 --- web_programming/recaptcha_verification.py | 68 +++++++++++------------ 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index aa10b5e707bb..df2902b31214 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -48,41 +48,39 @@ def login_using_recaptcha(request): if request.method != "POST": return render(request, "login.html") - # When Submit button is clicked - if request.method == "POST": - # get username, password & client_key from frontend - username = request.POST.get("username") - password = request.POST.get("password") - client_key = request.POST.get("g-recaptcha-response") - - # Keep your recaptcha secret key here - secret_key = "secretKey" - - # make json of your captcha data - captcha_data = {"secret": secret_key, "response": client_key} - - # post recaptcha response to Google recaptcha api - post = requests.post( - "https://www.google.com/recaptcha/api/siteverify", data=captchaData + # get username, password & client_key from frontend + username = request.POST.get("username") + password = request.POST.get("password") + client_key = request.POST.get("g-recaptcha-response") + + # Keep your recaptcha secret key here + secret_key = "secretKey" + + # make json of your captcha data + captcha_data = {"secret": secret_key, "response": client_key} + + # post recaptcha response to Google recaptcha api + post = requests.post( + "https://www.google.com/recaptcha/api/siteverify", data=captchaData ) - # read the json response from recaptcha api - response = json.loads(post.text) - verify = response["success"] - - # if verify is true - if verify: - # authenticate user - user = authenticate(request, username=username, password=password) - - # if user is in database - if user: - # login user - login(request, user) - return redirect("/your-webpage") - else: - # else send user back to the login page again - return render(request, "login.html") + # read the json response from recaptcha api + response = json.loads(post.text) + verify = response["success"] + + # if verify is true + if verify: + # authenticate user + user = authenticate(request, username=username, password=password) + + # if user is in database + if user: + # login user + login(request, user) + return redirect("/your-webpage") else: - # if verify is not true, send user back to login page - return render(request, "login.html") \ No newline at end of file + # else send user back to the login page again + return render(request, "login.html") + else: + # if verify is not true, send user back to login page + return render(request, "login.html") \ No newline at end of file From bd5162f6804f5634182b8dead3ea118ac57dc527 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 12:35:53 +0530 Subject: [PATCH 08/19] recaptchaVerificatio5 --- web_programming/recaptcha_verification.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index df2902b31214..529e19f5b0e3 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -61,7 +61,7 @@ def login_using_recaptcha(request): # post recaptcha response to Google recaptcha api post = requests.post( - "https://www.google.com/recaptcha/api/siteverify", data=captchaData + "https://www.google.com/recaptcha/api/siteverify", data=captcha_data ) # read the json response from recaptcha api From 7311e4ef29ce852ee408e50c355101ea2c58f100 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 12:55:02 +0530 Subject: [PATCH 09/19] recaptchaVerificatio6 --- web_programming/recaptcha_verification.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 529e19f5b0e3..6c084f30aae3 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -7,7 +7,6 @@ SecretKey is to be kept at backend """ -import json import requests """ @@ -65,8 +64,7 @@ def login_using_recaptcha(request): ) # read the json response from recaptcha api - response = json.loads(post.text) - verify = response["success"] + verify = response.json().get("success", False) # if verify is true if verify: From 26b90fb78418a43aa51a74d188e7e47d9108ef5f Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 12:59:14 +0530 Subject: [PATCH 10/19] drawOnVideoStreamOpenCV --- .../draw_on_webcam_video_stream.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 computer_vision/draw_on_webcam_video_stream.py diff --git a/computer_vision/draw_on_webcam_video_stream.py b/computer_vision/draw_on_webcam_video_stream.py new file mode 100644 index 000000000000..f83245dc796f --- /dev/null +++ b/computer_vision/draw_on_webcam_video_stream.py @@ -0,0 +1,67 @@ +import cv2 + + +# Variables +drawing = False +pt1 = (0, 0) +pt2 = (0, 0) +press = False + + +def draw_rectangle(event, x, y, flags, params): + + global pt1, pt2, drawing, press + + # when mouse left button pressed + if event == cv2.EVENT_LBUTTONDOWN: + # assign top left point of rectangle + pt1 = (x, y) + drawing = False + # mouse button pressed flag + press = True + + # when mouse pointer is moving + elif event == cv2.EVENT_MOUSEMOVE: + drawing = True + if drawing == True & press == True: + # assign bottom right corner of rectangle + pt2 = (x, y) + + # when mouse button is released + elif event == cv2.EVENT_LBUTTONUP: + drawing = True + # resetting pressed mouse button + press = False + + +# Capture Video +cap = cv2.VideoCapture(0) +width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) +height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + + +# Create a named window for connections +cv2.namedWindow(winname="frame") + +# Bind draw_rectangle function to mouse cliks +cv2.setMouseCallback("frame", draw_rectangle) + + +while True: + # Capture frame-by-frame + ret, frame = cap.read() + + # draw when drawing flag is on + if drawing == True: + cv2.rectangle(frame, pt1, pt2, (0, 0, 255), 5) + + # Display the resulting frame + cv2.imshow("frame", frame) + + # close window when Q is pressed + if cv2.waitKey(10) & 0xFF == ord("q"): + break + + +cap.release() +cv2.destroyAllWindows() From 3690d85eb29905c3d6544c25b22ba83b6bfd8f5a Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 13:23:39 +0530 Subject: [PATCH 11/19] matrixInverseMCAmethod --- .../draw_on_webcam_video_stream.py | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 computer_vision/draw_on_webcam_video_stream.py diff --git a/computer_vision/draw_on_webcam_video_stream.py b/computer_vision/draw_on_webcam_video_stream.py deleted file mode 100644 index f83245dc796f..000000000000 --- a/computer_vision/draw_on_webcam_video_stream.py +++ /dev/null @@ -1,67 +0,0 @@ -import cv2 - - -# Variables -drawing = False -pt1 = (0, 0) -pt2 = (0, 0) -press = False - - -def draw_rectangle(event, x, y, flags, params): - - global pt1, pt2, drawing, press - - # when mouse left button pressed - if event == cv2.EVENT_LBUTTONDOWN: - # assign top left point of rectangle - pt1 = (x, y) - drawing = False - # mouse button pressed flag - press = True - - # when mouse pointer is moving - elif event == cv2.EVENT_MOUSEMOVE: - drawing = True - if drawing == True & press == True: - # assign bottom right corner of rectangle - pt2 = (x, y) - - # when mouse button is released - elif event == cv2.EVENT_LBUTTONUP: - drawing = True - # resetting pressed mouse button - press = False - - -# Capture Video -cap = cv2.VideoCapture(0) -width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) -height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - - -# Create a named window for connections -cv2.namedWindow(winname="frame") - -# Bind draw_rectangle function to mouse cliks -cv2.setMouseCallback("frame", draw_rectangle) - - -while True: - # Capture frame-by-frame - ret, frame = cap.read() - - # draw when drawing flag is on - if drawing == True: - cv2.rectangle(frame, pt1, pt2, (0, 0, 255), 5) - - # Display the resulting frame - cv2.imshow("frame", frame) - - # close window when Q is pressed - if cv2.waitKey(10) & 0xFF == ord("q"): - break - - -cap.release() -cv2.destroyAllWindows() From 64ccb63075558e56d4e0c8321790c141cbd1079c Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 13:25:40 +0530 Subject: [PATCH 12/19] fixingImports --- web_programming/recaptcha_verification.py | 1 + 1 file changed, 1 insertion(+) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 6c084f30aae3..46e3678b9aa9 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -8,6 +8,7 @@ """ import requests +from django.contrib.auth import authenticate, login """ From ad3eeaa1acd3c9870989918a657b56df3afc1e85 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 13:48:57 +0530 Subject: [PATCH 13/19] recaptchaVerificationfixes --- web_programming/recaptcha_verification.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 46e3678b9aa9..de6f8057999f 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -1,8 +1,11 @@ """ -Recaptcha is a free captcha service offered by Google in order to secure websites / forms -https://www.google.com/recaptcha/admin/create (This is the site where you can get your recaptcha keys created) +Recaptcha is a free captcha service offered by Google +in order to secure websites / forms +https://www.google.com/recaptcha/admin/create (This is the site where +you can get your recaptcha keys created) * Keep in mind that recaptcha doesn't work with localhost -When you register recaptcha for your site, you'll get two keys: ClientKey & SecretKey. +When you register recaptcha for your site, +you'll get two keys: ClientKey & SecretKey. ClientKey is to be kept in the front end SecretKey is to be kept at backend """ @@ -18,14 +21,14 @@

Log in

{% csrf_token %}
- +
- +
- +
@@ -38,7 +41,8 @@ -Below one Django function based code for views.py file for a login form has been shown with recaptcha verification +Below one Django function based code for views.py file for a login form +has been shown with recaptcha verification """ @@ -82,4 +86,5 @@ def login_using_recaptcha(request): return render(request, "login.html") else: # if verify is not true, send user back to login page - return render(request, "login.html") \ No newline at end of file + return render(request, "login.html") + From 8cf1c3da265213d24310d80c9dfeb3d903462362 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 13:53:53 +0530 Subject: [PATCH 14/19] recaptchaVerificationfixes --- web_programming/recaptcha_verification.py | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index de6f8057999f..5959825d2790 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -1,11 +1,11 @@ """ Recaptcha is a free captcha service offered by Google in order to secure websites / forms -https://www.google.com/recaptcha/admin/create (This is the site where +https://www.google.com/recaptcha/admin/create (This is the site where you can get your recaptcha keys created) -* Keep in mind that recaptcha doesn't work with localhost -When you register recaptcha for your site, -you'll get two keys: ClientKey & SecretKey. +* Keep in mind that recaptcha doesn't work with localhost +When you register recaptcha for your site, +you'll get two keys: ClientKey & SecretKey. ClientKey is to be kept in the front end SecretKey is to be kept at backend """ @@ -18,36 +18,29 @@ # An example HTML login form with recaptcha tag is shown below
-

Log in

- {% csrf_token %} +

Log in

+ {% csrf_token %}
-
-
- -
- - -Below one Django function based code for views.py file for a login form +Below one Django function based code for views.py file for a login form has been shown with recaptcha verification """ def login_using_recaptcha(request): - # when method is not POST, direct user to login page if request.method != "POST": return render(request, "login.html") @@ -87,4 +80,3 @@ def login_using_recaptcha(request): else: # if verify is not true, send user back to login page return render(request, "login.html") - From 1ec029b6043c64f0036aaa60ffcadb79d4820913 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 14:01:22 +0530 Subject: [PATCH 15/19] recaptchaVerificationfixes --- web_programming/recaptcha_verification.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 5959825d2790..86a621338ea6 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -10,6 +10,8 @@ SecretKey is to be kept at backend """ +from django.shortcuts import render, redirect +import json import requests from django.contrib.auth import authenticate, login @@ -60,9 +62,11 @@ def login_using_recaptcha(request): post = requests.post( "https://www.google.com/recaptcha/api/siteverify", data=captcha_data ) + # read the json response from recaptcha api - verify = response.json().get("success", False) + response = json.loads(post.text) + verify = response['success'] # if verify is true if verify: From 1852db7873bf0a74e8bc63bbb24423c3a8e7dfb3 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 14:06:41 +0530 Subject: [PATCH 16/19] recaptchaVerificationfixes --- web_programming/recaptcha_verification.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 86a621338ea6..491c50cd456f 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -61,13 +61,10 @@ def login_using_recaptcha(request): # post recaptcha response to Google recaptcha api post = requests.post( "https://www.google.com/recaptcha/api/siteverify", data=captcha_data - ) - - + ) # read the json response from recaptcha api response = json.loads(post.text) verify = response['success'] - # if verify is true if verify: # authenticate user From 7172108f4838a121fcda2c7ba23617c37c3c8c7c Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 14:22:40 +0530 Subject: [PATCH 17/19] recaptchaVerificationfixes1 --- web_programming/recaptcha_verification.py | 27 ++++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 491c50cd456f..75985d234cc3 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -9,11 +9,11 @@ ClientKey is to be kept in the front end SecretKey is to be kept at backend """ - -from django.shortcuts import render, redirect +# from django.contrib.auth import authenticate, login +# from django.shortcuts import render, redirect import json import requests -from django.contrib.auth import authenticate, login + """ @@ -45,7 +45,8 @@ def login_using_recaptcha(request): # when method is not POST, direct user to login page if request.method != "POST": - return render(request, "login.html") + print('Welcome to LoginPage') + # return render(request, "login.html") # get username, password & client_key from frontend username = request.POST.get("username") @@ -67,17 +68,21 @@ def login_using_recaptcha(request): verify = response['success'] # if verify is true if verify: - # authenticate user - user = authenticate(request, username=username, password=password) + # authenticate user with following code + # user = authenticate(request, username=username, password=password) + user = True # if user is in database if user: + print('Login success') # login user - login(request, user) - return redirect("/your-webpage") + # login(request, user) + # return redirect("/your-webpage") else: - # else send user back to the login page again - return render(request, "login.html") + print('invalid crednetial') + # send user back to the login page again + # return render(request, "login.html") else: + print('Captcha verification failed') # if verify is not true, send user back to login page - return render(request, "login.html") + # return render(request, "login.html") From a8b28106a74dd33e2fed9cd7716156b88b42c7d2 Mon Sep 17 00:00:00 2001 From: santoshrajkumar Date: Sat, 12 Sep 2020 14:27:23 +0530 Subject: [PATCH 18/19] recaptchaVerificationfixes1 --- web_programming/recaptcha_verification.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 75985d234cc3..885e4ddf24a4 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -49,8 +49,8 @@ def login_using_recaptcha(request): # return render(request, "login.html") # get username, password & client_key from frontend - username = request.POST.get("username") - password = request.POST.get("password") + # username = request.POST.get("username") + # password = request.POST.get("password") client_key = request.POST.get("g-recaptcha-response") # Keep your recaptcha secret key here From 042e4493977e3641320c377c1857640f675bd476 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 13 Sep 2020 19:49:39 +0200 Subject: [PATCH 19/19] authenticate = login = render = redirect = print --- web_programming/recaptcha_verification.py | 90 +++++++++-------------- 1 file changed, 34 insertions(+), 56 deletions(-) diff --git a/web_programming/recaptcha_verification.py b/web_programming/recaptcha_verification.py index 885e4ddf24a4..47c6c42f2ad0 100644 --- a/web_programming/recaptcha_verification.py +++ b/web_programming/recaptcha_verification.py @@ -1,21 +1,11 @@ """ -Recaptcha is a free captcha service offered by Google -in order to secure websites / forms -https://www.google.com/recaptcha/admin/create (This is the site where -you can get your recaptcha keys created) +Recaptcha is a free captcha service offered by Google in order to secure websites and +forms. At https://www.google.com/recaptcha/admin/create you can create new recaptcha +keys and see the keys that your have already created. * Keep in mind that recaptcha doesn't work with localhost -When you register recaptcha for your site, -you'll get two keys: ClientKey & SecretKey. -ClientKey is to be kept in the front end -SecretKey is to be kept at backend -""" -# from django.contrib.auth import authenticate, login -# from django.shortcuts import render, redirect -import json -import requests - - -""" +When you create a recaptcha key, your will get two separate keys: ClientKey & SecretKey. +ClientKey should be kept in your site's front end +SecretKey should be kept in your site's back end # An example HTML login form with recaptcha tag is shown below @@ -37,52 +27,40 @@ -Below one Django function based code for views.py file for a login form -has been shown with recaptcha verification + +Below a Django function for the views.py file contains a login form for demonstrating +recaptcha verification. """ +import requests + +try: + from django.contrib.auth import authenticate, login + from django.shortcuts import redirect, render +except ImportError: + authenticate = login = render = redirect = print def login_using_recaptcha(request): + # Enter your recaptcha secret key here + secret_key = "secretKey" + url = "https://www.google.com/recaptcha/api/siteverify" + # when method is not POST, direct user to login page if request.method != "POST": - print('Welcome to LoginPage') - # return render(request, "login.html") + return render(request, "login.html") - # get username, password & client_key from frontend - # username = request.POST.get("username") - # password = request.POST.get("password") + # from the frontend, get username, password, and client_key + username = request.POST.get("username") + password = request.POST.get("password") client_key = request.POST.get("g-recaptcha-response") - # Keep your recaptcha secret key here - secret_key = "secretKey" - - # make json of your captcha data - captcha_data = {"secret": secret_key, "response": client_key} - - # post recaptcha response to Google recaptcha api - post = requests.post( - "https://www.google.com/recaptcha/api/siteverify", data=captcha_data - ) - # read the json response from recaptcha api - response = json.loads(post.text) - verify = response['success'] - # if verify is true - if verify: - # authenticate user with following code - # user = authenticate(request, username=username, password=password) - user = True - - # if user is in database - if user: - print('Login success') - # login user - # login(request, user) - # return redirect("/your-webpage") - else: - print('invalid crednetial') - # send user back to the login page again - # return render(request, "login.html") - else: - print('Captcha verification failed') - # if verify is not true, send user back to login page - # return render(request, "login.html") + # post recaptcha response to Google's recaptcha api + response = requests.post(url, data={"secret": secret_key, "response": client_key}) + # if the recaptcha api verified our keys + if response.json().get("success", False): + # authenticate the user + user_in_database = authenticate(request, username=username, password=password) + if user_in_database: + login(request, user_in_database) + return redirect("/your-webpage") + return render(request, "login.html")