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

66
node/app.js

@ -170,33 +170,77 @@ app.post('/token', function(req, res) {
}); });
// Restricted route // Restricted route root
const restrictedRoutes = express.Router(); const restrictedRoutes = express.Router();
app.use('/restricted', restrictedRoutes); app.use('/restricted', restrictedRoutes);
restrictedRoutes.use((req, res) => { restrictedRoutes.use(function (req, res, next) {
if (req.headers['token']) { let sentToken = req.headers['token'];
jwt.verify(req.headers['token'], secret), (err, decoded) => { if (sentToken) {
jwt.verify(sentToken, secret, function (err, decoded) {
if (err) { if (err) {
return res.json({ message: 'invalid token' }); return res.json({ message: 'invalid token' });
} else { } else {
req.decoded = decoded; req.decoded = decoded;
console.log(decoded);
next();
} }
} });
} else { } 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 // Restricted endpoint
restrictedRoutes.get('/restricted', (req, res) => { restrictedRoutes.get('/access', (req, res) => {
res.json([{secret:'you can see this message if you have access'}]) 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 // JWT decode test
app.get('/decode', function(req, res){ app.get('/decode', function(req, res){
if (req.headers['token']) { let sentToken = req.headers['token'];
var decode = jwt.verify(req.headers['token'], secret); if (sentToken) {
var decode = jwt.verify(sentToken, secret);
console.log(decode); console.log(decode);
res.status(200).send('success'); res.status(200).send('success');
} }

Loading…
Cancel
Save