diff --git a/backend/src/app.py b/backend/src/app.py index 3a6e68a..6d9b201 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() @@ -132,6 +133,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() + ret = {'password': pw} + return ret, 200 + + @app.route('/api/register', methods=['POST']) def register(): req = flask.request.get_json(force=True) @@ -239,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/backend/src/password_util.py b/backend/src/password_util.py new file mode 100644 index 0000000..80852eb --- /dev/null +++ b/backend/src/password_util.py @@ -0,0 +1,60 @@ +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_random_password(): + + first_part = [ + "Der Vogel", + "Die Ameise", + "Die Biene", + "Ein Mensch", + "Jemand", + "Der Hund", + "Der Kater", + ] + + second_part = [ + "frisst", + "küsst", + "begrüsst", + "besucht", + "beeinflusst", + "isst", + "findet", + "vergisst", + ] + + 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.", + "auf dem Balkon.", + ] + + 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 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}