Files
qseow-scripts/vault-testing/ticket.js
Justin Donnelly 21dd0837e0 Random sync
2021-03-04 16:51:35 -05:00

73 lines
2.1 KiB
JavaScript

/***** index.js *****/
const express = require('express');
const ticket = require('./ticket');
var app = express();
app.get('/index.html', function(req,res) {
console.log("accessed the index.html node page");
console.log("proxyRestUri: " + req.query.proxyRestUri);
console.log("targetId: " + req.query.targetId);
ticket.get_ticket_redirect(req.query.proxyRestUri, req.query.targetId, function(redirectUrl){
console.log("Redirecting to "+redirectUrl);
res.redirect(redirectUrl);
});
});
app.use('/', express.static('public'));
app.listen(3000, function() {
console.log("Listening on port 3000");
});
/***** ticket.js *****/
var fs = require('fs');
var request = require('request');
//define certificate folder
var directory = "./";
var get_ticket_redirect = function(proxyRestUri, targetId, callback){
//set up request options
var options = {
uri: proxyRestUri + 'ticket?xrfkey=somerandomstring',
headers: {'content-type': 'application/json',
'X-Qlik-xrfkey': 'somerandomstring',
'X-Qlik-user': 'UserDirectory=INTERNAL; UserId=sa_api'
},
method: 'POST',
body: {
"UserDirectory": "QAD",
"UserId": "djx",
"Attributes": [],
"TargetId": targetId
},
json: true,
ca: fs.readFileSync(directory+ "root.pem"),
key: fs.readFileSync(directory+"client_key.pem"),
cert: fs.readFileSync(directory+"client.pem"),
rejectUnauthorized: false
};
//send request
request(options, function (error, response, body) {
if(error)
{
console.log('Error: '+error);
console.log(response);
}
else
{
console.log("== Got a ticket ==");
console.log("Ticket: " + response.body.Ticket);
console.log("TargetUri: " + response.body.TargetUri);
callback(response.body.TargetUri + "?QlikTicket=" + response.body.Ticket); // This is the redirect URL!
}
});
}
module.exports = {
get_ticket_redirect: get_ticket_redirect
}