From e2a9aca39ff4887f68bce6d1553073803dcac416 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sun, 19 Apr 2020 01:11:54 +0200 Subject: [PATCH 01/25] created login page without functionality #24 --- frontend/src/App.css | 9 ++ frontend/src/App.js | 11 ++- frontend/src/components/content.js | 2 + frontend/src/components/login/login.js | 109 +++++++++++++++++++++++++ frontend/src/img/loginBackground.png | Bin 0 -> 262224 bytes 5 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/login/login.js create mode 100644 frontend/src/img/loginBackground.png diff --git a/frontend/src/App.css b/frontend/src/App.css index 61592b6..af7bf6f 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -9,3 +9,12 @@ margin-left: 10px; height: 64px; } + +.loginBackground { + background-position: center; + background-repeat: no-repeat; + background-size: cover; + margin: auto; + min-height: 100vh; + background-image: url(./img/loginBackground.png); +} \ No newline at end of file diff --git a/frontend/src/App.js b/frontend/src/App.js index 4348a7e..3a95573 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -4,6 +4,10 @@ import { } from "react-router-dom"; import Navbar from "./components/navigation"; import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles'; +import { + Route, Switch +} from "react-router-dom"; +import Login from './components/login/login'; import "./App.css"; @@ -28,7 +32,12 @@ class App extends Component { return ( - + + + + + + diff --git a/frontend/src/components/content.js b/frontend/src/components/content.js index 2369ca6..857f5da 100644 --- a/frontend/src/components/content.js +++ b/frontend/src/components/content.js @@ -7,6 +7,7 @@ import { import SelectResource from './selectResource'; import ResourceChart from './resourcechart/resourcechart'; + const useStyles = makeStyles(theme => ({ root: { flexGrow: 1, @@ -24,6 +25,7 @@ export default function Content() { } /> + ); diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js new file mode 100644 index 0000000..352c356 --- /dev/null +++ b/frontend/src/components/login/login.js @@ -0,0 +1,109 @@ +import React from 'react'; +import { Link } from "react-router-dom"; +import { makeStyles, withStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import Typography from '@material-ui/core/Typography'; +import Box from '@material-ui/core/Box'; +import Button from '@material-ui/core/Button'; +import Logo from "../../img/logo.png"; +import TextField from '@material-ui/core/TextField'; +import Grid from '@material-ui/core/Grid'; + + +const useStyles = makeStyles(theme => ({ + card: { + backgroundColor: "#0B1929", + display: "flex" + }, + logo: { + maxWidth: "50%", + height: "auto" + }, + input: { + color: "#9daac1" + }, + grid: { + display: "flex" + } +})); + +const CssTextField = withStyles({ + root: { + '& label.Mui-focused': { + color: 'white', + }, + '&:hover label': { + color: '#FFC800', + }, + '& label': { + color: 'white', + }, + '& .MuiOutlinedInput-root': { + '& input': { + color: "white" + }, + '& fieldset': { + borderColor: 'white', + color: "white" + }, + '&:hover fieldset': { + borderColor: "#FFC800", + }, + '&.Mui-focused fieldset': { + borderColor: 'white', + }, + }, + }, +})(TextField); + +export default function Login() { + const classes = useStyles(); + return ( + + + + + SC Dashboard Logo + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ ) + +} diff --git a/frontend/src/img/loginBackground.png b/frontend/src/img/loginBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8a852c9238e233b684b34c6bb26c591e605869 GIT binary patch literal 262224 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 z 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�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�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�{ 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 literal 0 HcmV?d00001 From ca30554eb929da0794ccaba051550dc314196909 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Sun, 19 Apr 2020 17:30:30 +0200 Subject: [PATCH 02/25] use new day api --- backend/index.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/index.js b/backend/index.js index 8b1707d..4b89d90 100644 --- a/backend/index.js +++ b/backend/index.js @@ -42,20 +42,20 @@ app.all("/*", function (req, res, next) { }) app.get('/API/day', function (req, res) { - var date = new Date(req.query.date); const kind = parseInt(req.query.kind); - if (date instanceof Date && Number.isInteger(kind)) { + if (Number.isInteger(kind)) { //Mock Data: if (kind === -1) return res.send(mockDataDay); - if (!isNaN(date.getTime()) && kind >= 1 && kind <= 113) { - const daybegin = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; - date.setDate(date.getDate() + 1); - const dayend = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; - const querystring = `SELECT time, price FROM market WHERE kind = ${kind} AND time > "${daybegin}" AND time < "${dayend}"` + if (kind >= 1 && kind <= 113) { + var dayend = new Date().toISOString().slice(0, 19).replace('T', ' '); + var daybegin = new Date(); + daybegin.setDate(daybegin.getDate() - 1); + daybegin = daybegin.toISOString().slice(0, 19).replace('T', ' '); + const querystring = `SELECT time, price, quality FROM marketv2 WHERE kind = ${kind} AND time > "${daybegin}" AND time < "${dayend}" ORDER BY quality, time`; connection.query(querystring, function (error, results, fields) { if (error) { - throw error; + res.status(status.INTERNAL_SERVER_ERROR).send("database connection failed"); } res.send(results); }); From 47cd744fe2d676502db6cff5cb04069a90b0e1fe Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Sun, 19 Apr 2020 17:32:00 +0200 Subject: [PATCH 03/25] remove date dependency --- frontend/src/components/content.js | 2 +- frontend/src/components/resourcechart/resourcechart.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/content.js b/frontend/src/components/content.js index 2369ca6..d145e2b 100644 --- a/frontend/src/components/content.js +++ b/frontend/src/components/content.js @@ -23,7 +23,7 @@ export default function Content() {

    - } /> + } />
    ); diff --git a/frontend/src/components/resourcechart/resourcechart.js b/frontend/src/components/resourcechart/resourcechart.js index 66e9d22..63e2249 100644 --- a/frontend/src/components/resourcechart/resourcechart.js +++ b/frontend/src/components/resourcechart/resourcechart.js @@ -11,7 +11,7 @@ export default function ResourceChart(props) { const [data, setData] = React.useState(null); let { id } = useParams(); const loadData = async () => { - let nextData = await fetch(`/simcompanies/API/day?date=${props["day"]}&kind=${id}`); + let nextData = await fetch(`/simcompanies/API/day?kind=${id}`); nextData = await nextData.json(); for (let i = 0; i < nextData.length; i++) { nextData[i]["time"] = new Date(nextData[i]["time"]); From 66d837f3879cc6f05d59d4f701a30ab2d4916e49 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Sun, 19 Apr 2020 18:40:03 +0200 Subject: [PATCH 04/25] render all quality price charts --- backend/index.js | 15 ++++- .../components/resourcechart/resourcechart.js | 57 ++++++++++++++++--- 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/backend/index.js b/backend/index.js index 4b89d90..1dae020 100644 --- a/backend/index.js +++ b/backend/index.js @@ -16,6 +16,17 @@ var resourceList; var serverStartupComplete = false; + +function twoDigits(d) { + if (0 <= d && d < 10) return "0" + d.toString(); + if (-10 < d && d < 0) return "-0" + (-1 * d).toString(); + return d.toString(); +} +Date.prototype.toMysqlFormat = function () { + return this.getFullYear() + "-" + twoDigits(1 + this.getMonth()) + "-" + twoDigits(this.getDate()) + " " + twoDigits(this.getHours()) + ":" + twoDigits(this.getMinutes()) + ":" + twoDigits(this.getSeconds()); +}; + + async function loadData() { var rL = await fetch("https://www.simcompanies.com/api/v3/en/encyclopedia/resources/"); resourceList = await rL.json(); @@ -48,11 +59,11 @@ app.get('/API/day', function (req, res) { if (kind === -1) return res.send(mockDataDay); if (kind >= 1 && kind <= 113) { - var dayend = new Date().toISOString().slice(0, 19).replace('T', ' '); + var dayend = new Date().toMysqlFormat(); var daybegin = new Date(); daybegin.setDate(daybegin.getDate() - 1); daybegin = daybegin.toISOString().slice(0, 19).replace('T', ' '); - const querystring = `SELECT time, price, quality FROM marketv2 WHERE kind = ${kind} AND time > "${daybegin}" AND time < "${dayend}" ORDER BY quality, time`; + const querystring = `SELECT time, price, quality FROM marketv2 WHERE kind = ${kind} AND time > "${daybegin}" AND time < "${dayend}" ORDER BY time, quality`; connection.query(querystring, function (error, results, fields) { if (error) { res.status(status.INTERNAL_SERVER_ERROR).send("database connection failed"); diff --git a/frontend/src/components/resourcechart/resourcechart.js b/frontend/src/components/resourcechart/resourcechart.js index 63e2249..3b74533 100644 --- a/frontend/src/components/resourcechart/resourcechart.js +++ b/frontend/src/components/resourcechart/resourcechart.js @@ -11,13 +11,49 @@ export default function ResourceChart(props) { const [data, setData] = React.useState(null); let { id } = useParams(); const loadData = async () => { - let nextData = await fetch(`/simcompanies/API/day?kind=${id}`); - nextData = await nextData.json(); - for (let i = 0; i < nextData.length; i++) { - nextData[i]["time"] = new Date(nextData[i]["time"]); - nextData[i]["time"] = nextData[i]["time"].toLocaleTimeString(); + let dayData = await fetch(`/simcompanies/API/day?kind=${id}`); + let dataWithDate = await dayData.json(); + let qualitySortedData = []; + for (let i = 0; i < dataWithDate.length; i++) { + if (i === 0) qualitySortedData.push(dataWithDate[i]); + else { + if (dataWithDate[i]["time"] === qualitySortedData[qualitySortedData.length - 1]["time"]) { + switch (dataWithDate[i].quality) { + case 0: break; + case 1: + qualitySortedData[qualitySortedData.length - 1]["q1"] = dataWithDate[i]["price"]; + break; + case 2: + qualitySortedData[qualitySortedData.length - 1]["q2"] = dataWithDate[i]["price"]; + break; + case 3: + qualitySortedData[qualitySortedData.length - 1]["q3"] = dataWithDate[i]["price"]; + break; + case 4: + qualitySortedData[qualitySortedData.length - 1]["q4"] = dataWithDate[i]["price"]; + break; + case 5: + qualitySortedData[qualitySortedData.length - 1]["q5"] = dataWithDate[i]["price"]; + break; + case 6: + qualitySortedData[qualitySortedData.length - 1]["q6"] = dataWithDate[i]["price"]; + break; + case 7: + qualitySortedData[qualitySortedData.length - 1]["q7"] = dataWithDate[i]["price"]; + break; + } + } else { + qualitySortedData.push(dataWithDate[i]); + qualitySortedData[qualitySortedData.length - 1]["q0"] = qualitySortedData[qualitySortedData.length - 1]["price"]; + } + } } - setData(nextData) + for (let i = 0; i < qualitySortedData.length; i++) { + qualitySortedData[i]["time"] = new Date(qualitySortedData[i]["time"]); + qualitySortedData[i]["time"] = qualitySortedData[i]["time"].toLocaleTimeString(); + } + console.log(qualitySortedData); + setData(qualitySortedData) } if (data === null) { @@ -38,7 +74,14 @@ export default function ResourceChart(props) { - + + + + + + + + ); } From e583b61ae585cb6bd98a232aac195bf9e6f6d096 Mon Sep 17 00:00:00 2001 From: Hawk Date: Fri, 24 Apr 2020 23:36:51 +0200 Subject: [PATCH 05/25] added refresh button on resource chart close #31 --- .../src/components/resourcechart/resourcechart.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/resourcechart/resourcechart.js b/frontend/src/components/resourcechart/resourcechart.js index 1029368..b943e16 100644 --- a/frontend/src/components/resourcechart/resourcechart.js +++ b/frontend/src/components/resourcechart/resourcechart.js @@ -11,11 +11,15 @@ import CardContent from '@material-ui/core/CardContent'; import Typography from '@material-ui/core/Typography'; import { makeStyles } from '@material-ui/core/styles'; import Grid from '@material-ui/core/Grid'; +import Button from '@material-ui/core/Button'; const useStyles = makeStyles((theme) => ({ root: { display: 'flex', }, + card: { + padding: 20 + } })); const output = (data) => { @@ -86,6 +90,8 @@ export default function ResourceChart(props) { case 7: qualitySortedData[qualitySortedData.length - 1]["q7"] = dataWithDate[i]["price"]; break; + default: + break; } } else { qualitySortedData.push(dataWithDate[i]); @@ -105,7 +111,9 @@ export default function ResourceChart(props) { loadData(); } - + const handleClick = (e) => { + loadData() + } return (
    @@ -116,10 +124,13 @@ export default function ResourceChart(props) { - + {output(data)} + From aca0b1fc7803b100473179dcdef2583980200afc Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 00:12:08 +0200 Subject: [PATCH 06/25] added first group for resourcegroups #9 --- frontend/src/components/selectResource/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/components/selectResource/index.js b/frontend/src/components/selectResource/index.js index 9027869..6ab052e 100644 --- a/frontend/src/components/selectResource/index.js +++ b/frontend/src/components/selectResource/index.js @@ -10,6 +10,11 @@ const useStyles = makeStyles(theme => ({ } })); +const agri = [66, 3, 4, 5, 6, 7, 8, 9, 40, 72, 106] +const construct = [101, 102, 103, 104, 105, 107, 108, 109, 110, 111] +const fashion = [41, 46, 60, 61, 62, 63, 64, 65, 70, 71] +const energy = [10, 11, 12, 1, 73, 74, 83] +const electronics = [20, 21, 22, 23, 24, 25, 26, 27, 28, 79, 98] export default function SelectResource() { From 6951038aba096b10d24bbad88d6a3873dcd34ca5 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 00:52:31 +0200 Subject: [PATCH 07/25] created createAccount page --- frontend/src/App.js | 2 + frontend/src/components/content.js | 1 + .../src/components/login/createAccount.js | 152 ++++++++++++++++++ frontend/src/components/login/login.js | 18 +++ 4 files changed, 173 insertions(+) create mode 100644 frontend/src/components/login/createAccount.js diff --git a/frontend/src/App.js b/frontend/src/App.js index 3a95573..3ee77e8 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -9,6 +9,7 @@ import { } from "react-router-dom"; import Login from './components/login/login'; +import CreateAccount from './components/login/createAccount'; import "./App.css"; @@ -34,6 +35,7 @@ class App extends Component { + diff --git a/frontend/src/components/content.js b/frontend/src/components/content.js index 857f5da..7c544aa 100644 --- a/frontend/src/components/content.js +++ b/frontend/src/components/content.js @@ -24,6 +24,7 @@ export default function Content() {
    + } />
    diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js new file mode 100644 index 0000000..b6e65ee --- /dev/null +++ b/frontend/src/components/login/createAccount.js @@ -0,0 +1,152 @@ +import React from 'react'; +import { Link } from "react-router-dom"; +import { makeStyles, withStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import Typography from '@material-ui/core/Typography'; +import Box from '@material-ui/core/Box'; +import Button from '@material-ui/core/Button'; +import Logo from "../../img/logo.png"; +import TextField from '@material-ui/core/TextField'; +import Grid from '@material-ui/core/Grid'; + +const url = "/simcompanies/API/user/create" + +const useStyles = makeStyles(theme => ({ + card: { + backgroundColor: "#0B1929", + display: "flex" + }, + logo: { + maxWidth: "50%", + height: "auto" + }, + input: { + color: "#9daac1" + }, + grid: { + display: "flex" + } +})); + +const CssTextField = withStyles({ + root: { + '& label.Mui-focused': { + color: 'white', + }, + '&:hover label': { + color: '#FFC800', + }, + '& label': { + color: 'white', + }, + '& .MuiOutlinedInput-root': { + '& input': { + color: "white" + }, + '& fieldset': { + borderColor: 'white', + color: "white" + }, + '&:hover fieldset': { + borderColor: "#FFC800", + }, + '&.Mui-focused fieldset': { + borderColor: 'white', + }, + }, + }, +})(TextField); + +const putCreateAccount = async (url, data) => { + const response = await fetch(url, { + method: 'PUT', + mode: 'cors', + cache: 'no-cache', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + referrerPolicy: 'no-referrer', + body: JSON.stringify(data) + }); +} + +export default function CreateAccount() { + const classes = useStyles(); + const [username, setUsername] = React.useState(""); + const [password, setPassword] = React.useState(""); + + const handleClick = (e) => { + + if (username !== "" && password !== "") { + putCreateAccount(url, { email: username, password: password }) + + setUsername("") + setPassword("") + } + } + const handleChangeUSR = (e) => { + setUsername(e.target.value) + } + const handleChangePW = (e) => { + setPassword(e.target.value) + } + + return ( + + + + + SC Dashboard Logo + +
    + + + + + + Create new Account + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + ) + +} diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 352c356..68355ba 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -9,6 +9,8 @@ import Button from '@material-ui/core/Button'; import Logo from "../../img/logo.png"; import TextField from '@material-ui/core/TextField'; import Grid from '@material-ui/core/Grid'; +import Link1 from '@material-ui/core/Link'; +import CreateAccount from './createAccount'; const useStyles = makeStyles(theme => ({ @@ -69,6 +71,13 @@ export default function Login() {
    + + + + Login + + + + + + + + Create new Account + + + + From bf3886811611a8a89b2e0fdbf9099c6bd1f941cf Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 01:18:28 +0200 Subject: [PATCH 09/25] minor fix --- frontend/src/components/login/login.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 7326bbb..e0ab347 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -126,6 +126,7 @@ export default function Login() { id="usernameInput" label="Username" variant="outlined" + value={username} onChange={handleChangeUSR} className={classes.input} /> @@ -139,6 +140,7 @@ export default function Login() { label="Password" autoComplete="current-password" variant="outlined" + value={password} onChange={handleChangePW} className={classes.input} /> From 7e4e39816a75a9237ea137ec15093f4517c22b08 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 01:52:33 +0200 Subject: [PATCH 10/25] added redirects --- frontend/src/App.js | 41 +++++++++++++++++-- .../src/components/login/createAccount.js | 5 +++ frontend/src/components/login/login.js | 11 ++--- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/frontend/src/App.js b/frontend/src/App.js index 3ee77e8..fa56e5e 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -11,10 +11,46 @@ import Login from './components/login/login'; import CreateAccount from './components/login/createAccount'; import "./App.css"; +import { Redirect } from "react-router-dom"; +class ProtectedRoute extends Component { + constructor(props) { + super(props); + this.state = { auth: false }; + } + render() { + const url = "/simcompanies/API/testlogin" + const checkLogin = async (url) => { + const response = await fetch(url); + if (response.status == "200") { + this.setState = { + auth: true + } + } else { + this.setState = { + auth: false + } + } + } + checkLogin(url) + const { component: Component, ...props } = this.props + + return ( + ( + this.state.authenticated ? + : + + )} + /> + ) + } +} class App extends Component { + render() { const theme = createMuiTheme({ palette: { @@ -29,6 +65,7 @@ class App extends Component { } }) + //change basename in browserrouter if uri changes return ( @@ -36,10 +73,8 @@ class App extends Component { - + - - diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index 2950a44..7805472 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -9,6 +9,7 @@ import Button from '@material-ui/core/Button'; import Logo from "../../img/logo.png"; import TextField from '@material-ui/core/TextField'; import Grid from '@material-ui/core/Grid'; +import { Redirect } from "react-router-dom"; const url = "/simcompanies/API/user/create" @@ -70,6 +71,10 @@ const putCreateAccount = async (url, data) => { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); + + if (response.status == "200") { + return + } } export default function CreateAccount() { diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index e0ab347..b91a897 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -10,6 +10,7 @@ import Logo from "../../img/logo.png"; import TextField from '@material-ui/core/TextField'; import Grid from '@material-ui/core/Grid'; import Link1 from '@material-ui/core/Link'; +import { Redirect } from "react-router-dom"; const url = "/simcompanies/API/user/login" const useStyles = makeStyles(theme => ({ @@ -70,18 +71,14 @@ const postLogin = async (url, data) => { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); -} - -const checkLogin = async (url) => { - const response = await fetch(url); if (response.status == "200") { - return true - } else { - return false + return } } + + export default function Login() { const classes = useStyles(); From 55e693b38d607b83a007dc5a8ac54be09b6f85b8 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 02:22:52 +0200 Subject: [PATCH 11/25] fixed login redirect --- frontend/src/components/login/login.js | 171 +++++++++++++------------ 1 file changed, 88 insertions(+), 83 deletions(-) diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index b91a897..3dc4036 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -12,7 +12,7 @@ import Grid from '@material-ui/core/Grid'; import Link1 from '@material-ui/core/Link'; import { Redirect } from "react-router-dom"; -const url = "/simcompanies/API/user/login" + const useStyles = makeStyles(theme => ({ card: { backgroundColor: "#0B1929", @@ -59,31 +59,32 @@ const CssTextField = withStyles({ }, })(TextField); -const postLogin = async (url, data) => { - const response = await fetch(url, { - method: 'POST', - mode: 'cors', - cache: 'no-cache', - headers: { - 'Content-Type': 'application/json' - }, - redirect: 'follow', - referrerPolicy: 'no-referrer', - body: JSON.stringify(data) - }); - - if (response.status == "200") { - return - } -} - - export default function Login() { const classes = useStyles(); - + const url = "/simcompanies/API/user/login" const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); + const [login, setLogin] = React.useState(true); + + + const postLogin = async (url, data) => { + const response = await fetch(url, { + method: 'POST', + mode: 'cors', + cache: 'no-cache', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + referrerPolicy: 'no-referrer', + body: JSON.stringify(data) + }); + + if (response.status == "200") { + setLogin(false) + } + } const handleClick = (e) => { @@ -100,71 +101,75 @@ export default function Login() { const handleChangePW = (e) => { setPassword(e.target.value) } + + return ( - - - - - SC Dashboard Logo - - + + login === true ? + < Box className="loginBackground" display="flex" justifyContent="center" alignItems="center" m={1} p={1} > + + - - - - - Login - - - - - - - - - - - - - - - - - - Create new Account - - - - - - - - - - + SC Dashboard Logo - - - - +
    + + + + + + Login + + + + + + + + + + + + + + + + + + Create new Account + + + + + + + + + + + +
    + + +
    : ) } From 7eb248bb2687044e42cd42c63582fcceba9c6fd0 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Sat, 25 Apr 2020 02:27:09 +0200 Subject: [PATCH 12/25] add login and create account functions --- backend/index.js | 103 +++++++- backend/package-lock.json | 521 ++++++++++++++++++++++++++++++++++++++ backend/package.json | 9 +- frontend/src/App.js | 50 ++-- 4 files changed, 655 insertions(+), 28 deletions(-) diff --git a/backend/index.js b/backend/index.js index 8b1707d..60d313c 100644 --- a/backend/index.js +++ b/backend/index.js @@ -2,17 +2,37 @@ const express = require('express') const app = express(); const status = require('http-status'); const fetch = require('node-fetch'); +const cors = require('cors'); +const bodyParser = require('body-parser'); var mysql = require('mysql'); +var passport = require('passport'); +var LocalStrategy = require('passport-local').Strategy; +var session = require('express-session'); +var MySQLStore = require('express-mysql-session')(session); +const bcrypt = require('bcrypt'); const path = require('path'); -var connection = mysql.createConnection({ +var connection = mysql.createPool({ + connectionLimit: 25, host: 'localhost', user: 'simcompanies', password: '', database: 'simcompanies' }); +var sessionStore = new MySQLStore({ + clearExpired: false, + schema: { + tableName: 'sessions', + columnNames: { + session_id: 'session_id', + expires: 'expires', + data: 'data' + } + } +}, connection); const mockDataDay = require('./mockdata-test/day.json'); var resourceList; +const saltRounds = 13; var serverStartupComplete = false; @@ -20,9 +40,25 @@ async function loadData() { var rL = await fetch("https://www.simcompanies.com/api/v3/en/encyclopedia/resources/"); resourceList = await rL.json(); serverStartupComplete = true; + console.log("SERVER STARTUP COMPLETED"); } loadData(); +app.use(cors({ credentials: true })); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(bodyParser.json()); +app.use(session({ + secret: "simCoRoxUFocker", + saveUninitialized: true, + resave: true, + store: sessionStore, + "cookie": { + "maxAge": 86400 * 1000 + } +})); +app.use(passport.initialize()); +app.use(passport.session()); + app.get("*", function (req, res, next) { if (!serverStartupComplete) return res.send("Server is starting..."); @@ -39,7 +75,70 @@ app.all("/*", function (req, res, next) { if (!/^\/API\/.*/.test(req.url)) { return res.sendFile(path.join(__dirname, 'frontend', 'index.html')); } else return next(); -}) +}); + +passport.use('local-login', new LocalStrategy({ + usernameField: "email", + passwordField: "password", + passReqToCallback: true +}, function (req, email, password, done) { + email = mysql.escape(email); + connection.query(`SELECT * from user WHERE email = ${email} AND deactivated = 0`, function (err, rows) { + if (err) { + return res.status(static.INTERNAL_SERVER_ERROR).send(); + } + if (!rows.length) { + return done(null, false); + } + if (!bcrypt.compareSync(password, rows[0].password)) { + return done(null, false); + } + return done(null, rows[0]); + }) +} +)); + +passport.serializeUser(function (user, done) { + done(null, user.id); +}); + +passport.deserializeUser(function (id, done) { + connection.query(`select * from user where id = ${id} AND deactivated = 0`, function (err, rows) { + done(err, rows[0]); + }) +}); + +app.post("/API/user/login", passport.authenticate('local-login'), function (req, res) { + res.status(status.OK).send(); +}); + +app.put("/API/user/create", function (req, res) { + let { email, password } = req.body; + if (email && password) { + email = mysql.escape(email); + password = mysql.escape(bcrypt.hashSync(password, saltRounds)); + connection.query(`INSERT INTO user (deactivated, email, password) values (1, ${email}, ${password})`, function (err, rows) { + if (err) + return res.send(status.INTERNAL_SERVER_ERROR).send(); + return res.status(status.OK).send(); + }); + } else { + res.status(status.BAD_REQUEST).send(); + } +}); + +app.all("*", function (req, res, next) { + if (req.isAuthenticated()) { + return next(); + } + else { + res.status(status.UNAUTHORIZED).send(); + } +}); + +app.get("/API/testlogin", function (req, res) { + res.status(status.OK).send(req.user["email"]); +}); app.get('/API/day', function (req, res) { var date = new Date(req.query.date); diff --git a/backend/package-lock.json b/backend/package-lock.json index eebf721..3d53298 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -48,6 +48,20 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -58,6 +72,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "bcrypt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-4.0.1.tgz", + "integrity": "sha512-hSIZHkUxIDS5zA2o00Kf2O5RfVbQ888n54xQoF/eIaquU4uaLxK8vhhBdktd0B3n2MjkcAWzv4mnhogykBKOUQ==", + "requires": { + "node-addon-api": "^2.0.0", + "node-pre-gyp": "0.14.0" + } + }, "bignumber.js": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", @@ -156,6 +179,11 @@ "readdirp": "~3.3.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "ci-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", @@ -166,6 +194,11 @@ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -197,6 +230,11 @@ "xdg-basedir": "^3.0.0" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -225,6 +263,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", @@ -261,6 +308,11 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -271,6 +323,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -360,6 +417,99 @@ "vary": "~1.1.2" } }, + "express-mysql-session": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/express-mysql-session/-/express-mysql-session-2.1.4.tgz", + "integrity": "sha512-Fcq168xVI8jtIJLhVHLJvBCvJlHnFWCcPmtt93UrWH38T2YsB919KrMCCh57/YkECkfff/L5zTQ95K1DxfOixg==", + "requires": { + "debug": "4.1.1", + "express-session": "1.17.0", + "mysql": "2.18.1", + "underscore": "1.9.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "express-session": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.0.tgz", + "integrity": "sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "express-session": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", + "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -392,17 +542,91 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, "fsevents": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "optional": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "glob-parent": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", @@ -447,6 +671,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -477,6 +706,14 @@ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -487,6 +724,15 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -669,6 +915,45 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -685,16 +970,74 @@ "sqlstring": "2.3.1" } }, + "needle": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz", + "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "node-addon-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz", + "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA==" + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + }, + "dependencies": { + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, "nodemon": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.2.tgz", @@ -740,6 +1083,29 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -748,6 +1114,27 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -756,6 +1143,38 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -777,6 +1196,33 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "passport": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz", + "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1" + } + }, + "passport-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", @@ -792,6 +1238,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" + }, "picomatch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", @@ -836,6 +1287,11 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -902,6 +1358,14 @@ "rc": "^1.0.1" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -912,6 +1376,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -963,6 +1432,11 @@ "send": "0.17.1" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -1039,6 +1513,27 @@ "has-flag": "^3.0.0" } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -1082,6 +1577,14 @@ "mime-types": "~2.1.24" } }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", @@ -1090,6 +1593,11 @@ "debug": "^2.2.0" } }, + "underscore": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", + "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==" + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -1156,6 +1664,14 @@ "isexe": "^2.0.0" } }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "widest-line": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", @@ -1164,6 +1680,11 @@ "string-width": "^2.1.1" } }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, "write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", diff --git a/backend/package.json b/backend/package.json index 91ef49c..28fb4bc 100644 --- a/backend/package.json +++ b/backend/package.json @@ -11,10 +11,17 @@ "author": "Oliver Boehlk", "license": "GPL-3.0", "dependencies": { + "bcrypt": "^4.0.1", + "body-parser": "^1.19.0", + "cors": "^2.8.5", "express": "^4.17.1", + "express-mysql-session": "^2.1.4", + "express-session": "^1.17.1", "http-status": "^1.4.2", "mysql": "^2.18.1", "node-fetch": "^2.6.0", - "nodemon": "^2.0.2" + "nodemon": "^2.0.2", + "passport": "^0.4.1", + "passport-local": "^1.0.0" } } diff --git a/frontend/src/App.js b/frontend/src/App.js index fa56e5e..a60257f 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -16,36 +16,36 @@ import { Redirect } from "react-router-dom"; class ProtectedRoute extends Component { constructor(props) { super(props); - this.state = { auth: false }; + this.state = { auth: null }; } - render() { - const url = "/simcompanies/API/testlogin" - const checkLogin = async (url) => { - const response = await fetch(url); - if (response.status == "200") { - this.setState = { - auth: true - } - } else { - this.setState = { - auth: false - } - } + async componentWillMount() { + const url = "/simcompanies/API/testlogin"; + const response = await fetch(url); + if (response.status == "200") { + this.setState({ + auth: true + }); + } else { + this.setState({ + auth: false + }); } + } - checkLogin(url) - const { component: Component, ...props } = this.props - + render() { + const { component: Component, ...props } = this.props; return ( - ( - this.state.authenticated ? - : - - )} - /> + this.state.auth === null ? + "Loading..." : + ( + this.state.auth ? + : + + )} + /> ) } } From bbb5b7e3c0f179dcf9d4c3b7d40147a74611e6d9 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 02:28:55 +0200 Subject: [PATCH 13/25] fixed redirect --- .../src/components/login/createAccount.js | 142 +++++++++--------- 1 file changed, 73 insertions(+), 69 deletions(-) diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index 7805472..541ea5c 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -59,29 +59,32 @@ const CssTextField = withStyles({ }, })(TextField); -const putCreateAccount = async (url, data) => { - const response = await fetch(url, { - method: 'PUT', - mode: 'cors', - cache: 'no-cache', - headers: { - 'Content-Type': 'application/json' - }, - redirect: 'follow', - referrerPolicy: 'no-referrer', - body: JSON.stringify(data) - }); - if (response.status == "200") { - return - } -} export default function CreateAccount() { const classes = useStyles(); const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); + const [login, setLogin] = React.useState(true); + + const putCreateAccount = async (url, data) => { + const response = await fetch(url, { + method: 'PUT', + mode: 'cors', + cache: 'no-cache', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + referrerPolicy: 'no-referrer', + body: JSON.stringify(data) + }); + + if (response.status == "200") { + setLogin(false) + } + } const handleClick = (e) => { if (username !== "" && password !== "") { @@ -99,61 +102,62 @@ export default function CreateAccount() { } return ( - - - - - SC Dashboard Logo - -
    + login === true ? + + + - - - - - Create new Account - - - - - - - - - - - - - - - - - - - + SC Dashboard Logo - - - -
    +
    + + + + + + Create new Account + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    : ) } From 81564bb5a7a4e4fe74f88cea959fdcd99d7e8be6 Mon Sep 17 00:00:00 2001 From: Hawk Date: Sat, 25 Apr 2020 03:16:55 +0200 Subject: [PATCH 14/25] Created resource categories close #9 --- .../src/components/selectResource/index.js | 181 +++++++++++++++++- .../components/selectResource/resourceCard.js | 7 +- 2 files changed, 178 insertions(+), 10 deletions(-) diff --git a/frontend/src/components/selectResource/index.js b/frontend/src/components/selectResource/index.js index 6ab052e..716e85e 100644 --- a/frontend/src/components/selectResource/index.js +++ b/frontend/src/components/selectResource/index.js @@ -2,11 +2,12 @@ import React from 'react'; import { makeStyles } from '@material-ui/core/styles'; import Grid from '@material-ui/core/Grid'; import ResourceCard from './resourceCard'; +import Typography from '@material-ui/core/Typography'; const useStyles = makeStyles(theme => ({ - card: { - + grid: { + display: "flex" } })); @@ -15,29 +16,193 @@ const construct = [101, 102, 103, 104, 105, 107, 108, 109, 110, 111] const fashion = [41, 46, 60, 61, 62, 63, 64, 65, 70, 71] const energy = [10, 11, 12, 1, 73, 74, 83] const electronics = [20, 21, 22, 23, 24, 25, 26, 27, 28, 79, 98] +const auto = [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 112] +const aero = [77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 89] +const resource = [2, 13, 14, 15, 16, 17, 18, 19, 42, 43, 44, 45, 68, 69, 75, 76] +const research = [29, 30, 31, 32, 33, 34, 35, 58, 59, 100, 113] export default function SelectResource() { const classes = useStyles(); - const [resources, setResources] = React.useState(null); + const [resources, setResources] = React.useState([]); const loadResources = async () => { var resourceJSON = await fetch("/simcompanies/API/resourcelist"); resourceJSON = await resourceJSON.json(); - let rArr = []; + let rArr = [[], [], [], [], [], [], [], [], [], []]; for (let i = 0; i < resourceJSON.length; i++) { - rArr.push(); + if (agri.includes(resourceJSON[i]["db_letter"])) { + rArr[0].push(); + } else if (construct.includes(resourceJSON[i]["db_letter"])) { + rArr[1].push(); + } else if (fashion.includes(resourceJSON[i]["db_letter"])) { + rArr[2].push(); + } else if (energy.includes(resourceJSON[i]["db_letter"])) { + rArr[3].push(); + } else if (electronics.includes(resourceJSON[i]["db_letter"])) { + rArr[4].push(); + } else if (auto.includes(resourceJSON[i]["db_letter"])) { + rArr[5].push(); + } else if (aero.includes(resourceJSON[i]["db_letter"])) { + rArr[6].push(); + } else if (resource.includes(resourceJSON[i]["db_letter"])) { + rArr[7].push(); + } else if (research.includes(resourceJSON[i]["db_letter"])) { + rArr[8].push(); + } else { + rArr[9].push(); + } + } setResources(rArr); } - if (resources === null) + if (resources.length === 0) loadResources(); return ( - - {resources} + + + + + + Agriculture & Food + + + + + {resources[0]} + + + + + + + + + Construction + + + + + {resources[1]} + + + + + + + + + Fashion + + + + + {resources[2]} + + + + + + + + + Energy + + + + + {resources[3]} + + + + + + + + + Electronics + + + + + {resources[4]} + + + + + + + + + Automotive + + + + + {resources[5]} + + + + + + + + + Aerospace + + + + + {resources[6]} + + + + + + + + + Resources + + + + + {resources[7]} + + + + + + + + + Research + + + + + {resources[8]} + + + + + + + + + Others + + + + + {resources[9]} + + + + ); diff --git a/frontend/src/components/selectResource/resourceCard.js b/frontend/src/components/selectResource/resourceCard.js index 683f04c..f5be27b 100644 --- a/frontend/src/components/selectResource/resourceCard.js +++ b/frontend/src/components/selectResource/resourceCard.js @@ -8,7 +8,7 @@ import { Link } from 'react-router-dom'; import Link1 from '@material-ui/core/Link'; import ListItem from '@material-ui/core/ListItem'; import ListItemText from '@material-ui/core/ListItemText'; -import CardMedia from '@material-ui/core/CardMedia'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; const useStyles = makeStyles(theme => ({ @@ -46,7 +46,10 @@ export default function ResourceCard(props) { - {props.resource["name"]} + + {props.resource["name"]} + + From 6d24cb5c539a1e39bfd79ace23a8c129396c5ae6 Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 20:27:19 +0200 Subject: [PATCH 15/25] added login feedback snackbar --- frontend/package-lock.json | 12 +++ frontend/package.json | 81 ++++++++++--------- .../src/components/login/createAccount.js | 8 +- frontend/src/components/login/login.js | 12 +-- .../src/components/login/loginfeedback.js | 51 ++++++++++++ 5 files changed, 115 insertions(+), 49 deletions(-) create mode 100644 frontend/src/components/login/loginfeedback.js diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 482ba0f..0c7b100 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1292,6 +1292,18 @@ "@babel/runtime": "^7.4.4" } }, + "@material-ui/lab": { + "version": "4.0.0-alpha.51", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.51.tgz", + "integrity": "sha512-X/qv/sZQGhXhKDn83L94gNahGDQj2Rd6r7/9tPpQbSn2A1LAt1+jlTiWD1HUgDXZEPqTsJMajOjWSEmTL7/q7w==", + "requires": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.9.6", + "clsx": "^1.0.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0" + } + }, "@material-ui/styles": { "version": "4.9.10", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.10.tgz", diff --git a/frontend/package.json b/frontend/package.json index e197578..870a97b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,41 +1,42 @@ { - "name": "simcompanies-dashboard", - "version": "0.1.0", - "homepage": "https://projects.oliver.boehlk.io/simcompanies/", - "private": true, - "dependencies": { - "@material-ui/core": "^4.9.8", - "@material-ui/icons": "^4.9.1", - "@testing-library/jest-dom": "^4.2.4", - "@testing-library/react": "^9.4.0", - "@testing-library/user-event": "^7.2.1", - "react": "^16.12.0", - "react-dom": "^16.12.0", - "react-router-dom": "^5.1.2", - "react-scripts": "3.4.0", - "typeface-roboto": "0.0.75", - "recharts": "^1.8.5" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "proxy": "http://127.0.0.1:3001" -} \ No newline at end of file + "name": "simcompanies-dashboard", + "version": "0.1.0", + "homepage": "https://projects.oliver.boehlk.io/simcompanies/", + "private": true, + "dependencies": { + "@material-ui/core": "^4.9.8", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "^4.0.0-alpha.51", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.4.0", + "@testing-library/user-event": "^7.2.1", + "react": "^16.12.0", + "react-dom": "^16.12.0", + "react-router-dom": "^5.1.2", + "react-scripts": "3.4.0", + "recharts": "^1.8.5", + "typeface-roboto": "0.0.75" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "proxy": "http://127.0.0.1:3001" +} diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index 541ea5c..f1d4c5d 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -10,6 +10,7 @@ import Logo from "../../img/logo.png"; import TextField from '@material-ui/core/TextField'; import Grid from '@material-ui/core/Grid'; import { Redirect } from "react-router-dom"; +import LoginFeedback from './loginfeedback'; const url = "/simcompanies/API/user/create" @@ -59,14 +60,12 @@ const CssTextField = withStyles({ }, })(TextField); - - export default function CreateAccount() { const classes = useStyles(); const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); - + const [status, setStatus] = React.useState(null); const putCreateAccount = async (url, data) => { const response = await fetch(url, { @@ -80,7 +79,7 @@ export default function CreateAccount() { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); - + setStatus(response.status) if (response.status == "200") { setLogin(false) } @@ -157,6 +156,7 @@ export default function CreateAccount() { + : ) diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 3dc4036..10ba5ca 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -11,6 +11,7 @@ import TextField from '@material-ui/core/TextField'; import Grid from '@material-ui/core/Grid'; import Link1 from '@material-ui/core/Link'; import { Redirect } from "react-router-dom"; +import LoginFeedback from './loginfeedback'; const useStyles = makeStyles(theme => ({ @@ -33,7 +34,7 @@ const useStyles = makeStyles(theme => ({ const CssTextField = withStyles({ root: { '& label.Mui-focused': { - color: 'white', + color: "#FFC800", }, '&:hover label': { color: '#FFC800', @@ -53,7 +54,7 @@ const CssTextField = withStyles({ borderColor: "#FFC800", }, '&.Mui-focused fieldset': { - borderColor: 'white', + borderColor: "#FFC800", }, }, }, @@ -66,7 +67,7 @@ export default function Login() { const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); - + const [status, setStatus] = React.useState(null); const postLogin = async (url, data) => { const response = await fetch(url, { @@ -80,7 +81,7 @@ export default function Login() { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); - + setStatus(response.status) if (response.status == "200") { setLogin(false) } @@ -161,7 +162,7 @@ export default function Login() { + @@ -169,6 +170,7 @@ export default function Login() { + : ) diff --git a/frontend/src/components/login/loginfeedback.js b/frontend/src/components/login/loginfeedback.js new file mode 100644 index 0000000..3ac61d4 --- /dev/null +++ b/frontend/src/components/login/loginfeedback.js @@ -0,0 +1,51 @@ +import React, { useEffect } from 'react'; +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; + +function Alert(props) { + return ; +} + +export default function LoginFeedback(props) { + const [login, setLogin] = React.useState(null); + const [open, setOpen] = React.useState(true); + const [open1, setOpen1] = React.useState(true); + useEffect(() => { + if (login != props.login) { + setLogin(props.login) + } + }, [login, setLogin, props.login]); + const handleClose = (event, reason) => { + setOpen(false); + }; + const handleClose1 = (event, reason) => { + setOpen1(false); + }; + + const snack = (login) => { + if (login == "200") { + return ( + + + {props.successText} + + ) + } else if (login != null) { + return ( + + + {props.errorText} + + + ) + } + } + + return ( + + {snack(login)} + + + ) + +} From 1eaea6c7ed1cfbf6c3ef4d1ebfb6069a4739d913 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Thu, 30 Apr 2020 20:45:46 +0200 Subject: [PATCH 16/25] use cross-env for plattform-independet env --- backend/package-lock.json | 52 +++++++++++++++++++++++++++++++++++++++ backend/package.json | 7 ++++-- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 3d53298..37d7d2c 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -280,6 +280,58 @@ "capture-stack-trace": "^1.0.0" } }, + "cross-env": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", diff --git a/backend/package.json b/backend/package.json index 28fb4bc..536bbf7 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "start": "node index.js", - "debug": "nodemon index.js", + "debug": "cross-env NODE_ENV=debug nodemon index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Oliver Boehlk", @@ -23,5 +23,8 @@ "nodemon": "^2.0.2", "passport": "^0.4.1", "passport-local": "^1.0.0" + }, + "devDependencies": { + "cross-env": "^7.0.2" } -} +} \ No newline at end of file From 43d04e0a32a08d446f2da1307a7dcd89edc87d81 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Thu, 30 Apr 2020 20:46:01 +0200 Subject: [PATCH 17/25] updated mock data with quality --- backend/mockdata-test/day.json | 1530 ++++++++++++++++++++++---------- 1 file changed, 1058 insertions(+), 472 deletions(-) diff --git a/backend/mockdata-test/day.json b/backend/mockdata-test/day.json index 086eb08..6a830c4 100644 --- a/backend/mockdata-test/day.json +++ b/backend/mockdata-test/day.json @@ -1,946 +1,1532 @@ [ { - "time": "2020-04-16T22:00:09.000Z", - "price": 0.268 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.24, + "quality": 0 }, { - "time": "2020-04-16T22:05:05.000Z", - "price": 0.268 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.244, + "quality": 1 }, { - "time": "2020-04-16T22:10:04.000Z", - "price": 0.268 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.244, + "quality": 2 }, { - "time": "2020-04-16T22:15:09.000Z", - "price": 0.27 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.243, + "quality": 3 }, { - "time": "2020-04-16T22:20:12.000Z", - "price": 0.264 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-16T22:25:11.000Z", - "price": 0.268 + "time": "2020-04-29T17:00:04.000Z", + "price": 0.245, + "quality": 5 }, { - "time": "2020-04-16T22:30:12.000Z", - "price": 0.27 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.244, + "quality": 0 }, { - "time": "2020-04-16T22:35:07.000Z", - "price": 0.271 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-16T22:40:08.000Z", - "price": 0.263 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.246, + "quality": 2 }, { - "time": "2020-04-16T22:45:12.000Z", - "price": 0.26 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.248, + "quality": 3 }, { - "time": "2020-04-16T22:50:14.000Z", - "price": 0.268 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-16T22:55:24.000Z", - "price": 0.267 + "time": "2020-04-29T17:30:03.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-16T23:00:21.000Z", - "price": 0.269 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.244, + "quality": 0 }, { - "time": "2020-04-16T23:05:05.000Z", - "price": 0.259 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.246, + "quality": 1 }, { - "time": "2020-04-16T23:10:23.000Z", - "price": 0.272 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.247, + "quality": 2 }, { - "time": "2020-04-16T23:15:11.000Z", - "price": 0.272 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.249, + "quality": 3 }, { - "time": "2020-04-16T23:20:27.000Z", - "price": 0.273 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.244, + "quality": 4 }, { - "time": "2020-04-16T23:25:20.000Z", - "price": 0.272 + "time": "2020-04-29T18:00:03.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-16T23:30:16.000Z", - "price": 0.271 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.24, + "quality": 0 }, { - "time": "2020-04-16T23:35:04.000Z", - "price": 0.274 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-16T23:40:05.000Z", - "price": 0.271 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.247, + "quality": 2 }, { - "time": "2020-04-16T23:45:09.000Z", - "price": 0.265 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.249, + "quality": 3 }, { - "time": "2020-04-16T23:50:12.000Z", - "price": 0.274 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-16T23:55:13.000Z", - "price": 0.27 + "time": "2020-04-29T18:30:03.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T00:00:06.000Z", - "price": 0.25 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.247, + "quality": 0 }, { - "time": "2020-04-17T00:05:13.000Z", - "price": 0.272 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.246, + "quality": 1 }, { - "time": "2020-04-17T00:10:27.000Z", - "price": 0.272 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T00:15:25.000Z", - "price": 0.27 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.249, + "quality": 3 }, { - "time": "2020-04-17T00:20:23.000Z", - "price": 0.27 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T00:25:07.000Z", - "price": 0.27 + "time": "2020-04-29T19:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T00:30:17.000Z", - "price": 0.259 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.244, + "quality": 0 }, { - "time": "2020-04-17T00:35:07.000Z", - "price": 0.27 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-17T00:40:04.000Z", - "price": 0.263 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T00:45:05.000Z", - "price": 0.269 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.248, + "quality": 3 }, { - "time": "2020-04-17T00:50:06.000Z", - "price": 0.269 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T00:55:13.000Z", - "price": 0.268 + "time": "2020-04-29T19:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T01:00:10.000Z", - "price": 0.268 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.243, + "quality": 0 }, { - "time": "2020-04-17T01:05:10.000Z", - "price": 0.269 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T01:10:28.000Z", - "price": 0.268 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T01:15:24.000Z", - "price": 0.268 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.249, + "quality": 3 }, { - "time": "2020-04-17T01:20:22.000Z", - "price": 0.268 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T01:25:32.000Z", - "price": 0.264 + "time": "2020-04-29T20:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T01:30:44.000Z", - "price": 0.26 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.245, + "quality": 0 }, { - "time": "2020-04-17T01:35:04.000Z", - "price": 0.262 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T01:40:14.000Z", - "price": 0.265 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T01:45:07.000Z", - "price": 0.266 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.248, + "quality": 3 }, { - "time": "2020-04-17T01:50:03.000Z", - "price": 0.267 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T01:55:04.000Z", - "price": 0.259 + "time": "2020-04-29T20:30:03.000Z", + "price": 0.255, + "quality": 5 }, { - "time": "2020-04-17T02:00:04.000Z", - "price": 0.269 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.239, + "quality": 0 }, { - "time": "2020-04-17T02:05:46.000Z", - "price": 0.269 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T02:10:16.000Z", - "price": 0.269 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.244, + "quality": 2 }, { - "time": "2020-04-17T02:17:46.000Z", - "price": 0.27 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T02:20:23.000Z", - "price": 0.271 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T02:25:14.000Z", - "price": 0.271 + "time": "2020-04-29T21:00:04.000Z", + "price": 0.245, + "quality": 5 }, { - "time": "2020-04-17T02:30:07.000Z", - "price": 0.267 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.245, + "quality": 0 }, { - "time": "2020-04-17T02:35:05.000Z", - "price": 0.269 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.23, + "quality": 1 }, { - "time": "2020-04-17T02:40:07.000Z", - "price": 0.27 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.246, + "quality": 2 }, { - "time": "2020-04-17T02:45:10.000Z", - "price": 0.272 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T02:50:08.000Z", - "price": 0.267 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T02:55:04.000Z", - "price": 0.267 + "time": "2020-04-29T21:30:03.000Z", + "price": 0.255, + "quality": 5 }, { - "time": "2020-04-17T03:00:06.000Z", - "price": 0.27 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.246, + "quality": 0 }, { - "time": "2020-04-17T03:05:07.000Z", - "price": 0.26 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T03:10:04.000Z", - "price": 0.271 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T03:15:06.000Z", - "price": 0.271 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.249, + "quality": 3 }, { - "time": "2020-04-17T03:20:08.000Z", - "price": 0.271 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T03:25:05.000Z", - "price": 0.267 + "time": "2020-04-29T22:00:06.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T03:30:13.000Z", - "price": 0.27 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.247, + "quality": 0 }, { - "time": "2020-04-17T03:35:08.000Z", - "price": 0.271 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.246, + "quality": 1 }, { - "time": "2020-04-17T03:40:04.000Z", - "price": 0.271 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T03:45:10.000Z", - "price": 0.27 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.251, + "quality": 3 }, { - "time": "2020-04-17T03:50:07.000Z", - "price": 0.26 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T03:55:08.000Z", - "price": 0.27 + "time": "2020-04-29T22:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T04:00:04.000Z", - "price": 0.265 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.247, + "quality": 0 }, { - "time": "2020-04-17T04:05:05.000Z", - "price": 0.267 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T04:10:08.000Z", - "price": 0.266 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T04:15:14.000Z", - "price": 0.267 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T04:20:07.000Z", - "price": 0.24 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T04:25:19.000Z", - "price": 0.27 + "time": "2020-04-29T23:00:05.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T04:30:07.000Z", - "price": 0.271 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.247, + "quality": 0 }, { - "time": "2020-04-17T04:35:04.000Z", - "price": 0.269 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T04:40:07.000Z", - "price": 0.269 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T04:45:06.000Z", - "price": 0.268 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T04:50:08.000Z", - "price": 0.269 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T04:55:08.000Z", - "price": 0.269 + "time": "2020-04-29T23:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T05:00:05.000Z", - "price": 0.265 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.246, + "quality": 0 }, { - "time": "2020-04-17T05:05:06.000Z", - "price": 0.267 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T05:10:05.000Z", - "price": 0.264 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.247, + "quality": 2 }, { - "time": "2020-04-17T05:15:07.000Z", - "price": 0.266 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T05:20:06.000Z", - "price": 0.269 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T05:25:08.000Z", - "price": 0.272 + "time": "2020-04-30T00:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T05:30:07.000Z", - "price": 0.273 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.246, + "quality": 0 }, { - "time": "2020-04-17T05:35:06.000Z", - "price": 0.274 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T05:40:06.000Z", - "price": 0.274 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.25, + "quality": 2 }, { - "time": "2020-04-17T05:45:06.000Z", - "price": 0.272 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.251, + "quality": 3 }, { - "time": "2020-04-17T05:50:08.000Z", - "price": 0.277 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T05:55:09.000Z", - "price": 0.275 + "time": "2020-04-30T00:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T06:00:11.000Z", - "price": 0.275 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.242, + "quality": 0 }, { - "time": "2020-04-17T06:05:13.000Z", - "price": 0.274 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-17T06:10:17.000Z", - "price": 0.272 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.243, + "quality": 2 }, { - "time": "2020-04-17T06:15:09.000Z", - "price": 0.272 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.251, + "quality": 3 }, { - "time": "2020-04-17T06:20:07.000Z", - "price": 0.26 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T06:25:07.000Z", - "price": 0.269 + "time": "2020-04-30T01:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T06:30:07.000Z", - "price": 0.268 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.246, + "quality": 0 }, { - "time": "2020-04-17T06:35:07.000Z", - "price": 0.272 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.246, + "quality": 1 }, { - "time": "2020-04-17T06:40:05.000Z", - "price": 0.273 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.247, + "quality": 2 }, { - "time": "2020-04-17T06:45:05.000Z", - "price": 0.272 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T06:50:07.000Z", - "price": 0.272 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T06:55:08.000Z", - "price": 0.27 + "time": "2020-04-30T01:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T07:00:05.000Z", - "price": 0.271 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.247, + "quality": 0 }, { - "time": "2020-04-17T07:05:05.000Z", - "price": 0.273 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.247, + "quality": 1 }, { - "time": "2020-04-17T07:10:06.000Z", - "price": 0.27 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.25, + "quality": 2 }, { - "time": "2020-04-17T07:15:07.000Z", - "price": 0.268 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T07:20:06.000Z", - "price": 0.271 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T07:25:06.000Z", - "price": 0.27 + "time": "2020-04-30T02:00:06.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T07:30:07.000Z", - "price": 0.27 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.243, + "quality": 0 }, { - "time": "2020-04-17T07:35:10.000Z", - "price": 0.268 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.244, + "quality": 1 }, { - "time": "2020-04-17T07:40:09.000Z", - "price": 0.268 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.25, + "quality": 2 }, { - "time": "2020-04-17T07:45:06.000Z", - "price": 0.273 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T07:50:07.000Z", - "price": 0.269 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T07:55:07.000Z", - "price": 0.274 + "time": "2020-04-30T02:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T08:00:09.000Z", - "price": 0.272 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.245, + "quality": 0 }, { - "time": "2020-04-17T08:05:08.000Z", - "price": 0.27 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T08:10:07.000Z", - "price": 0.268 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T08:15:07.000Z", - "price": 0.269 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.247, + "quality": 3 }, { - "time": "2020-04-17T08:20:06.000Z", - "price": 0.265 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.254, + "quality": 4 }, { - "time": "2020-04-17T08:25:05.000Z", - "price": 0.265 + "time": "2020-04-30T03:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T08:30:07.000Z", - "price": 0.26 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.243, + "quality": 0 }, { - "time": "2020-04-17T08:35:07.000Z", - "price": 0.26 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.249, + "quality": 1 }, { - "time": "2020-04-17T08:40:09.000Z", - "price": 0.261 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T08:45:10.000Z", - "price": 0.26 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T08:50:10.000Z", - "price": 0.264 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.252, + "quality": 4 }, { - "time": "2020-04-17T08:55:11.000Z", - "price": 0.265 + "time": "2020-04-30T03:30:03.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T09:00:08.000Z", - "price": 0.265 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.242, + "quality": 0 }, { - "time": "2020-04-17T09:05:09.000Z", - "price": 0.265 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.244, + "quality": 1 }, { - "time": "2020-04-17T09:10:07.000Z", - "price": 0.265 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.25, + "quality": 2 }, { - "time": "2020-04-17T09:15:09.000Z", - "price": 0.272 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.251, + "quality": 3 }, { - "time": "2020-04-17T09:20:06.000Z", - "price": 0.265 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.252, + "quality": 4 }, { - "time": "2020-04-17T09:25:09.000Z", - "price": 0.265 + "time": "2020-04-30T04:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T09:30:06.000Z", - "price": 0.265 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.241, + "quality": 0 }, { - "time": "2020-04-17T09:35:15.000Z", - "price": 0.265 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.243, + "quality": 1 }, { - "time": "2020-04-17T09:40:08.000Z", - "price": 0.265 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.242, + "quality": 2 }, { - "time": "2020-04-17T09:45:07.000Z", - "price": 0.269 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T09:50:07.000Z", - "price": 0.265 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.252, + "quality": 4 }, { - "time": "2020-04-17T09:55:05.000Z", - "price": 0.264 + "time": "2020-04-30T04:30:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T10:00:09.000Z", - "price": 0.262 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.239, + "quality": 0 }, { - "time": "2020-04-17T10:05:11.000Z", - "price": 0.262 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.242, + "quality": 1 }, { - "time": "2020-04-17T10:10:08.000Z", - "price": 0.262 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.25, + "quality": 2 }, { - "time": "2020-04-17T10:15:06.000Z", - "price": 0.264 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T10:20:05.000Z", - "price": 0.267 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.252, + "quality": 4 }, { - "time": "2020-04-17T10:25:07.000Z", - "price": 0.271 + "time": "2020-04-30T05:00:04.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T10:30:06.000Z", - "price": 0.264 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.24, + "quality": 0 }, { - "time": "2020-04-17T10:35:06.000Z", - "price": 0.265 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.249, + "quality": 1 }, { - "time": "2020-04-17T10:40:05.000Z", - "price": 0.26 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.244, + "quality": 2 }, { - "time": "2020-04-17T10:45:07.000Z", - "price": 0.271 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.245, + "quality": 3 }, { - "time": "2020-04-17T10:50:08.000Z", - "price": 0.268 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.25, + "quality": 4 }, { - "time": "2020-04-17T10:55:07.000Z", - "price": 0.266 + "time": "2020-04-30T05:30:03.000Z", + "price": 0.258, + "quality": 5 }, { - "time": "2020-04-17T11:00:06.000Z", - "price": 0.266 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.245, + "quality": 0 }, { - "time": "2020-04-17T11:05:11.000Z", - "price": 0.268 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T11:10:06.000Z", - "price": 0.27 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.247, + "quality": 2 }, { - "time": "2020-04-17T11:15:06.000Z", - "price": 0.268 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T11:20:08.000Z", - "price": 0.26 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T11:25:08.000Z", - "price": 0.26 + "time": "2020-04-30T06:00:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T11:30:08.000Z", - "price": 0.265 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.245, + "quality": 0 }, { - "time": "2020-04-17T11:35:34.000Z", - "price": 0.27 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.248, + "quality": 1 }, { - "time": "2020-04-17T11:40:07.000Z", - "price": 0.269 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.249, + "quality": 2 }, { - "time": "2020-04-17T11:45:08.000Z", - "price": 0.269 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.247, + "quality": 3 }, { - "time": "2020-04-17T11:50:06.000Z", - "price": 0.25 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T11:55:06.000Z", - "price": 0.26 + "time": "2020-04-30T06:30:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T12:00:06.000Z", - "price": 0.268 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.244, + "quality": 0 }, { - "time": "2020-04-17T12:05:08.000Z", - "price": 0.268 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-17T12:10:09.000Z", - "price": 0.267 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.246, + "quality": 2 }, { - "time": "2020-04-17T12:15:08.000Z", - "price": 0.26 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.247, + "quality": 3 }, { - "time": "2020-04-17T12:20:07.000Z", - "price": 0.27 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T12:25:11.000Z", - "price": 0.269 + "time": "2020-04-30T07:00:05.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T12:30:08.000Z", - "price": 0.266 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.242, + "quality": 0 }, { - "time": "2020-04-17T12:35:08.000Z", - "price": 0.264 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.243, + "quality": 1 }, { - "time": "2020-04-17T12:40:09.000Z", - "price": 0.263 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T12:45:10.000Z", - "price": 0.26 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T12:50:09.000Z", - "price": 0.259 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T12:55:07.000Z", - "price": 0.26 + "time": "2020-04-30T07:30:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T13:00:04.000Z", - "price": 0.259 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.242, + "quality": 0 }, { - "time": "2020-04-17T13:05:06.000Z", - "price": 0.263 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.242, + "quality": 1 }, { - "time": "2020-04-17T13:10:06.000Z", - "price": 0.265 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.244, + "quality": 2 }, { - "time": "2020-04-17T13:15:10.000Z", - "price": 0.266 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T13:20:05.000Z", - "price": 0.266 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T13:25:06.000Z", - "price": 0.262 + "time": "2020-04-30T08:00:03.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T13:30:09.000Z", - "price": 0.268 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.24, + "quality": 0 }, { - "time": "2020-04-17T13:35:06.000Z", - "price": 0.268 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.242, + "quality": 1 }, { - "time": "2020-04-17T13:40:08.000Z", - "price": 0.269 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.244, + "quality": 2 }, { - "time": "2020-04-17T13:45:09.000Z", - "price": 0.268 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T13:50:06.000Z", - "price": 0.26 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T13:55:05.000Z", - "price": 0.26 + "time": "2020-04-30T08:30:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T14:00:07.000Z", - "price": 0.264 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.235, + "quality": 0 }, { - "time": "2020-04-17T14:05:08.000Z", - "price": 0.264 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-17T14:10:08.000Z", - "price": 0.264 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T14:15:07.000Z", - "price": 0.263 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T14:20:06.000Z", - "price": 0.25 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T14:25:07.000Z", - "price": 0.264 + "time": "2020-04-30T09:00:03.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T14:30:07.000Z", - "price": 0.271 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.239, + "quality": 0 }, { - "time": "2020-04-17T14:35:08.000Z", - "price": 0.269 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.242, + "quality": 1 }, { - "time": "2020-04-17T14:40:07.000Z", - "price": 0.272 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.245, + "quality": 2 }, { - "time": "2020-04-17T14:45:10.000Z", - "price": 0.271 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.25, + "quality": 3 }, { - "time": "2020-04-17T14:50:06.000Z", - "price": 0.27 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T14:55:07.000Z", - "price": 0.267 + "time": "2020-04-30T09:30:03.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T15:00:07.000Z", - "price": 0.268 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.241, + "quality": 0 }, { - "time": "2020-04-17T15:05:07.000Z", - "price": 0.268 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.244, + "quality": 1 }, { - "time": "2020-04-17T15:10:09.000Z", - "price": 0.268 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.245, + "quality": 2 }, { - "time": "2020-04-17T15:15:06.000Z", - "price": 0.269 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.251, + "quality": 3 }, { - "time": "2020-04-17T15:20:05.000Z", - "price": 0.269 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.259, + "quality": 4 }, { - "time": "2020-04-17T15:25:10.000Z", - "price": 0.263 + "time": "2020-04-30T10:00:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T15:30:07.000Z", - "price": 0.27 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.24, + "quality": 0 }, { - "time": "2020-04-17T15:35:06.000Z", - "price": 0.273 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.244, + "quality": 1 }, { - "time": "2020-04-17T15:40:06.000Z", - "price": 0.27 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.248, + "quality": 2 }, { - "time": "2020-04-17T15:45:06.000Z", - "price": 0.27 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T15:50:08.000Z", - "price": 0.265 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T15:55:05.000Z", - "price": 0.27 + "time": "2020-04-30T10:30:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T16:00:06.000Z", - "price": 0.27 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.243, + "quality": 0 }, { - "time": "2020-04-17T16:05:07.000Z", - "price": 0.272 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.242, + "quality": 1 }, { - "time": "2020-04-17T16:10:05.000Z", - "price": 0.268 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.245, + "quality": 2 }, { - "time": "2020-04-17T16:15:04.000Z", - "price": 0.269 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T16:20:08.000Z", - "price": 0.26 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T16:25:05.000Z", - "price": 0.269 + "time": "2020-04-30T11:00:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T16:30:06.000Z", - "price": 0.269 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.246, + "quality": 0 }, { - "time": "2020-04-17T16:35:05.000Z", - "price": 0.267 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.246, + "quality": 1 }, { - "time": "2020-04-17T16:40:09.000Z", - "price": 0.25 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.246, + "quality": 2 }, { - "time": "2020-04-17T16:45:07.000Z", - "price": 0.265 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T16:50:08.000Z", - "price": 0.265 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T16:55:07.000Z", - "price": 0.261 + "time": "2020-04-30T11:30:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T17:00:05.000Z", - "price": 0.264 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.243, + "quality": 0 }, { - "time": "2020-04-17T17:05:03.000Z", - "price": 0.266 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.245, + "quality": 1 }, { - "time": "2020-04-17T17:10:03.000Z", - "price": 0.26 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.245, + "quality": 2 }, { - "time": "2020-04-17T17:15:04.000Z", - "price": 0.261 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.252, + "quality": 3 }, { - "time": "2020-04-17T17:20:04.000Z", - "price": 0.261 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.26, + "quality": 4 }, { - "time": "2020-04-17T17:25:04.000Z", - "price": 0.258 + "time": "2020-04-30T12:00:04.000Z", + "price": 0.26, + "quality": 5 }, { - "time": "2020-04-17T17:30:03.000Z", - "price": 0.255 + "time": "2020-04-30T12:30:04.000Z", + "price": 0.242, + "quality": 0 }, { - "time": "2020-04-17T17:35:06.000Z", - "price": 0.26 + "time": "2020-04-30T12:30:04.000Z", + "price": 0.241, + "quality": 1 + }, + { + "time": "2020-04-30T12:30:04.000Z", + "price": 0.248, + "quality": 2 + }, + { + "time": "2020-04-30T12:30:04.000Z", + "price": 0.242, + "quality": 3 + }, + { + "time": "2020-04-30T12:30:04.000Z", + "price": 0.26, + "quality": 4 + }, + { + "time": "2020-04-30T12:30:04.000Z", + "price": 0.26, + "quality": 5 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.24, + "quality": 0 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.242, + "quality": 1 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.248, + "quality": 2 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.246, + "quality": 3 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.249, + "quality": 4 + }, + { + "time": "2020-04-30T13:00:03.000Z", + "price": 0.26, + "quality": 5 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.239, + "quality": 0 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.243, + "quality": 1 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.247, + "quality": 2 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T13:30:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.242, + "quality": 0 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.243, + "quality": 1 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.248, + "quality": 2 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T14:00:03.000Z", + "price": 0.249, + "quality": 5 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.244, + "quality": 0 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.248, + "quality": 1 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.249, + "quality": 2 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.249, + "quality": 3 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T14:30:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.245, + "quality": 0 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.245, + "quality": 1 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.249, + "quality": 2 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.249, + "quality": 3 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T15:00:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.243, + "quality": 0 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.245, + "quality": 1 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.244, + "quality": 2 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.25, + "quality": 3 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T15:30:10.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.243, + "quality": 0 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.24, + "quality": 1 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.25, + "quality": 2 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.25, + "quality": 3 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T16:00:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.242, + "quality": 0 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.248, + "quality": 1 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.242, + "quality": 2 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T16:30:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.24, + "quality": 0 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.242, + "quality": 1 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.248, + "quality": 2 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.248, + "quality": 4 + }, + { + "time": "2020-04-30T17:30:04.000Z", + "price": 0.259, + "quality": 5 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.245, + "quality": 0 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.248, + "quality": 1 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.246, + "quality": 2 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.258, + "quality": 4 + }, + { + "time": "2020-04-30T18:00:04.000Z", + "price": 0.247, + "quality": 5 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.243, + "quality": 0 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.243, + "quality": 1 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.243, + "quality": 2 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.251, + "quality": 3 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.244, + "quality": 4 + }, + { + "time": "2020-04-30T18:30:04.000Z", + "price": 0.247, + "quality": 5 } ] \ No newline at end of file From 457d4f05af3973541f52e7d5c812ee8d6b36f692 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Thu, 30 Apr 2020 20:47:22 +0200 Subject: [PATCH 18/25] enable local testing without database --- backend/index.js | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/backend/index.js b/backend/index.js index ca313a3..2314b46 100644 --- a/backend/index.js +++ b/backend/index.js @@ -36,6 +36,7 @@ const saltRounds = 13; var serverStartupComplete = false; +const DEBUG = process.env.NODE_ENV === "debug" ? true : false; function twoDigits(d) { if (0 <= d && d < 10) return "0" + d.toString(); @@ -62,7 +63,7 @@ app.use(session({ secret: "simCoRoxUFocker", saveUninitialized: true, resave: true, - store: sessionStore, + store: DEBUG ? undefined : sessionStore, "cookie": { "maxAge": 86400 * 1000 } @@ -93,10 +94,21 @@ passport.use('local-login', new LocalStrategy({ passwordField: "password", passReqToCallback: true }, function (req, email, password, done) { + if (DEBUG) { + if (email === "test" && password === "test") { + return done(null, { + deactivated: false, + email: "test1", + id: 0, + created: new Date(), + password: "test" + }); + } else return done(null, false); + } email = mysql.escape(email); connection.query(`SELECT * from user WHERE email = ${email} AND deactivated = 0`, function (err, rows) { if (err) { - return res.status(static.INTERNAL_SERVER_ERROR).send(); + return done(null, false); } if (!rows.length) { return done(null, false); @@ -114,9 +126,21 @@ passport.serializeUser(function (user, done) { }); passport.deserializeUser(function (id, done) { - connection.query(`select * from user where id = ${id} AND deactivated = 0`, function (err, rows) { - done(err, rows[0]); - }) + if (!DEBUG) + connection.query(`select * from user where id = ${id} AND deactivated = 0`, function (err, rows) { + done(err, rows[0]); + }) + else { + if (id === 0) { + done(null, { + deactivated: false, + email: "test1", + id: 0, + created: new Date(), + password: "test" + }); + } else return done(null, []); + } }); app.post("/API/user/login", passport.authenticate('local-login'), function (req, res) { @@ -128,9 +152,10 @@ app.put("/API/user/create", function (req, res) { if (email && password) { email = mysql.escape(email); password = mysql.escape(bcrypt.hashSync(password, saltRounds)); + if (DEBUG) return res.status(status.OK).send(); connection.query(`INSERT INTO user (deactivated, email, password) values (1, ${email}, ${password})`, function (err, rows) { if (err) - return res.send(status.INTERNAL_SERVER_ERROR).send(); + return res.status(status.INTERNAL_SERVER_ERROR).send(); return res.status(status.OK).send(); }); } else { @@ -155,7 +180,7 @@ app.get('/API/day', function (req, res) { const kind = parseInt(req.query.kind); if (Number.isInteger(kind)) { //Mock Data: - if (kind === -1) return res.send(mockDataDay); + if (kind === -1 || DEBUG) return res.send(mockDataDay); if (kind >= 1 && kind <= 113) { var dayend = new Date().toMysqlFormat(); From 083f73ec2bce38ca32c97ce245170fa2ea999404 Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 21:27:54 +0200 Subject: [PATCH 19/25] added fixes --- .../src/components/login/createAccount.js | 23 +++++++++++++++---- frontend/src/components/login/login.js | 19 +++++++++++++++ .../src/components/login/loginfeedback.js | 21 ++++++++++++++--- 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index f1d4c5d..c20e9cb 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -34,7 +34,7 @@ const useStyles = makeStyles(theme => ({ const CssTextField = withStyles({ root: { '& label.Mui-focused': { - color: 'white', + color: '#FFC800', }, '&:hover label': { color: '#FFC800', @@ -54,7 +54,7 @@ const CssTextField = withStyles({ borderColor: "#FFC800", }, '&.Mui-focused fieldset': { - borderColor: 'white', + borderColor: '#FFC800', }, }, }, @@ -83,9 +83,9 @@ export default function CreateAccount() { if (response.status == "200") { setLogin(false) } + setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { - if (username !== "" && password !== "") { putCreateAccount(url, { email: username, password: password }) @@ -93,6 +93,17 @@ export default function CreateAccount() { setPassword("") } } + + const handleKeyDown = (e) => { + if (e.keyCode == 13) { + if (username !== "" && password !== "") { + putCreateAccount(url, { email: username, password: password }) + + setUsername("") + setPassword("") + } + } + } const handleChangeUSR = (e) => { setUsername(e.target.value) } @@ -121,18 +132,21 @@ export default function CreateAccount() { - diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 10ba5ca..e34ab7a 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -70,6 +70,7 @@ export default function Login() { const [status, setStatus] = React.useState(null); const postLogin = async (url, data) => { + const response = await fetch(url, { method: 'POST', mode: 'cors', @@ -85,6 +86,8 @@ export default function Login() { if (response.status == "200") { setLogin(false) } + + setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { @@ -96,6 +99,18 @@ export default function Login() { setPassword("") } } + + const handleKeyDown = (e) => { + if (e.keyCode == 13) { + if (username !== "" && password !== "") { + postLogin(url, { email: username, password: password }) + + setUsername("") + setPassword("") + } + } + } + const handleChangeUSR = (e) => { setUsername(e.target.value) } @@ -126,18 +141,21 @@ export default function Login() { diff --git a/frontend/src/components/login/loginfeedback.js b/frontend/src/components/login/loginfeedback.js index 3ac61d4..2cd55b3 100644 --- a/frontend/src/components/login/loginfeedback.js +++ b/frontend/src/components/login/loginfeedback.js @@ -10,12 +10,20 @@ export default function LoginFeedback(props) { const [login, setLogin] = React.useState(null); const [open, setOpen] = React.useState(true); const [open1, setOpen1] = React.useState(true); + const [output, setOutput] = React.useState(null); + const [change, setChange] = React.useState(false); + useEffect(() => { if (login != props.login) { + setChange(true) + setOpen(true) + setOpen1(true) setLogin(props.login) } }, [login, setLogin, props.login]); + const handleClose = (event, reason) => { + setOpen(false); }; const handleClose1 = (event, reason) => { @@ -24,26 +32,33 @@ export default function LoginFeedback(props) { const snack = (login) => { if (login == "200") { - return ( + setOutput( {props.successText} ) } else if (login != null) { - return ( + setOutput( {props.errorText} ) + } else { + setOutput(null) } + setChange(false) + } + + if (change == true) { + snack(login) } return ( - {snack(login)} + {output} ) From 4848b32b1ad46fe29616d2aa0718d5cae2f1c5cb Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 21:56:43 +0200 Subject: [PATCH 20/25] disable buttons and inputs while post. close #37 --- frontend/src/components/login/createAccount.js | 8 +++++++- frontend/src/components/login/login.js | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index c20e9cb..d334060 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -66,6 +66,7 @@ export default function CreateAccount() { const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); + const [button, setButton] = React.useState(false); const putCreateAccount = async (url, data) => { const response = await fetch(url, { @@ -83,10 +84,12 @@ export default function CreateAccount() { if (response.status == "200") { setLogin(false) } + setButton(false) setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { if (username !== "" && password !== "") { + setButton(true) putCreateAccount(url, { email: username, password: password }) setUsername("") @@ -97,6 +100,7 @@ export default function CreateAccount() { const handleKeyDown = (e) => { if (e.keyCode == 13) { if (username !== "" && password !== "") { + setButton(true) putCreateAccount(url, { email: username, password: password }) setUsername("") @@ -140,6 +144,7 @@ export default function CreateAccount() { value={username} className={classes.input} onKeyDown={handleKeyDown} + disabled={button} /> @@ -156,12 +161,13 @@ export default function CreateAccount() { onChange={handleChangePW} className={classes.input} onKeyDown={handleKeyDown} + disabled={button} /> - diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index e34ab7a..670916a 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -68,6 +68,7 @@ export default function Login() { const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); + const [button, setButton] = React.useState(false); const postLogin = async (url, data) => { @@ -86,13 +87,14 @@ export default function Login() { if (response.status == "200") { setLogin(false) } - + setButton(false) setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { if (username !== "" && password !== "") { + setButton(true) postLogin(url, { email: username, password: password }) setUsername("") @@ -103,6 +105,7 @@ export default function Login() { const handleKeyDown = (e) => { if (e.keyCode == 13) { if (username !== "" && password !== "") { + setButton(true) postLogin(url, { email: username, password: password }) setUsername("") @@ -149,6 +152,7 @@ export default function Login() { onChange={handleChangeUSR} className={classes.input} onKeyDown={handleKeyDown} + disabled={button} /> @@ -165,6 +169,7 @@ export default function Login() { onChange={handleChangePW} className={classes.input} onKeyDown={handleKeyDown} + disabled={button} /> @@ -179,7 +184,7 @@ export default function Login() { - From c964dfdb86d4150ef75d22f044a4374ce50024aa Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 22:06:08 +0200 Subject: [PATCH 21/25] edited status text --- frontend/src/components/login/createAccount.js | 6 ++++-- frontend/src/components/login/login.js | 6 ++++-- frontend/src/components/login/loginfeedback.js | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index d334060..535b093 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -66,6 +66,7 @@ export default function CreateAccount() { const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); + const [statusText, setStatusText] = React.useState(null); const [button, setButton] = React.useState(false); const putCreateAccount = async (url, data) => { @@ -81,6 +82,7 @@ export default function CreateAccount() { body: JSON.stringify(data) }); setStatus(response.status) + setStatusText(response.statusText) if (response.status == "200") { setLogin(false) } @@ -98,7 +100,7 @@ export default function CreateAccount() { } const handleKeyDown = (e) => { - if (e.keyCode == 13) { + if (e.key === "Enter") { if (username !== "" && password !== "") { setButton(true) putCreateAccount(url, { email: username, password: password }) @@ -177,7 +179,7 @@ export default function CreateAccount() { - + : ) diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 670916a..2981f38 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -69,6 +69,7 @@ export default function Login() { const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); const [button, setButton] = React.useState(false); + const [statusText, setStatusText] = React.useState(null); const postLogin = async (url, data) => { @@ -84,6 +85,7 @@ export default function Login() { body: JSON.stringify(data) }); setStatus(response.status) + setStatusText(response.statusText) if (response.status == "200") { setLogin(false) } @@ -103,7 +105,7 @@ export default function Login() { } const handleKeyDown = (e) => { - if (e.keyCode == 13) { + if (e.key === "Enter") { if (username !== "" && password !== "") { setButton(true) postLogin(url, { email: username, password: password }) @@ -194,7 +196,7 @@ export default function Login() { - + : ) diff --git a/frontend/src/components/login/loginfeedback.js b/frontend/src/components/login/loginfeedback.js index 2cd55b3..cecdfa5 100644 --- a/frontend/src/components/login/loginfeedback.js +++ b/frontend/src/components/login/loginfeedback.js @@ -35,14 +35,14 @@ export default function LoginFeedback(props) { setOutput( - {props.successText} + {props.text} ) } else if (login != null) { setOutput( - {props.errorText} + {props.text} ) From eb01399e04cc5973031bb0f2ee0a371a37b8e2e2 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Thu, 30 Apr 2020 22:23:30 +0200 Subject: [PATCH 22/25] backend send details on error --- backend/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/index.js b/backend/index.js index ca313a3..9a54914 100644 --- a/backend/index.js +++ b/backend/index.js @@ -72,7 +72,7 @@ app.use(passport.session()); app.get("*", function (req, res, next) { if (!serverStartupComplete) - return res.send("Server is starting..."); + return res.send("Server is starting... Please try again soon."); else return next(); }); @@ -96,7 +96,7 @@ passport.use('local-login', new LocalStrategy({ email = mysql.escape(email); connection.query(`SELECT * from user WHERE email = ${email} AND deactivated = 0`, function (err, rows) { if (err) { - return res.status(static.INTERNAL_SERVER_ERROR).send(); + return res.status(static.INTERNAL_SERVER_ERROR).send("error querying the database - Please contact sys admin"); } if (!rows.length) { return done(null, false); @@ -120,7 +120,7 @@ passport.deserializeUser(function (id, done) { }); app.post("/API/user/login", passport.authenticate('local-login'), function (req, res) { - res.status(status.OK).send(); + res.status(status.OK).send("login success"); }); app.put("/API/user/create", function (req, res) { @@ -130,11 +130,11 @@ app.put("/API/user/create", function (req, res) { password = mysql.escape(bcrypt.hashSync(password, saltRounds)); connection.query(`INSERT INTO user (deactivated, email, password) values (1, ${email}, ${password})`, function (err, rows) { if (err) - return res.send(status.INTERNAL_SERVER_ERROR).send(); + return res.send(status.INTERNAL_SERVER_ERROR).send("the user seems to exist already - if you think this is an error contact the sys admin"); return res.status(status.OK).send(); }); } else { - res.status(status.BAD_REQUEST).send(); + res.status(status.BAD_REQUEST).send("invalid data supplied"); } }); @@ -143,7 +143,7 @@ app.all("*", function (req, res, next) { return next(); } else { - res.status(status.UNAUTHORIZED).send(); + res.status(status.UNAUTHORIZED).send("please log in before using this site"); } }); @@ -171,7 +171,7 @@ app.get('/API/day', function (req, res) { }); } else - res.status(status.BAD_REQUEST).send("invalid data provided"); + res.status(status.BAD_REQUEST).send("invalid data range provided"); } else From 5bf47622efd919933e1f52b43106b0faee8b7029 Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Thu, 30 Apr 2020 22:25:27 +0200 Subject: [PATCH 23/25] bugfix createaccount backend feedback message --- backend/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/index.js b/backend/index.js index 9a54914..8d40b45 100644 --- a/backend/index.js +++ b/backend/index.js @@ -131,7 +131,7 @@ app.put("/API/user/create", function (req, res) { connection.query(`INSERT INTO user (deactivated, email, password) values (1, ${email}, ${password})`, function (err, rows) { if (err) return res.send(status.INTERNAL_SERVER_ERROR).send("the user seems to exist already - if you think this is an error contact the sys admin"); - return res.status(status.OK).send(); + return res.status(status.OK).send("account successfully created"); }); } else { res.status(status.BAD_REQUEST).send("invalid data supplied"); From 38b7a903d658083b2a75ddbfd287aa01a984f8f4 Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 22:34:47 +0200 Subject: [PATCH 24/25] fixed var names --- frontend/src/components/login/createAccount.js | 14 +++++++------- frontend/src/components/login/login.js | 17 +++++++++-------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index 535b093..08af8ed 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -67,7 +67,7 @@ export default function CreateAccount() { const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); const [statusText, setStatusText] = React.useState(null); - const [button, setButton] = React.useState(false); + const [disabled, setDisabled] = React.useState(false); const putCreateAccount = async (url, data) => { const response = await fetch(url, { @@ -86,12 +86,12 @@ export default function CreateAccount() { if (response.status == "200") { setLogin(false) } - setButton(false) + setDisabled(false) setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { if (username !== "" && password !== "") { - setButton(true) + setDisabled(true) putCreateAccount(url, { email: username, password: password }) setUsername("") @@ -102,7 +102,7 @@ export default function CreateAccount() { const handleKeyDown = (e) => { if (e.key === "Enter") { if (username !== "" && password !== "") { - setButton(true) + setDisabled(true) putCreateAccount(url, { email: username, password: password }) setUsername("") @@ -146,7 +146,7 @@ export default function CreateAccount() { value={username} className={classes.input} onKeyDown={handleKeyDown} - disabled={button} + disabled={disabled} /> @@ -163,13 +163,13 @@ export default function CreateAccount() { onChange={handleChangePW} className={classes.input} onKeyDown={handleKeyDown} - disabled={button} + disabled={disabled} /> - diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 2981f38..54ddacf 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -68,7 +68,7 @@ export default function Login() { const [password, setPassword] = React.useState(""); const [login, setLogin] = React.useState(true); const [status, setStatus] = React.useState(null); - const [button, setButton] = React.useState(false); + const [disabled, setDisabled] = React.useState(false); const [statusText, setStatusText] = React.useState(null); const postLogin = async (url, data) => { @@ -85,18 +85,19 @@ export default function Login() { body: JSON.stringify(data) }); setStatus(response.status) - setStatusText(response.statusText) + console.log(response.body.text) + setStatusText("test") if (response.status == "200") { setLogin(false) } - setButton(false) + setDisabled(false) setTimeout(() => { setStatus(null) }, 5000) } const handleClick = (e) => { if (username !== "" && password !== "") { - setButton(true) + setDisabled(true) postLogin(url, { email: username, password: password }) setUsername("") @@ -107,7 +108,7 @@ export default function Login() { const handleKeyDown = (e) => { if (e.key === "Enter") { if (username !== "" && password !== "") { - setButton(true) + setDisabled(true) postLogin(url, { email: username, password: password }) setUsername("") @@ -154,7 +155,7 @@ export default function Login() { onChange={handleChangeUSR} className={classes.input} onKeyDown={handleKeyDown} - disabled={button} + disabled={disabled} /> @@ -171,7 +172,7 @@ export default function Login() { onChange={handleChangePW} className={classes.input} onKeyDown={handleKeyDown} - disabled={button} + disabled={disabled} /> @@ -186,7 +187,7 @@ export default function Login() { - From cb27a0946fb64af7dc172c2afe07fcd9b31f0d65 Mon Sep 17 00:00:00 2001 From: Hawk Date: Thu, 30 Apr 2020 23:01:01 +0200 Subject: [PATCH 25/25] edited labels --- backend/package.json | 2 +- frontend/src/components/login/createAccount.js | 7 ++++--- frontend/src/components/login/login.js | 10 ++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/backend/package.json b/backend/package.json index 536bbf7..6fd2b7a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -27,4 +27,4 @@ "devDependencies": { "cross-env": "^7.0.2" } -} \ No newline at end of file +} diff --git a/frontend/src/components/login/createAccount.js b/frontend/src/components/login/createAccount.js index 08af8ed..3f3ed5f 100644 --- a/frontend/src/components/login/createAccount.js +++ b/frontend/src/components/login/createAccount.js @@ -81,13 +81,14 @@ export default function CreateAccount() { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); + const text = await response.text() + await setStatusText(text) setStatus(response.status) - setStatusText(response.statusText) if (response.status == "200") { - setLogin(false) + setTimeout(() => { setLogin(false) }, 2000) } setDisabled(false) - setTimeout(() => { setStatus(null) }, 5000) + setTimeout(() => { setStatus(null) }, 2000) } const handleClick = (e) => { if (username !== "" && password !== "") { diff --git a/frontend/src/components/login/login.js b/frontend/src/components/login/login.js index 54ddacf..6afb83e 100644 --- a/frontend/src/components/login/login.js +++ b/frontend/src/components/login/login.js @@ -84,14 +84,16 @@ export default function Login() { referrerPolicy: 'no-referrer', body: JSON.stringify(data) }); + + const text = await response.text() + await setStatusText(text) setStatus(response.status) - console.log(response.body.text) - setStatusText("test") if (response.status == "200") { - setLogin(false) + setTimeout(() => { setLogin(false) }, 2000) + } setDisabled(false) - setTimeout(() => { setStatus(null) }, 5000) + setTimeout(() => { setStatus(null) }, 2000) } const handleClick = (e) => {