simple-cas-interface
Version:
Provides an interface for authenticating and validating with a JASIG CAS server
42 lines (35 loc) • 1.12 kB
JavaScript
const log = require(require.resolve('./logger'))()
const request = require('request')
function validateServiceTicket (ticket) {
// We're using this hack because we can't re-bind the
// `request` function without breaking it.
const self = this
function promise (resolve, reject) {
const reqOptions = {
url: self.serverUrl + self.serviceValidateUri,
qs: {
ticket: ticket,
service: self.serviceUrl
},
strictSSL: self.strictSSL
}
log.trace('validate url: %s', reqOptions.url)
log.trace('validate qs: %j', reqOptions.qs)
request(reqOptions, function reqCB (error, response, body) {
if (error) {
log.trace(error)
return reject(error)
}
if (response.statusCode !== 200) {
log.trace('Received status code: %s', response.statusCode)
return reject(new Error(
`CAS server returned status: ${response.statusCode}`
))
}
self._validateServiceResponse(body).then(resolve).catch(reject)
})
}
return new Promise(promise)
}
module.exports = validateServiceTicket