openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
50 lines (41 loc) • 1.26 kB
JavaScript
const crypto = require('crypto')
const request = require('request')
module.exports = {
setAuthHeaders: (requestParams, context, ee, next) => {
if (!requestParams.headers) {
requestParams.headers = {}
}
const getAuthHeaders = (username, password, callback) => {
const options = {
url: `https://localhost:8080/authenticate/${username}`,
json: true,
rejectUnauthorized: false
}
request(options, (err, res, body) => {
if (err) {
return callback(err)
}
const passhash = crypto.createHash('sha512')
passhash.update(body.salt)
passhash.update(password)
const tokenhash = crypto.createHash('sha512')
tokenhash.update(passhash.digest('hex'))
tokenhash.update(body.salt)
tokenhash.update(body.ts)
const auth = {
'auth-username': username,
'auth-ts': body.ts,
'auth-salt': body.salt,
'auth-token': tokenhash.digest('hex')
}
callback(null, auth)
})
}
getAuthHeaders('root@openhim.org', 'password', (err, headers) => {
if (err) { return next(err) }
Object.assign(requestParams.headers, headers)
next()
})
}
}