From f64406c74bac2d0cc675429e4745b42463cb5aa3 Mon Sep 17 00:00:00 2001 From: cami Date: Fri, 16 Jul 2021 04:00:01 +0200 Subject: [PATCH 1/4] Backend implementation for random passwords --- backend/src/password_util.py | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 backend/src/password_util.py diff --git a/backend/src/password_util.py b/backend/src/password_util.py new file mode 100644 index 0000000..2f7a125 --- /dev/null +++ b/backend/src/password_util.py @@ -0,0 +1,51 @@ +from random import seed +from random import randint +import time + +seed(int(time.time())) + + +def get_random_value(list_length): + random_select = randint(0, list_length) + return random_select + +def get_password(): + + first_part = [ + "Der Vogel", + "Die Ameise", + "Die Biene", + "Ein Mensch", + "Jemand", + ] + + second_part = [ + "frisst", + "küsst", + "begrüsst", + ] + + third_part = [ + "den Vogel", + "die Mücke", + "den Adler", + "den Apfel", + "die Birne", + "die Biene", + "eine Gurke", + ] + + forth_part = [ + "auf der Terasse.", + "auf der Wiese.", + "im Garten.", + "in der Kühltruhe.", + ] + + password = "" + password += str(first_part[get_random_value(len(first_part)-1)]) + password += " " + str(second_part[get_random_value(len(second_part)-1)]) + password += " " + str(third_part[get_random_value(len(third_part)-1)]) + password += " " + str(forth_part[get_random_value(len(forth_part)-1)]) + + return password \ No newline at end of file From 6da747d632b94a618d0a517d9a1d71995308a5f3 Mon Sep 17 00:00:00 2001 From: cami Date: Sat, 17 Jul 2021 01:45:11 +0200 Subject: [PATCH 2/4] Add backend API to receive a random password --- backend/src/app.py | 7 +++++++ backend/src/password_util.py | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/src/app.py b/backend/src/app.py index 3a6e68a..2f87bca 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -5,6 +5,7 @@ import flask_sqlalchemy import flask_praetorian import flask_cors import sys +from password_util import get_random_password db = flask_sqlalchemy.SQLAlchemy() guard = flask_praetorian.Praetorian() @@ -131,6 +132,12 @@ def protected(): """ return {'message': f'protected endpoint (allowed user {flask_praetorian.current_user().username})'} +@app.route('/api/protected/rcv_pw', methods=['GET']) +# @flask_praetorian.auth_required +def get_password(): + pw = get_random_password() + print(pw) + return pw @app.route('/api/register', methods=['POST']) def register(): diff --git a/backend/src/password_util.py b/backend/src/password_util.py index 2f7a125..cdb4599 100644 --- a/backend/src/password_util.py +++ b/backend/src/password_util.py @@ -9,7 +9,8 @@ def get_random_value(list_length): random_select = randint(0, list_length) return random_select -def get_password(): + +def get_random_password(): first_part = [ "Der Vogel", @@ -48,4 +49,4 @@ def get_password(): password += " " + str(third_part[get_random_value(len(third_part)-1)]) password += " " + str(forth_part[get_random_value(len(forth_part)-1)]) - return password \ No newline at end of file + return password From 5e07b3b7ddd2697872f68093ce033f920cf86d40 Mon Sep 17 00:00:00 2001 From: cami Date: Sat, 17 Jul 2021 01:45:29 +0200 Subject: [PATCH 3/4] Added some more words for password generator --- backend/src/password_util.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/src/password_util.py b/backend/src/password_util.py index cdb4599..80852eb 100644 --- a/backend/src/password_util.py +++ b/backend/src/password_util.py @@ -18,12 +18,19 @@ def get_random_password(): "Die Biene", "Ein Mensch", "Jemand", + "Der Hund", + "Der Kater", ] second_part = [ "frisst", "küsst", "begrüsst", + "besucht", + "beeinflusst", + "isst", + "findet", + "vergisst", ] third_part = [ @@ -39,8 +46,9 @@ def get_random_password(): forth_part = [ "auf der Terasse.", "auf der Wiese.", - "im Garten.", + "im Garten.", "in der Kühltruhe.", + "auf dem Balkon.", ] password = "" From c67da25cc97108bafdc5a3bcfc4a39b456b3072d Mon Sep 17 00:00:00 2001 From: cami Date: Sun, 18 Jul 2021 16:58:02 +0200 Subject: [PATCH 4/4] Add generated password to frontend --- backend/src/app.py | 8 ++++---- frontend/src/App.css | 4 ++++ .../src/components/pages/BehaviorNormal.js | 20 +++++++++++++------ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/backend/src/app.py b/backend/src/app.py index 2f87bca..6d9b201 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -132,12 +132,14 @@ def protected(): """ return {'message': f'protected endpoint (allowed user {flask_praetorian.current_user().username})'} + @app.route('/api/protected/rcv_pw', methods=['GET']) # @flask_praetorian.auth_required def get_password(): pw = get_random_password() - print(pw) - return pw + ret = {'password': pw} + return ret, 200 + @app.route('/api/register', methods=['POST']) def register(): @@ -246,8 +248,6 @@ def survey(): return ret, 400 - - # Run the example if __name__ == '__main__': app.run(debug=debug, host=host, port=port) diff --git a/frontend/src/App.css b/frontend/src/App.css index a128aa2..c013d97 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -77,3 +77,7 @@ h1 { .bildnachweise { font-size: 1.3em; } + +.generated-password { + font-weight: bold; +} diff --git a/frontend/src/components/pages/BehaviorNormal.js b/frontend/src/components/pages/BehaviorNormal.js index ca03d43..44fde4d 100644 --- a/frontend/src/components/pages/BehaviorNormal.js +++ b/frontend/src/components/pages/BehaviorNormal.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import "../../App.css"; import Footer from "../../Footer"; import InputField from "../InputField"; @@ -16,6 +16,8 @@ export default function BehaviorNormal() { password = tmp_password; }; + const [genPassword, setGenPassword] = useState("") + let logger = new Logger({ //inputs: ["cursor", "wheel", "keyboard", "touch"], inputs: ["keyboard"], @@ -35,24 +37,20 @@ export default function BehaviorNormal() { }; const handlePasswordChange = (e) => { - console.log("handlePasswordChange"); setPassword(e.target.value); }; const handleUsernameChange = (e) => { - console.log("handleUsernamechange"); setUsername(e.target.value); }; const handleOnCopyEvent = (e) => { e.preventDefault(); - console.log("copy not allowed"); return false; }; const handleOnPasteEvent = (e) => { e.preventDefault(); - console.log("paste not allowed"); return false; }; @@ -80,6 +78,16 @@ export default function BehaviorNormal() { }); }; + useEffect(() => { + fetch("/api/protected/rcv_pw", { + method: "get", + }).then((response) => { + response.json().then((resp) => { + setGenPassword(resp.password) + }) + }); + }, []); + return ( <>
@@ -97,7 +105,7 @@ export default function BehaviorNormal() { normalerweise anmelden.

- Das Passwort für diese Situation lautet: abcdefgeh + Das Passwort für diese Situation lautet: {genPassword}