Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

const express = require('express');
const router = express.Router();
const rest = require('./../rest/rest');
const dns = require('dns');
const fs = require('fs');
const jwt = require('jsonwebtoken');
const path = require('path');

const RSA_PRIVATE_KEY = fs.readFileSync(
path.join(__dirname, '/../../../keys/private.key'),
'utf8'
);

router.post('/ssoUrls', (req, res) => {
// console.log('/ssoUrls params', req.body)
// console.log('req', req)
let ip = '';
dns.lookup(req.headers.host.split(':')[0], (err, ipAddress) => {
if (err) {
// console.log('dns lookup error', err);
ip = req.headers.host.split(':')[0];
}
// console.log('ipAddress', ipAddress);
ip = ipAddress;
let hostname;
if(req.body.attachmentId) {
hostname = {
hostname: req.headers.referer.split('//')[1].split(':')[0],
attachmentId: req.body.attachmentId
};
}else {
hostname = {
hostname: req.headers.referer.split('//')[1].split(':')[0]
};
}

rest.postResource(process.env.END_POINT_BASE_URI + process.env.SSO, hostname)
.then(data => {
const jspBody = {
u: data.responseBody.encodedPostBackUrl,
c: data.responseBody.encodedCapturedUrl,
s: data.responseBody.sessionInformation
};
res.status(data.response.statusCode).json(jspBody);
})
.catch(error => {
res.status(400).json(error);
});
});
});
router.post('/postback', (req, res) => {
const user = req.body.i;
if (req.query.attachmentId) {
const attachmentId = req.query.attachmentId
res.status(200).redirect(`/redirect/?user=${user}&attachmentId=${attachmentId}`);
} else {
res.status(200).redirect(`/redirect/?user=${user}`);
}

});
router.post('/getUserInfo', (req, res) => {
// console.log('sso.js getUserRoles req.body ', req.body)
rest
.postResource(
process.env.END_POINT_BASE_URI + process.env.SSO_USER_INFO,
req.body
)
.then(data => {
//console.log('data ', data)
if (data.responseBody.errorCode) {
return res.status(data.response.statusCode).json(data.responseBody);
}
const ssoUserName = data.responseBody['userName'];
const jwtBearerToken = jwt.sign({userInfo: data.responseBody}, RSA_PRIVATE_KEY, {
algorithm: 'RS256',
expiresIn: 28800,
subject: ssoUserName
});
data.responseBody.jwt = jwtBearerToken;
res.cookie('JWT', jwtBearerToken, { httpOnly: true, secure: true });
res.status(200).json(data.responseBody);
})
.catch(error => {
console.log('error from getUserRoles sso ', error);
res.status(400).json(error);
});
});

module.exports = router;