Browse Source

Phase III Task 4

master
Yutsuo 7 years ago
parent
commit
abe4fa8f92
  1. 1
      -H
  2. 23
      docker-compose.yml
  3. 66
      node/app.js

1
-H

@ -1 +0,0 @@
no token found

23
docker-compose.yml

@ -6,6 +6,9 @@ services:
restart: always
build: ./nginx
image: custom/nginx
volumes:
- nginx1_data1:/usr/share/nginx/html
- nginx1_data2:/etc/nginx
links:
- app
- prometheus
@ -16,6 +19,9 @@ services:
restart: always
build: ./nginx2
image: custom/nginx2
volumes:
- nginx2_data1:/usr/share/nginx/html
- nginx2_data2:/etc/nginx
ports:
- 80:80
networks:
@ -24,6 +30,8 @@ services:
container_name: app
build: ./node
image: custom/node
volumes:
- app_data:/www
ports:
- 3001:3001
networks:
@ -33,7 +41,7 @@ services:
build: ./mongo
image: custom/mongo
volumes:
- mongodata:/data/db
- mongo_data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: ruth
@ -46,6 +54,7 @@ services:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prom_data:/prometheus
networks:
- network_1
ports:
@ -54,14 +63,20 @@ services:
container_name: grafana
image: grafana/grafana
volumes:
- grafanadata:/var/lib/grafana
- grafana_data:/var/lib/grafana
networks:
- network_1
ports:
- 3000:3000
volumes:
mongodata:
grafanadata:
app_data:
mongo_data:
grafana_data:
prom_data:
nginx1_data1:
nginx1_data2:
nginx2_data1:
nginx2_data2:
networks:
network_1:
ipam:

66
node/app.js

@ -170,33 +170,77 @@ app.post('/token', function(req, res) {
});
// Restricted route
// Restricted route root
const restrictedRoutes = express.Router();
app.use('/restricted', restrictedRoutes);
restrictedRoutes.use((req, res) => {
if (req.headers['token']) {
jwt.verify(req.headers['token'], secret), (err, decoded) => {
restrictedRoutes.use(function (req, res, next) {
let sentToken = req.headers['token'];
if (sentToken) {
jwt.verify(sentToken, secret, function (err, decoded) {
if (err) {
return res.json({ message: 'invalid token' });
} else {
req.decoded = decoded;
console.log(decoded);
next();
}
}
});
} else {
res.status(500).send('no token found');
}
res.status(500).send({ message: 'no token found' });
};
});
// // Restricted route root stupid
// const restrictedRoutes = express.Router();
// app.use('/restricted', restrictedRoutes);
// restrictedRoutes.use( function(req, res, next){
// let sentToken = req.headers['token'];
// console.log('hello there, do not mind me.');
// console.log('next line will show the JWT token:');
// console.log(sentToken);
// console.log('okay, so, next line will show the decoded JWT token:');
// let decodedToken = jwt.decode(sentToken);
// console.log(decodedToken);
// console.log('yay, so now I am going to verify it and show again the decoded token if successful.');
// console.log('if NOT successful I will not let you see the secret message');
// console.log('here we go...');
// let verifiedToken = jwt.verify(sentToken, secret);
// console.log(verifiedToken);
// if (verifiedToken) {
// console.log('success! secret message will be shown.');
// next();
// } else {
// res.status(401).json({message: 'nope, you are not authorized'});
// }
// });
// Restricted endpoint
restrictedRoutes.get('/restricted', (req, res) => {
res.json([{secret:'you can see this message if you have access'}])
restrictedRoutes.get('/access', (req, res) => {
res.status(200).json([{secret:'you can see this message if you have access'}])
});
// Restricted route root test (KISS)
const router = express.Router();
app.use('/api', router);
router.use( function(req, res, next){
console.log('yo, this should always be called whenever /api or anything inside is called');
next();
});
// Restricted route endpoint test (KISS)
router.get('/inside', (req, res) => {
console.log('I am inside /api, hopefully');
res.status(200).json({message: 'it worked'});
})
// JWT decode test
app.get('/decode', function(req, res){
if (req.headers['token']) {
var decode = jwt.verify(req.headers['token'], secret);
let sentToken = req.headers['token'];
if (sentToken) {
var decode = jwt.verify(sentToken, secret);
console.log(decode);
res.status(200).send('success');
}

Loading…
Cancel
Save