Grab user data from web server

This commit is contained in:
Tanner Collin 2018-02-03 17:20:58 -07:00
parent 3b5509000d
commit a1c80c70cb
4 changed files with 43 additions and 25 deletions

View File

@ -10,18 +10,23 @@ class App extends Component {
super(); super();
this.state = { this.state = {
user: null,
toolData: null, toolData: null,
}; };
} }
componentDidMount() { componentDidMount() {
fetch('http://localhost:8080/api/client') fetch('http://localhost:8080/api/tooldata')
.then(response => response.json()) .then(response => response.json())
.then(data => this.setState({ toolData: data })); .then(data => this.setState({ toolData: data }));
fetch('http://localhost:8080/api/user')
.then(response => response.json())
.then(data => this.setState({ user: data }));
} }
render() { render() {
const toolData = this.state.toolData; const toolData = this.state.toolData;
const user = this.state.user;
return ( return (
<div> <div>
@ -41,18 +46,18 @@ class App extends Component {
<div style={{height: '70px', display: 'inline-block'}} /> <div style={{height: '70px', display: 'inline-block'}} />
{toolData ? {toolData && user ?
<div> <div>
<Route exact path='/' render={props => <Route exact path='/' render={props =>
<Categories {...props} data={toolData} /> <Categories {...props} data={toolData} user={user} />
} /> } />
<Route exact path='/:category' render={props => <Route exact path='/:category' render={props =>
<Category {...props} data={toolData} /> <Category {...props} data={toolData} user={user} />
} /> } />
<Route exact path='/:category/:id' render={props => <Route exact path='/:category/:id' render={props =>
<Tool {...props} data={toolData} /> <Tool {...props} data={toolData} user={user} />
} /> } />
</div> </div>
: :

View File

@ -5,11 +5,11 @@ import { Link } from 'react-router-dom';
class Category extends Component { class Category extends Component {
render() { render() {
const data = this.props.data; const data = this.props.data;
const user = data.user; const user = this.props.user;
const match = this.props.match; const match = this.props.match;
const category = data.categories.find((x) => const category = data.categories.find((x) =>
x.slug == match.params.category x.slug === match.params.category
); );
return ( return (

View File

@ -5,15 +5,15 @@ import { Link } from 'react-router-dom';
class Tool extends Component { class Tool extends Component {
render() { render() {
const data = this.props.data; const data = this.props.data;
const user = data.user; const user = this.props.user;
const match = this.props.match; const match = this.props.match;
const category = data.categories.find((x) => const category = data.categories.find((x) =>
x.slug == match.params.category x.slug === match.params.category
); );
const tool = category.tools.find((x) => const tool = category.tools.find((x) =>
x.id == match.params.id x.id.toString() === match.params.id
); );
const approved = user.authorizedTools.includes(tool.id); const approved = user.authorizedTools.includes(tool.id);

View File

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const app = express(); const app = express();
const fakeData = { const toolData = {
categories: [ categories: [
{ {
name: 'Woodshop', name: 'Woodshop',
@ -48,17 +48,23 @@ const fakeData = {
], ],
}, },
], ],
user: {
authorizedTools: [1, 2],
},
}; };
const tools = { const user = {
'2C3AE843A15F': { username: "protospace",
name: "Protospace User",
authorizedTools: [1, 2],
}
const lockoutData = {
lockouts: [
{
mac: '2C3AE843A15F',
relayOn: false, relayOn: false,
ledOn: true, ledOn: true,
date: '2018-02-01', date: '2018-02-01',
}, },
],
}; };
const server = app.listen(8080, function () { const server = app.listen(8080, function () {
@ -73,17 +79,24 @@ app.use(function(req, res, next) {
app.use('/', express.static('dist')); app.use('/', express.static('dist'));
app.get('/api/client', function (req, res) { app.get('/api/tooldata', function (req, res) {
console.log('Request for client data'); console.log('Request for tool data');
res.setHeader('Content-Type', 'application/json'); res.setHeader('Content-Type', 'application/json');
res.send(fakeData); res.send(toolData);
}); });
app.get('/api/tool/:mac', function (req, res) { app.get('/api/user', function (req, res) {
console.log('Request for user data');
res.setHeader('Content-Type', 'application/json');
res.send(user);
});
app.get('/api/lockout/:mac', function (req, res) {
const mac = req.params.mac; const mac = req.params.mac;
const data = tools[mac]; const data = lockoutData.lockouts.find(x => x.mac === mac);
if (!data) { if (!data) {
res.send(404); res.send(404);
} }