Merge pull request 'Random passwords during study (fix #120)' (#159) from feature/random-password into main
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #159
This commit is contained in:
cami 2021-07-18 14:59:00 +00:00
commit 9808c2509c
4 changed files with 87 additions and 8 deletions

View file

@ -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)

View file

@ -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

View file

@ -77,3 +77,7 @@ h1 {
.bildnachweise {
font-size: 1.3em;
}
.generated-password {
font-weight: bold;
}

View file

@ -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 (
<>
<div className="sitePage">
@ -97,7 +105,7 @@ export default function BehaviorNormal() {
normalerweise anmelden.
</p>
<p onCopy={handleOnCopyEvent}>
Das Passwort für diese Situation lautet: abcdefgeh
Das Passwort für diese Situation lautet: <span className="generated-password">{genPassword}</span>
</p>
<form id="behaviorNormal" action="#">
<InputField