|
|
|
|
@ -1,3 +1,4 @@
|
|
|
|
|
'use strict' |
|
|
|
|
const express = require('express'); |
|
|
|
|
const app = express(); |
|
|
|
|
const mongoose = require('mongoose'); |
|
|
|
|
@ -12,8 +13,12 @@ const jwt = require('jsonwebtoken');
|
|
|
|
|
const bodyParser= require('body-parser'); |
|
|
|
|
const secret = 'wowmuchsecretveryhiddenwow';
|
|
|
|
|
const cookieParser = require('cookie-parser'); |
|
|
|
|
const cookie = require('cookie'); |
|
|
|
|
const successUrl = 'http://localhost:3002/yay.html'; |
|
|
|
|
const failureUrl = 'http://localhost:3002/nay.html'; |
|
|
|
|
|
|
|
|
|
app.use(cookieParser()); |
|
|
|
|
app.use(cookie()); |
|
|
|
|
|
|
|
|
|
// const morgan = require('morgan');
|
|
|
|
|
// // use morgan to log requests to the console
|
|
|
|
|
@ -31,6 +36,13 @@ app.use(cookieParser());
|
|
|
|
|
// next();
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// setting CORS headers
|
|
|
|
|
app.all('/', function(req, res, next) { |
|
|
|
|
res.header("Access-Control-Allow-Origin", "*"); |
|
|
|
|
res.header("Access-Control-Allow-Headers", "X-Requested-With"); |
|
|
|
|
next() |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// database connection (with retries)
|
|
|
|
|
const options = { |
|
|
|
|
autoIndex: false, // Don't build indexes
|
|
|
|
|
@ -60,7 +72,7 @@ const libCounter = new Prometheus.Counter({
|
|
|
|
|
const libUptime = new Prometheus.Counter({ |
|
|
|
|
name: 'lib_upTime', |
|
|
|
|
help: 'uptime A counter of the application\'s uptime in seconds created with prometheus nodejs library.' |
|
|
|
|
}) |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
console.log('mongousr: ', process.env.mongousr); |
|
|
|
|
console.log('mongopwd: ', process.env.mongopwd); |
|
|
|
|
@ -84,8 +96,8 @@ var thingies = mongoose.model('thingieName', testSchema);
|
|
|
|
|
|
|
|
|
|
// Default message for testing
|
|
|
|
|
app.get('/', (req, res, next)=>{ |
|
|
|
|
// res.json([{message:'yes, your nodejs app is really running'}]);
|
|
|
|
|
res.send('Oh hay'); |
|
|
|
|
res.json([{message:'yes, your nodejs app is really running'}]); |
|
|
|
|
// res.send('Oh hay' + '\n');
|
|
|
|
|
counter++; // for prometheus invocation_count metric
|
|
|
|
|
libCounter.inc(); // for prometheus lib_invocation_count metric
|
|
|
|
|
console.log('Hello, I\'m inside endpoint \'/\''); |
|
|
|
|
@ -175,27 +187,27 @@ app.post('/token', function(req, res) {
|
|
|
|
|
switch(req.body.username) { |
|
|
|
|
case 'user1': |
|
|
|
|
if (req.body.password === 'pass1') { |
|
|
|
|
token = jwt.sign(claims_user, secret); |
|
|
|
|
let token = jwt.sign(claims_user, secret); |
|
|
|
|
// res.cookie('token',token);
|
|
|
|
|
res.setHeader('Set-Cookie', 'token=' + token + '; HttpOnly'); |
|
|
|
|
res.setHeader('Set-Cookie', 'Authorization=Bearer ' + token + '; HttpOnly'); |
|
|
|
|
console.log('JWT Token: ' + token); |
|
|
|
|
console.log(jwt.decode(token)); |
|
|
|
|
res.redirect('http://localhost/yay.html'); |
|
|
|
|
res.redirect(successUrl); |
|
|
|
|
} else { |
|
|
|
|
res.redirect('http://localhost/nay.html'); |
|
|
|
|
res.redirect(failureUrl); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case 'power': |
|
|
|
|
if (req.body.password === 'weak') { |
|
|
|
|
token = jwt.sign(claims_power, secret); |
|
|
|
|
let token = jwt.sign(claims_power, secret); |
|
|
|
|
// res.cookie('token',token);
|
|
|
|
|
res.setHeader('Set-Cookie', 'token=' + token + '; HttpOnly'); |
|
|
|
|
console.log('JWT Token: ' + token); |
|
|
|
|
console.log(jwt.decode(token)); |
|
|
|
|
res.redirect('http://localhost/yay.html'); |
|
|
|
|
res.redirect(successUrl); |
|
|
|
|
} else { |
|
|
|
|
res.redirect('http://localhost/nay.html'); |
|
|
|
|
res.redirect(failureUrl); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
@ -208,7 +220,7 @@ app.post('/token', function(req, res) {
|
|
|
|
|
|
|
|
|
|
// Restricted route root
|
|
|
|
|
const restrictedRoutes = express.Router(); |
|
|
|
|
app.use('/', restrictedRoutes); |
|
|
|
|
app.use('/restricted', restrictedRoutes); |
|
|
|
|
|
|
|
|
|
restrictedRoutes.use(function (req, res, next) { |
|
|
|
|
let sentToken = req.headers['token']; |
|
|
|
|
@ -263,7 +275,7 @@ restrictedRoutes.use(function (req, res, next) {
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// Restricted endpoint
|
|
|
|
|
restrictedRoutes.get('/restricted', (req, res) => { |
|
|
|
|
restrictedRoutes.get('/', (req, res) => { |
|
|
|
|
// successMsg = JSON.stringify({secret:'You have access to restricted contents!'});
|
|
|
|
|
res.status(200).json([{secret:'You have access to restricted contents!'}]); |
|
|
|
|
// res.status(200).send(successMsg);
|
|
|
|
|
|