Repository URL to install this package:
|
Version:
2.0.21 ▾
|
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
// const { sign } = require('jsonwebtoken')
const jsonwebtoken_1 = require("jsonwebtoken");
const defaultParams_1 = require("../../endpoints/microservices/defaultParams");
exports.default = {
Query: {
getKeyToken: (obj, args, context, info) => __awaiter(this, void 0, void 0, function* () {
const { alias, requestor } = args;
const params = {
alias,
requestor
};
const response = yield context.microservices.getKeyToken(params, undefined);
// @todo @Anto based on Params we need to get secretKey or service token in a single query
if (true) {
const secretKey = generateToken(response);
const additionalProps = {
secretKey
};
const serviceToken = yield generateServiceToken(obj, args, context, info, additionalProps);
return serviceToken;
}
else {
return response;
}
}),
getServiceToken: (obj, args, context, info) => __awaiter(this, void 0, void 0, function* () {
const response = generateServiceToken(obj, args, context, info);
return response;
}),
},
};
function generateServiceToken(obj, args, context, info, additionalProps) {
const { requestor } = args;
const { secretKey } = additionalProps;
const params = {
requestor,
secretKey,
};
const serviceTokenParams = getServiceTokenParams(params);
const serviceToken = context.microservices.getServiceToken(serviceTokenParams, undefined);
return serviceToken;
}
function getServiceTokenParams(params) {
// return toServiceTokenParams(formatServiceTokenParams(secretKey))
return defaultParams_1.toServiceTokenParams(params);
}
function toTimes() {
// should move this to it's own function
let timeNow = new Date().getTime();
timeNow = Math.floor(timeNow / 1000);
const timeThen = (60 * 60) + timeNow;
return { then: timeThen, now: timeNow };
}
function toParams(times) {
// remember to use eslint
const claims = {
'requestedServices': [
'pim'
],
'aud': 'promotionadmin',
'exp': times.then,
'iat': times.now,
'iss': 'SkavaAPIAdmin'
};
return claims;
}
function generateToken(secretKeyObj) {
// const signingKey = '4tmLIS0LtAiEI062y/wdBw=='
const signingKey = secretKeyObj.key || '';
if (!signingKey) {
console.log('generateToken sign-in key is missing', signingKey);
}
const times = toTimes();
const claims = toParams(times);
const bufferSigner = new Buffer(signingKey, 'base64');
const token = jsonwebtoken_1.sign(claims, bufferSigner, { algorithm: 'HS512' });
return token;
}
//# sourceMappingURL=microservices.js.map