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 cookieParser = require('cookie-parser');
|
||||||
var logger = require('morgan');
|
var logger = require('morgan');
|
||||||
|
|
||||||
|
const { getUsers } = require('./lib/getUsers')
|
||||||
|
|
||||||
var indexRouter = require('./routes/index');
|
var indexRouter = require('./routes/index');
|
||||||
var streamsRouter = require('./routes/getStreams');
|
var streamsRouter = require('./routes/getStreams');
|
||||||
var getUserAccounts = require('./routes/getUserAccounts')
|
var getUserAccounts = require('./routes/getUserAccounts')
|
||||||
@ -24,12 +26,11 @@ app.use(express.json());
|
|||||||
app.use(express.urlencoded({ extended: false }));
|
app.use(express.urlencoded({ extended: false }));
|
||||||
app.use(cookieParser('82e4e438a0705fabf61f9854e3b575af'));
|
app.use(cookieParser('82e4e438a0705fabf61f9854e3b575af'));
|
||||||
app.use(express.static(path.join(__dirname, 'public')));
|
app.use(express.static(path.join(__dirname, 'public')));
|
||||||
|
|
||||||
|
let usersList = getUsers()
|
||||||
|
|
||||||
const users = {
|
const users = {
|
||||||
users: {
|
users: usersList,
|
||||||
'Karl': 'TEST',
|
|
||||||
'Darren': 'TEST',
|
|
||||||
'Duly': 'TEST',
|
|
||||||
},
|
|
||||||
challenge: true,
|
challenge: true,
|
||||||
realm: 'foo',
|
realm: 'foo',
|
||||||
}
|
}
|
||||||
@ -39,7 +40,7 @@ app.use('/login', basicAuth(users), login)
|
|||||||
app.use('/getStreams', streamsRouter);
|
app.use('/getStreams', streamsRouter);
|
||||||
app.use('/getUserAccounts', getUserAccounts);
|
app.use('/getUserAccounts', getUserAccounts);
|
||||||
app.use('/singleCheck', basicAuth(users), singleUserCheck)
|
app.use('/singleCheck', basicAuth(users), singleUserCheck)
|
||||||
app.use('/addAccount', basicAuth(users), addAccount)
|
app.use('/addAccount', addAccount)
|
||||||
app.use('/readCookie', readCookie)
|
app.use('/readCookie', readCookie)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
|
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() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
@ -10,6 +10,7 @@ function App() {
|
|||||||
<Route path="/" exact component={() => <Home />} />
|
<Route path="/" exact component={() => <Home />} />
|
||||||
<Route path="/Accounts" exact component={() => <Accounts />} />
|
<Route path="/Accounts" exact component={() => <Accounts />} />
|
||||||
<Route path="/ServerList" exact component={() => <ServerList />} />
|
<Route path="/ServerList" exact component={() => <ServerList />} />
|
||||||
|
<Route path="/AddAccount" exact component={() => <AddAccount />} />
|
||||||
</Switch>
|
</Switch>
|
||||||
<Footer />
|
<Footer />
|
||||||
</Router>
|
</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,8 +38,7 @@ function View(props) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [screen, setScreen] = useState("auth");
|
const [username, setUsername] = useState();
|
||||||
const [username, setUsername] = useState();
|
|
||||||
const [password, setPassword] = useState();
|
const [password, setPassword] = useState();
|
||||||
|
|
||||||
const auth = async () => {
|
const auth = async () => {
|
||||||
@ -48,8 +47,8 @@ function App() {
|
|||||||
auth: { username, password },
|
auth: { username, password },
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.data.screen !== undefined) {
|
if (res.data !== undefined) {
|
||||||
setScreen('/about');
|
// setScreen('/about');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
@ -60,11 +59,12 @@ function App() {
|
|||||||
try {
|
try {
|
||||||
const res = await axios.get("/readCookie");
|
const res = await axios.get("/readCookie");
|
||||||
|
|
||||||
if (res.data.screen !== undefined) {
|
if (res.data !== "No Cookie Set") {
|
||||||
setScreen(res.data.screen);
|
// document.location = "/accounts"
|
||||||
|
// this.props.history.push('/accounts');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setScreen("auth");
|
// setScreen("auth");
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -75,7 +75,6 @@ function App() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
{screen === "auth" ? (
|
|
||||||
<div>
|
<div>
|
||||||
<label>Username: </label>
|
<label>Username: </label>
|
||||||
<br />
|
<br />
|
||||||
@ -90,9 +89,6 @@ function App() {
|
|||||||
<br />
|
<br />
|
||||||
<button onClick={auth}>Login</button>
|
<button onClick={auth}>Login</button>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
|
||||||
<View screen={screen} setScreen={setScreen} />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ function Navigation(props) {
|
|||||||
Accounts
|
Accounts
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
<li
|
{/* <li
|
||||||
class={`nav-item ${
|
class={`nav-item ${
|
||||||
props.location.pathname === "/ServerList" ? "active" : ""
|
props.location.pathname === "/ServerList" ? "active" : ""
|
||||||
}`}
|
}`}
|
||||||
@ -39,6 +39,15 @@ function Navigation(props) {
|
|||||||
<Link class="nav-link" to="/ServerList">
|
<Link class="nav-link" to="/ServerList">
|
||||||
Server List
|
Server List
|
||||||
</Link>
|
</Link>
|
||||||
|
</li> */}
|
||||||
|
<li
|
||||||
|
class={`nav-item ${
|
||||||
|
props.location.pathname === "/AddAccount" ? "active" : ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<Link class="nav-link" to="/AddAccount">
|
||||||
|
Add Account
|
||||||
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,11 +39,13 @@ export default class MatDataTable extends Component {
|
|||||||
this.setState({ person: results.data });
|
this.setState({ person: results.data });
|
||||||
|
|
||||||
var newArr = results.data.map(function (val) {
|
var newArr = results.data.map(function (val) {
|
||||||
|
let date = new Date(val.expiaryDate * 1000);
|
||||||
|
let d = date.toGMTString();
|
||||||
return {
|
return {
|
||||||
username: val.username,
|
username: val.username,
|
||||||
streamName: val.streamName,
|
streamName: val.streamName,
|
||||||
streamURL: val.streamURL,
|
streamURL: val.streamURL,
|
||||||
expiaryDate: val.expiaryDate
|
expiaryDate: d,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
console.log(results.data.results);
|
console.log(results.data.results);
|
||||||
@ -61,7 +63,9 @@ export default class MatDataTable extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div style={{ maxWidth: "100%", marginLeft: "50px", marginRight: "50px" }}>
|
<div
|
||||||
|
style={{ maxWidth: "100%", marginLeft: "50px", marginRight: "50px" }}
|
||||||
|
>
|
||||||
<MaterialTable
|
<MaterialTable
|
||||||
icons={tableIcons}
|
icons={tableIcons}
|
||||||
options={{
|
options={{
|
||||||
@ -69,14 +73,14 @@ export default class MatDataTable extends Component {
|
|||||||
}}
|
}}
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: "userName",
|
title: "Username",
|
||||||
field: "username",
|
field: "username",
|
||||||
type: "numeric",
|
type: "numeric",
|
||||||
align: "left",
|
align: "left",
|
||||||
},
|
},
|
||||||
{ title: "streamName", field: "streamName" },
|
{ title: "Stream Name", field: "streamName" },
|
||||||
{ title: "streamURL", field: "streamURL" },
|
{ title: "Stream URL", field: "streamURL" },
|
||||||
{ title: "Expires", field: "expiaryDate", type: "numeric" },
|
{ title: "Expiry Date", field: "expiaryDate", type: "numeric" },
|
||||||
]}
|
]}
|
||||||
data={this.state.tableArray}
|
data={this.state.tableArray}
|
||||||
title="Stream Details"
|
title="Stream Details"
|
||||||
|
@ -3,3 +3,4 @@ export { default as Footer } from "./Footer";
|
|||||||
export { default as Home } from "./Home";
|
export { default as Home } from "./Home";
|
||||||
export { default as Accounts } from "./Accounts";
|
export { default as Accounts } from "./Accounts";
|
||||||
export { default as ServerList } from "./ServerList";
|
export { default as ServerList } from "./ServerList";
|
||||||
|
export { default as AddAccount } from "./AddAccount"
|
@ -11,7 +11,7 @@ function getUserAccounts(user) {
|
|||||||
ON users.idusers = userAccounts.userID
|
ON users.idusers = userAccounts.userID
|
||||||
INNER JOIN streams
|
INNER JOIN streams
|
||||||
ON userAccounts.stream = streams.streamName
|
ON userAccounts.stream = streams.streamName
|
||||||
WHERE users.username = '${user}'`)
|
WHERE users.idusers = '${user}'`)
|
||||||
// console.log(data)
|
// console.log(data)
|
||||||
if (data.length == 0) {
|
if (data.length == 0) {
|
||||||
return 'User Not Found'
|
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();
|
var router = express.Router();
|
||||||
|
|
||||||
const { storeAccountToDB } = require('../lib/addAccounts')
|
const { storeAccountToDB } = require('../lib/addAccounts')
|
||||||
|
const { getUserName } = require('../lib/getUsers')
|
||||||
|
|
||||||
/* POST postUser page. */
|
/* POST postUser page. */
|
||||||
router.post('/', async function (req, res, next) {
|
router.post('/', async function (req, res, next) {
|
||||||
let postData = req.body
|
let postData = req.body
|
||||||
|
postData.userId = Number(req.signedCookies.user)
|
||||||
|
let userName = await getUserName(req.signedCookies.user)
|
||||||
let result = await storeAccountToDB(postData)
|
let result = await storeAccountToDB(postData)
|
||||||
console.log(result)
|
console.log(result)
|
||||||
if (result.affectedRows < 1) {
|
if (result.affectedRows < 1) {
|
||||||
res.send('Adding account failed')
|
res.send('Adding account failed')
|
||||||
} else {
|
} 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 {
|
try {
|
||||||
if (req.auth.user === 'Karl') {
|
if (req.auth.user === 'Karl') {
|
||||||
res.cookie('user', 'Karl', options)
|
res.cookie('user', 1, options)
|
||||||
}
|
}
|
||||||
else if (req.auth.user === 'Darren') {
|
else if (req.auth.user === 'Darren') {
|
||||||
res.cookie('user', 'Darren', options)
|
res.cookie('user', 2, options)
|
||||||
}
|
}
|
||||||
else if (req.auth.user === 'Duly') {
|
else if (req.auth.user === 'Duly') {
|
||||||
res.cookie('user', 'Duly', options)
|
res.cookie('user', 3, options)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
res.render('index', { title: 'No Auth' });
|
res.render('index', { title: 'No Auth' });
|
||||||
|
@ -3,17 +3,15 @@ var router = express.Router();
|
|||||||
|
|
||||||
/* POST postUser page. */
|
/* POST postUser page. */
|
||||||
router.get('/', async function (req, res, next) {
|
router.get('/', async function (req, res, next) {
|
||||||
if (req.signedCookies.user === 'Karl') {
|
if (req.signedCookies.user === undefined) {
|
||||||
res.send(req.signedCookies);
|
|
||||||
} else if (req.signedCookies.name === 'user') {
|
|
||||||
res.send({ screen: 'user' });
|
|
||||||
} else {
|
|
||||||
res.send('No Cookie Set');
|
res.send('No Cookie Set');
|
||||||
|
} else {
|
||||||
|
res.send(req.signedCookies);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/clear', (req, res) => {
|
router.get('/clear', (req, res) => {
|
||||||
res.clearCookie('user').end();
|
res.clearCookie('user').end();
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user