Grab user data from web server
This commit is contained in:
parent
3b5509000d
commit
a1c80c70cb
|
@ -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>
|
||||||
:
|
:
|
||||||
|
|
|
@ -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 (
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user