updates
This commit is contained in:
parent
4fb8db3d53
commit
0ad12aad0a
13
app.js
13
app.js
@ -4,6 +4,8 @@ var path = require('path');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var logger = require('morgan');
|
||||
|
||||
const { getUsers } = require('./lib/getUsers')
|
||||
|
||||
var indexRouter = require('./routes/index');
|
||||
var streamsRouter = require('./routes/getStreams');
|
||||
var getUserAccounts = require('./routes/getUserAccounts')
|
||||
@ -24,12 +26,11 @@ app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.use(cookieParser('82e4e438a0705fabf61f9854e3b575af'));
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
let usersList = getUsers()
|
||||
|
||||
const users = {
|
||||
users: {
|
||||
'Karl': 'TEST',
|
||||
'Darren': 'TEST',
|
||||
'Duly': 'TEST',
|
||||
},
|
||||
users: usersList,
|
||||
challenge: true,
|
||||
realm: 'foo',
|
||||
}
|
||||
@ -39,7 +40,7 @@ app.use('/login', basicAuth(users), login)
|
||||
app.use('/getStreams', streamsRouter);
|
||||
app.use('/getUserAccounts', getUserAccounts);
|
||||
app.use('/singleCheck', basicAuth(users), singleUserCheck)
|
||||
app.use('/addAccount', basicAuth(users), addAccount)
|
||||
app.use('/addAccount', addAccount)
|
||||
app.use('/readCookie', readCookie)
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
|
||||
import { Navigation, Footer, Home, Accounts, ServerList } from "./components";
|
||||
import { Navigation, Footer, Home, Accounts, ServerList, AddAccount } from "./components";
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
@ -10,6 +10,7 @@ function App() {
|
||||
<Route path="/" exact component={() => <Home />} />
|
||||
<Route path="/Accounts" exact component={() => <Accounts />} />
|
||||
<Route path="/ServerList" exact component={() => <ServerList />} />
|
||||
<Route path="/AddAccount" exact component={() => <AddAccount />} />
|
||||
</Switch>
|
||||
<Footer />
|
||||
</Router>
|
||||
|
95
client/src/components/AddAccount.jsx
Normal file
95
client/src/components/AddAccount.jsx
Normal file
@ -0,0 +1,95 @@
|
||||
import React, { Component } from "react";
|
||||
import axios from "axios";
|
||||
|
||||
class AddAccount extends Component {
|
||||
constructor() {
|
||||
super();
|
||||
this.state = {
|
||||
username: "",
|
||||
password: "",
|
||||
stream: "",
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
// fetch("/getStreams")
|
||||
// .then((res) => res.json())
|
||||
// .then((streams) => this.setState({ streams }));
|
||||
}
|
||||
|
||||
onChange = (e) => {
|
||||
/*
|
||||
Because we named the inputs to match their
|
||||
corresponding values in state, it's
|
||||
super easy to update the state
|
||||
*/
|
||||
this.setState({ [e.target.name]: e.target.value });
|
||||
};
|
||||
|
||||
onSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
// get our form data out of state
|
||||
const { username, password, stream } = this.state;
|
||||
|
||||
console.log({ username, password, stream });
|
||||
|
||||
axios
|
||||
.post(`/addAccount`, {
|
||||
username,
|
||||
password,
|
||||
stream,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
console.log(res.data);
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { username, password, stream } = this.state;
|
||||
|
||||
return (
|
||||
<section class="container">
|
||||
<div class="left-half">
|
||||
<article>
|
||||
<h1>Add An Account</h1>
|
||||
<p>
|
||||
<form onSubmit={this.onSubmit}>
|
||||
<p>
|
||||
UserName -
|
||||
<input
|
||||
type="text"
|
||||
name="username"
|
||||
value={username}
|
||||
onChange={this.onChange}
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
Password -
|
||||
<input
|
||||
type="text"
|
||||
name="password"
|
||||
value={password}
|
||||
onChange={this.onChange}
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
Stream Name -
|
||||
<input
|
||||
type="text"
|
||||
name="stream"
|
||||
value={stream}
|
||||
onChange={this.onChange}
|
||||
/>
|
||||
</p>
|
||||
<br />
|
||||
<button type="submit">Add Account</button>
|
||||
</form>
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
}
|
||||
export default AddAccount;
|
@ -38,7 +38,6 @@ function View(props) {
|
||||
}
|
||||
|
||||
function App() {
|
||||
const [screen, setScreen] = useState("auth");
|
||||
const [username, setUsername] = useState();
|
||||
const [password, setPassword] = useState();
|
||||
|
||||
@ -48,8 +47,8 @@ function App() {
|
||||
auth: { username, password },
|
||||
});
|
||||
|
||||
if (res.data.screen !== undefined) {
|
||||
setScreen('/about');
|
||||
if (res.data !== undefined) {
|
||||
// setScreen('/about');
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
@ -60,11 +59,12 @@ function App() {
|
||||
try {
|
||||
const res = await axios.get("/readCookie");
|
||||
|
||||
if (res.data.screen !== undefined) {
|
||||
setScreen(res.data.screen);
|
||||
if (res.data !== "No Cookie Set") {
|
||||
// document.location = "/accounts"
|
||||
// this.props.history.push('/accounts');
|
||||
}
|
||||
} catch (e) {
|
||||
setScreen("auth");
|
||||
// setScreen("auth");
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
@ -75,7 +75,6 @@ function App() {
|
||||
|
||||
return (
|
||||
<div className="App">
|
||||
{screen === "auth" ? (
|
||||
<div>
|
||||
<label>Username: </label>
|
||||
<br />
|
||||
@ -90,9 +89,6 @@ function App() {
|
||||
<br />
|
||||
<button onClick={auth}>Login</button>
|
||||
</div>
|
||||
) : (
|
||||
<View screen={screen} setScreen={setScreen} />
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ function Navigation(props) {
|
||||
Accounts
|
||||
</Link>
|
||||
</li>
|
||||
<li
|
||||
{/* <li
|
||||
class={`nav-item ${
|
||||
props.location.pathname === "/ServerList" ? "active" : ""
|
||||
}`}
|
||||
@ -39,6 +39,15 @@ function Navigation(props) {
|
||||
<Link class="nav-link" to="/ServerList">
|
||||
Server List
|
||||
</Link>
|
||||
</li> */}
|
||||
<li
|
||||
class={`nav-item ${
|
||||
props.location.pathname === "/AddAccount" ? "active" : ""
|
||||
}`}
|
||||
>
|
||||
<Link class="nav-link" to="/AddAccount">
|
||||
Add Account
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -39,11 +39,13 @@ export default class MatDataTable extends Component {
|
||||
this.setState({ person: results.data });
|
||||
|
||||
var newArr = results.data.map(function (val) {
|
||||
let date = new Date(val.expiaryDate * 1000);
|
||||
let d = date.toGMTString();
|
||||
return {
|
||||
username: val.username,
|
||||
streamName: val.streamName,
|
||||
streamURL: val.streamURL,
|
||||
expiaryDate: val.expiaryDate
|
||||
expiaryDate: d,
|
||||
};
|
||||
});
|
||||
console.log(results.data.results);
|
||||
@ -61,7 +63,9 @@ export default class MatDataTable extends Component {
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div style={{ maxWidth: "100%", marginLeft: "50px", marginRight: "50px" }}>
|
||||
<div
|
||||
style={{ maxWidth: "100%", marginLeft: "50px", marginRight: "50px" }}
|
||||
>
|
||||
<MaterialTable
|
||||
icons={tableIcons}
|
||||
options={{
|
||||
@ -69,14 +73,14 @@ export default class MatDataTable extends Component {
|
||||
}}
|
||||
columns={[
|
||||
{
|
||||
title: "userName",
|
||||
title: "Username",
|
||||
field: "username",
|
||||
type: "numeric",
|
||||
align: "left",
|
||||
},
|
||||
{ title: "streamName", field: "streamName" },
|
||||
{ title: "streamURL", field: "streamURL" },
|
||||
{ title: "Expires", field: "expiaryDate", type: "numeric" },
|
||||
{ title: "Stream Name", field: "streamName" },
|
||||
{ title: "Stream URL", field: "streamURL" },
|
||||
{ title: "Expiry Date", field: "expiaryDate", type: "numeric" },
|
||||
]}
|
||||
data={this.state.tableArray}
|
||||
title="Stream Details"
|
||||
|
@ -3,3 +3,4 @@ export { default as Footer } from "./Footer";
|
||||
export { default as Home } from "./Home";
|
||||
export { default as Accounts } from "./Accounts";
|
||||
export { default as ServerList } from "./ServerList";
|
||||
export { default as AddAccount } from "./AddAccount"
|
@ -11,7 +11,7 @@ function getUserAccounts(user) {
|
||||
ON users.idusers = userAccounts.userID
|
||||
INNER JOIN streams
|
||||
ON userAccounts.stream = streams.streamName
|
||||
WHERE users.username = '${user}'`)
|
||||
WHERE users.idusers = '${user}'`)
|
||||
// console.log(data)
|
||||
if (data.length == 0) {
|
||||
return 'User Not Found'
|
||||
|
37
lib/getUsers.js
Normal file
37
lib/getUsers.js
Normal file
@ -0,0 +1,37 @@
|
||||
const sql = require('./mysql')
|
||||
|
||||
function getUsers() {
|
||||
let data = sql.query(`SELECT
|
||||
userName,
|
||||
password
|
||||
FROM users
|
||||
`)
|
||||
// console.log(data)
|
||||
if (data.length == 0) {
|
||||
return 'User Not Found'
|
||||
} else {
|
||||
var object = data.reduce(
|
||||
(obj, item) => Object.assign(obj, { [item.userName]: item.password }), {});
|
||||
|
||||
return object
|
||||
}
|
||||
}
|
||||
|
||||
function getUserName(userId) {
|
||||
let data = sql.query(`SELECT
|
||||
userName
|
||||
FROM users
|
||||
WHERE idusers = ${userId}
|
||||
`)
|
||||
// console.log(data)
|
||||
if (data.length == 0) {
|
||||
return 'User Not Found'
|
||||
} else {
|
||||
return data[0].userName
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getUsers, getUserName
|
||||
}
|
||||
|
@ -2,17 +2,19 @@ var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
const { storeAccountToDB } = require('../lib/addAccounts')
|
||||
|
||||
const { getUserName } = require('../lib/getUsers')
|
||||
|
||||
/* POST postUser page. */
|
||||
router.post('/', async function (req, res, next) {
|
||||
let postData = req.body
|
||||
postData.userId = Number(req.signedCookies.user)
|
||||
let userName = await getUserName(req.signedCookies.user)
|
||||
let result = await storeAccountToDB(postData)
|
||||
console.log(result)
|
||||
if (result.affectedRows < 1) {
|
||||
res.send('Adding account failed')
|
||||
} else {
|
||||
res.send('Account ' + postData.username + ' Added successfully')
|
||||
res.send('Account ' + postData.username + ' Added successfully to ' + userName)
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -9,13 +9,13 @@ router.get('/', function (req, res, next) {
|
||||
}
|
||||
try {
|
||||
if (req.auth.user === 'Karl') {
|
||||
res.cookie('user', 'Karl', options)
|
||||
res.cookie('user', 1, options)
|
||||
}
|
||||
else if (req.auth.user === 'Darren') {
|
||||
res.cookie('user', 'Darren', options)
|
||||
res.cookie('user', 2, options)
|
||||
}
|
||||
else if (req.auth.user === 'Duly') {
|
||||
res.cookie('user', 'Duly', options)
|
||||
res.cookie('user', 3, options)
|
||||
}
|
||||
} catch (error) {
|
||||
res.render('index', { title: 'No Auth' });
|
||||
|
@ -3,12 +3,10 @@ var router = express.Router();
|
||||
|
||||
/* POST postUser page. */
|
||||
router.get('/', async function (req, res, next) {
|
||||
if (req.signedCookies.user === 'Karl') {
|
||||
res.send(req.signedCookies);
|
||||
} else if (req.signedCookies.name === 'user') {
|
||||
res.send({ screen: 'user' });
|
||||
} else {
|
||||
if (req.signedCookies.user === undefined) {
|
||||
res.send('No Cookie Set');
|
||||
} else {
|
||||
res.send(req.signedCookies);
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user