From 1e18f0d5783d864962bb9c3c2de231b4cdc38d37 Mon Sep 17 00:00:00 2001 From: "karl.hudgell" Date: Sat, 13 Feb 2021 16:23:30 +0000 Subject: [PATCH] add some more routes --- app.js | 3 +- client/src/App.js | 15 ++++--- client/src/login.js | 99 +++++++++++++++++++++++++++++++++++++++++++ docker-compose-db.yml | 15 +++++++ lib/mysql.js | 17 ++++++++ package-lock.json | 63 +++++++++++++++++++++++++++ package.json | 7 +-- routes/postUser.js | 18 +++++--- routes/singleCheck.js | 14 ++++++ 9 files changed, 234 insertions(+), 17 deletions(-) create mode 100644 client/src/login.js create mode 100644 docker-compose-db.yml create mode 100644 lib/mysql.js create mode 100644 routes/singleCheck.js diff --git a/app.js b/app.js index f4fd65b..e9cb85d 100644 --- a/app.js +++ b/app.js @@ -7,6 +7,7 @@ var logger = require('morgan'); var indexRouter = require('./routes/index'); var streamsRouter = require('./routes/getStreams'); var usersRouter = require('./routes/postUser') +var singleUserCheck = require('./routes/singleCheck') var app = express(); // const basicAuth = require('express-basic-auth') @@ -24,7 +25,7 @@ app.use(express.static(path.join(__dirname, 'public'))); app.use('/', indexRouter); app.use('/getStreams', streamsRouter); app.use('/postUser', usersRouter); - +app.use('/singleCheck', singleUserCheck) // app.use(basicAuth({ // users: { 'BBLBTV': 'BBLBTV' }, // challenge: true, diff --git a/client/src/App.js b/client/src/App.js index b099eea..a1960de 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -12,16 +12,19 @@ class App extends Component {
-

Servers

- {this.state.streams.map(stream => -
{stream.StreamName} - {stream.StreamURL}
- )} +

User Login

+

+ I am a user login +

+
-

Right Half

-

If your knees aren't green by the end of the day, you ought to seriously re-examine your life.

+

Stream Details

+ {this.state.streams.map(stream => +
{stream.StreamName} - {stream.StreamURL}
+ )}
diff --git a/client/src/login.js b/client/src/login.js new file mode 100644 index 0000000..0ff982c --- /dev/null +++ b/client/src/login.js @@ -0,0 +1,99 @@ +import React, { useState, useEffect } from 'react'; +import ReactDOM from "react-dom"; + +import axios from 'axios'; + +function View (props) { + const { screen, setScreen } = props; + + const [data, setData] = useState(); + + const deleteCookie = async () => { + try { + await axios.get('/clear-cookie'); + setScreen('auth'); + } catch (e) { + console.log(e); + } + }; + + const getData = async () => { + try { + const res = await axios.get('/get-data'); + console.log(res.data) + setData(res.data); + } catch (e) { + console.log(e); + } + } + + return ( +
+

{screen}

+

{data}

+ + +
+ ); +} + +function App() { + + const [screen, setScreen] = useState('auth'); + const [username, setUsername] = useState(); + const [password, setPassword] = useState(); + + const auth = async () => { + try { + const res = await axios.get('/authenticate', { auth: { username, password } }); + + if (res.data.screen !== undefined) { + setScreen(res.data.screen); + } + } catch (e) { + console.log(e); + } + }; + + const readCookie = async () => { + try { + const res = await axios.get('/read-cookie'); + + if (res.data.screen !== undefined) { + setScreen(res.data.screen); + } + } catch (e) { + setScreen('auth'); + console.log(e); + } + }; + + useEffect(() => { + readCookie(); + }, []); + + return ( +
+ {screen === 'auth' + ?
+ +
+ setUsername(e.target.value)} /> +
+ +
+ setPassword(e.target.value)} /> +
+ +
+ : + } +
+ ); +} + +export default App; + + +const rootElement = document.getElementById("root"); +ReactDOM.render(, rootElement); diff --git a/docker-compose-db.yml b/docker-compose-db.yml new file mode 100644 index 0000000..b6153d2 --- /dev/null +++ b/docker-compose-db.yml @@ -0,0 +1,15 @@ +version: "3" + +services: + db: + image: mariadb + restart: always + environment: + MYSQL_ROOT_PASSWORD: example + ports: + - 3306:3306 + adminer: + image: adminer + restart: always + ports: + - 8080:8080 diff --git a/lib/mysql.js b/lib/mysql.js new file mode 100644 index 0000000..c3966c0 --- /dev/null +++ b/lib/mysql.js @@ -0,0 +1,17 @@ +var mysql = require('mysql'); + + +var connection = mysql.createConnection({ + host: 'localhost', + port: 3306, + user: 'root', + password: 'example', + database: 'BBLB_DNS', + insecureAuth: true +}) + +connection.connect(function (err) { + if (err) throw err; +}); + +module.exports = connection; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4be10da..c88ee63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -109,6 +109,11 @@ "safe-buffer": "5.1.2" } }, + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + }, "body-parser": { "version": "1.18.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", @@ -255,6 +260,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, "css": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", @@ -510,6 +520,11 @@ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, "jade": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", @@ -640,6 +655,17 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "mysql": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "requires": { + "bignumber.js": "9.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -694,6 +720,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "promise": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz", @@ -746,6 +777,20 @@ "unpipe": "1.0.0" } }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", @@ -826,11 +871,24 @@ "amdefine": ">=0.0.4" } }, + "sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" + }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "transformers": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", @@ -910,6 +968,11 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/package.json b/package.json index d3dfffb..fa40111 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,12 @@ "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", + "express-basic-auth": "^1.2.0", + "fs": "0.0.1-security", + "got": "^11.8.1", "http-errors": "~1.6.3", "jade": "~1.11.0", "morgan": "~1.9.1", - "express-basic-auth": "^1.2.0", - "fs": "0.0.1-security", - "got": "^11.8.1" + "mysql": "^2.18.1" } } diff --git a/routes/postUser.js b/routes/postUser.js index 8db653f..b7402bd 100644 --- a/routes/postUser.js +++ b/routes/postUser.js @@ -1,15 +1,19 @@ var express = require('express'); var router = express.Router(); -const { singleCheck } = require('../lib/checker') - +const sql = require('../lib/mysql') /* POST postUser page. */ router.post('/', async function (req, res, next) { - let postedUsername = req.body.username - - let data = await singleCheck(postedUsername) - - res.send(data); + sql.query(`SELECT * FROM users WHERE username = '${req.body.username}'`, function (err, tt) { + if (err) { + console.log("User Not Found: ", err); + result(err, null); + } + else { + console.log(tt[0]); + res.send(tt[0]); + } + }); }); module.exports = router; diff --git a/routes/singleCheck.js b/routes/singleCheck.js new file mode 100644 index 0000000..5b11bfd --- /dev/null +++ b/routes/singleCheck.js @@ -0,0 +1,14 @@ +var express = require('express'); +var router = express.Router(); + +const { singleCheck } = require('../lib/checker') +/* POST postUser page. */ +router.post('/', async function (req, res, next) { + let postedUsername = req.body.username + + let data = await singleCheck(postedUsername) + + res.send(data); +}); + +module.exports = router;