diff --git a/backend/Dockerfile b/backend/Dockerfile index 8eb7a25..b06cd7d 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -4,6 +4,9 @@ WORKDIR /app COPY requirements.txt . +RUN apt-get -y update +RUN apt-get -y install sqlite3 + RUN pip install -r requirements.txt COPY /src . diff --git a/backend/Dockerfile.prod b/backend/Dockerfile.prod index 1bd4a72..61f536d 100644 --- a/backend/Dockerfile.prod +++ b/backend/Dockerfile.prod @@ -6,6 +6,8 @@ RUN apt-get -y update && apt-get -y upgrade COPY requirements.txt . +RUN apt-get -y install sqlite3 + RUN pip install -r requirements.txt COPY /src . diff --git a/backend/requirements.txt b/backend/requirements.txt index 75a45e2..3458910 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,3 +1,4 @@ +autopep8==1.5.7 blinker==1.4 click==7.1.2 Deprecated==1.2.12 @@ -16,11 +17,13 @@ MarkupSafe==1.1.1 passlib==1.7.4 pendulum==2.1.2 py-buzz==1.0.3 +pycodestyle==2.7.0 PyJWT==2.1.0 python-dateutil==2.8.1 python-dotenv==0.17.1 pytzdata==2020.1 six==1.16.0 SQLAlchemy==1.4.15 +toml==0.10.2 Werkzeug==1.0.1 wrapt==1.12.1 diff --git a/backend/src/app.py b/backend/src/app.py index 7f66284..470e4cf 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -113,7 +113,7 @@ def refresh(): $ curl http://localhost:5000/api/refresh -X GET \ -H "Authorization: Bearer " """ - old_token = request.get_data() + old_token = flask.request.get_data() new_token = guard.refresh_jwt_token(old_token) ret = {'access_token': new_token} return ret, 200 diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 10c3e2d..9c7cbf9 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -8,6 +8,8 @@ services: backend-prod: image: caminsha/bt-backend container_name: backend-prod + volumes: + - "./database.db:/app/database.db:z" environment: DEBUG: "no" PORT: 5050 @@ -20,6 +22,6 @@ services: environment: - MONGO_URI=mongodb://mongodb:27017/behametrics mongodb: - image: mongo:4.0.1 + image: mongo:4.0.25 container_name: "behametrics-mongo" command: mongod --smallfiles diff --git a/docker-compose.yml b/docker-compose.yml index 46dafc3..deac250 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,6 @@ services: environment: - MONGO_URI=mongodb://mongodb:27017/behametrics mongodb: - image: mongo:4.0.1 + image: mongo:4.0.25 container_name: "behametrics-mongo" command: mongod --smallfiles diff --git a/frontend/src/App.css b/frontend/src/App.css index 85703b2..2a480cd 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -97,3 +97,13 @@ h1 { font-weight: bold; user-select: none; } + +.study-finished { + background-color: var(--primary); + padding: 0.5em; +} + +.study-finished > p { + color: var(--error); + font-size: 2em; +} diff --git a/frontend/src/Footer.jsx b/frontend/src/Footer.jsx index 6c789d4..1e0fbfa 100644 --- a/frontend/src/Footer.jsx +++ b/frontend/src/Footer.jsx @@ -1,7 +1,6 @@ import React from "react"; import { Link } from "react-router-dom"; import "./Footer.css"; -import "@fortawesome/fontawesome-free/css/all.css"; function Footer() { return ( diff --git a/frontend/src/components/GeneratedPassword.jsx b/frontend/src/components/GeneratedPassword.jsx index 1dfb3af..7536737 100644 --- a/frontend/src/components/GeneratedPassword.jsx +++ b/frontend/src/components/GeneratedPassword.jsx @@ -2,11 +2,6 @@ import React from "react"; import "../App.css"; export default function GeneratedPassword(props) { - const handleOnCopyEvent = (e) => { - e.preventDefault(); - return false; - }; - return ( <>

diff --git a/frontend/src/components/HeroSection.jsx b/frontend/src/components/HeroSection.jsx index 93211d3..33e3968 100644 --- a/frontend/src/components/HeroSection.jsx +++ b/frontend/src/components/HeroSection.jsx @@ -2,8 +2,8 @@ import React from "react"; import "../App.css"; import { Button } from "./Button"; import "./HeroSection.css"; -import "@fortawesome/fontawesome-free/css/all.css"; import { useAuth } from "../auth/AuthProvider"; +import StudyFinished from "./StudyFinished"; export default function HeroSection() { const [isLoggedIn] = useAuth(); @@ -11,6 +11,7 @@ export default function HeroSection() { return (

Herzlich Willkommen

+
{isLoggedIn ? (
+ ); +} diff --git a/frontend/src/components/pages/Lizenzen.jsx b/frontend/src/components/pages/Lizenzen.jsx index dbd7b38..e47176c 100644 --- a/frontend/src/components/pages/Lizenzen.jsx +++ b/frontend/src/components/pages/Lizenzen.jsx @@ -73,7 +73,7 @@ export default function Lizenzen() {
  • - Behametrics Serverimplementierung (MIT-Lizenz) + Behametrics Serverimplementierung (MIT-Lizenz):{" "} https://gitlab.com/behametrics/server diff --git a/frontend/src/components/pages/Privacy.jsx b/frontend/src/components/pages/Privacy.jsx index 4464714..9b3bbc2 100644 --- a/frontend/src/components/pages/Privacy.jsx +++ b/frontend/src/components/pages/Privacy.jsx @@ -7,6 +7,89 @@ export default function Privacy() { <>

    Datenschutz

    +

    + Nachfolgend werden Sie informiert, welche Daten ich von Ihnen erfasse + und erhebe. Grundsätzlich gilt, dass ich sämtliche Daten nach der + Bachelorthesis wieder lösche. Ausserdem gebe ich keine + personenbezogenen Daten an Dritte weiter. Nachfolgend werden die Daten + in folgende drei Kategorien eingeteilt: +

    +
      +
    • Daten des Webservers
    • +
    • Anmelde- und Umfragedaten
    • +
    • Daten zu biometrischen Verhaltensmerkmalen
    • +
    +

    Daten des Webservers

    +

    + Diese Webanwendung wird auf einem virtuellen Server bei{" "} + netcup betrieben. Um diese + Webanwendung grundsätzlich bereitzustellen, werden die folgenden Daten + erhoben:{" "} +

    +
      +
    • IP-Adresse der Anfrage
    • +
    • URL der Anfrage
    • +
    • + User-Agent der Anfrage (also z.B. der verwendete Browser usw.) +
    • +
    • Status der Antwort
    • +
    +

    + Diese Informationen werden verwendet, um den reibungslosen Betrieb der + Webseit zu gewährleisten.{" "} +

    +

    Anmelde- und Umfragedaten

    +

    + Im Rahmen der Bachelorthesis erfasse ich einige Merkmale über Sie. + Hierzu zählen einerseits die Logindaten, welche erfasst werden müssen, + damit Sie sich einloggen können. Ausserdem erfasse ich die folgenden + Daten mit einer Umfrage:{" "} +

    +
      +
    • Alter
    • +
    • Geschlecht
    • +
    • Höchster Bildungsstand
    • +
    • Geschätzte Anwenderkenntnisse im Informatikbereich
    • +
    +

    + Die Anmeldedaten werden verwendet, damit Sie sich auf der Webseite + einloggen können. Damit Sie sich nicht jedes Mal anmelden müssen, + verwende ich die Methode von LocalStorage. Im Localstorage wird der + Wert REACT_TOKEN_AUTH_KEY gespeichert, welcher einen Zugangscode + enthält. Die Umfragedaten werden ausgewertet, damit ich die + Teilnehmenden einordnen kann. Die Daten werst sonst nicht + weiterverwertet. +

    +

    Daten zu biometrischen Verhaltensmerkmalen

    +

    + Während der Studie werden biometirsche Daten gesammelt. Zu den + biometrischen Daten gehören Mausbewegungen und Tastaturanschläge. + Diese Daten werden lediglich im Rahmen der Bachelorthesis verwendet + und ausgewertet. Nachdem die Bachelorthesis beendet ist, werden + sämtliche Daten gelöscht. Es erfolgt keine Auswertung der + biometrischen Daten im Zusammenhang mit den Daten der Umfrage. + Allerdings kann der Benutzername, welchen Sie bei der Anmeldung + angegeben haben, verwendet werden. +

    +

    Weitergabe der Daten

    +

    + Grundsätzlich werden die Daten nicht an Dritte weitergegeben. Folgende + Ausnahmen gibt es: +

    +
      +
    • + Der Fernfachhochschule Schweiz werden die Daten falls notwendig + weitergegeben. +
    • +
    • + Sofern es eine gesetzliche Grundlage gibt, werden die Daten auch + weitergegeben. +
    • +
    • + Wie bereits oben erwähnt, läuft die Webanwendung auf einem + virtuellen Server bei netcup. Hierbei gelten die Datenschutzbestimmungen von netcup, welche hier eingesehen werden können. +
    • +