From abe4fa8f923f45982628b84a68f5ec2c2fa73a2c Mon Sep 17 00:00:00 2001 From: Yutsuo Date: Thu, 27 Dec 2018 22:29:23 +0000 Subject: [PATCH] Phase III Task 4 --- -H | 1 - docker-compose.yml | 23 +++++++++++++--- node/app.js | 66 ++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 74 insertions(+), 16 deletions(-) delete mode 100644 -H diff --git a/-H b/-H deleted file mode 100644 index d47cb60..0000000 --- a/-H +++ /dev/null @@ -1 +0,0 @@ -no token found \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 8ddf950..14ef211 100755 --- a/docker-compose.yml +++ b/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: diff --git a/node/app.js b/node/app.js index c7a96f7..8f3a1cf 100755 --- a/node/app.js +++ b/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'); }