casauth
Version:
Authenticator for PHP Jasig CAS ~3.5
77 lines (57 loc) • 1.54 kB
JavaScript
//Setting certificate check to null
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
//Getting dependencies
var request = require('request').defaults({
//Enabling Cookies
jar: true
});
var cheerio = require('cheerio');
var querystring = require('querystring');
function auth(casaddress, uname, pswd, callback){
request(
{
uri: casaddress.toString(),
headers:
{ 'content-type': 'application/x-www-form-urlencoded' }
},
function (err, res, body) {
if(err) {
return callback(err);
}
var $ = cheerio.load(body);
var inputs = $('input');
if(inputs[4]){
//if not logged in
var credentials = {
username: uname.toString(),
password: pswd.toString(),
execution: inputs[4].attribs.value.toString() ,
_eventId: "submit",
submit: "LOGIN",
lt: inputs[3].attribs.value.toString()
};
request.post(
{
uri: casaddress,
headers:
{ 'content-type': 'application/x-www-form-urlencoded' },
body: querystring.stringify(credentials)
},
function (err, res) {
if(err) {
return callback(err);
}
if(!res.headers['set-cookie']){
return callback({message: 'Wrong login or password !'});
}
return callback(err);
}
)
} else {
//already logged in
return callback(null);
}
}
);
}
exports = module.exports = auth;