Repository URL to install this package:
|
Version:
2.0.12 ▾
|
// const { sign } = require('jsonwebtoken')
import { sign } from 'jsonwebtoken'
import { getKeyToken } from '../../endpoints/microservices/requests.GET'
import { getServiceToken } from '../../endpoints/microservices/requests.POST'
import { toServiceTokenParams, formatServiceTokenParams } from '../../endpoints/microservices/defaultParams'
import { IS_TEST_ENV } from './deps/testSetup'
export default {
Query: {
getKeyToken: async(obj, args, context, info) => {
const {alias, requestor} = args
const params = {
alias,
requestor
}
const response = await 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 = await generateServiceToken(obj, args, context, info, additionalProps)
return serviceToken
}
else
{
return response
}
},
getServiceToken: async(obj, args, context, info) => {
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 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 = sign(claims, bufferSigner, { algorithm: 'HS512'});
return token
}