Skip to content
Snippets Groups Projects
Commit bad8c487 authored by corecache's avatar corecache
Browse files

CAS Plugin: refactored logging

parent 0c4d3b3e
No related branches found
No related tags found
No related merge requests found
logger = new Logger('CAS', {});
Meteor.startup(function(){
RocketChat.settings.addGroup('CAS', function() {
this.add("CAS_enabled", false, { type: 'boolean', group: 'CAS', public: true });
......@@ -23,7 +25,6 @@ function updateServices(record) {
}
timer = Meteor.setTimeout(function() {
console.log("Updating login service CAS".blue)
data = {
// These will pe passed to 'node-cas' as options
enabled: RocketChat.settings.get("CAS_enabled"),
......@@ -40,8 +41,10 @@ function updateServices(record) {
// Either register or deregister the CAS login service based upon its configuration
if( data.enabled ) {
logger.info("Enabling CAS login service")
ServiceConfiguration.configurations.upsert({service: 'cas'}, { $set: data });
} else {
logger.info("Disabling CAS login service");
ServiceConfiguration.configurations.remove({service: 'cas'});
}
}, 2000);
......
......@@ -15,7 +15,7 @@ WebApp.connectHandlers.use(function(req, res, next) {
}).run();
});
middleware = function (req, res, next) {
var middleware = function (req, res, next) {
// Make sure to catch any exceptions because otherwise we'd crash
// the runner
try {
......@@ -42,15 +42,16 @@ middleware = function (req, res, next) {
});
} catch (err) {
console.log("account-cas: unexpected error : " + err.message);
logger.error("Unexpected error : " + err.message);
closePopup(res);
}
};
var casTicket = function (req, token, callback) {
// get configuration
if (!RocketChat.settings.get("CAS_enabled")) {
console.log("accounts-cas: cas ist not enabled");
logger.error("Got ticket validation request, but CAS is not enabled");
callback();
}
......@@ -58,6 +59,7 @@ var casTicket = function (req, token, callback) {
var parsedUrl = url.parse(req.url, true);
var ticketId = parsedUrl.query.ticket;
var baseUrl = RocketChat.settings.get("CAS_base_url");
logger.debug("Using CAS_base_url: " + baseUrl);
var cas = new CAS({
base_url: baseUrl,
......@@ -66,19 +68,18 @@ var casTicket = function (req, token, callback) {
cas.validate(ticketId, function(err, status, username) {
if (err) {
console.log("accounts-cas: error when trying to validate " + err);
logger.error("error when trying to validate " + err);
} else {
if (status) {
console.log("accounts-cas: user validated " + username);
logger.info("Validated user: " + username);
_casCredentialTokens[token] = { id: username };
} else {
console.log("accounts-cas: unable to validate " + ticketId);
logger.error("Unable to validate ticket: " + ticketId);
}
}
callback();
});
console.log("Validated: " + ticketId);
return;
};
......@@ -100,23 +101,25 @@ var casTicket = function (req, token, callback) {
var result = _retrieveCredential(options.cas.credentialToken);
var options = { profile: { name: result.id } };
//var user = Accounts.updateOrCreateUserFromExternalService("cas", result, options);
logger.debug("Looking up user with username: " + result.id );
var user = Meteor.users.findOne({ 'username': result.id });
if (!user) {
if (user) {
logger.debug("Using existing user for '" + result.id + "' with id: " + user._id);
} else {
var newUser = {
username: result.id,
active: true,
globalRoles: ['user'],
};
logger.debug("User '" + result.id + "'does not exist yet, creating it");
var userId = Accounts.insertUserDoc({}, newUser);
user = Meteor.users.findOne(userId);
logger.debug("Created new user for '" + result.id + "' with id: " + user._id);
}
console.log("Using user: " + user._id);
return { userId: user._id };
});
......
......@@ -7,25 +7,24 @@ Package.describe({
Package.onUse(function(api) {
api.versionsFrom('1.1.0.2');
api.versionsFrom('1.0');
// Server libs
api.use('rocketchat:lib', 'server');
api.use('rocketchat:logger', 'server');
api.use('service-configuration', 'server');
// Server files
api.add_files('cas_rocketchat.js', 'server');
api.use('routepolicy', 'server');
api.use('webapp', 'server');
api.use('accounts-base', ['client', 'server']);
// Export Accounts (etc) to packages using this one.
api.imply('accounts-base', ['client', 'server']);
api.use('accounts-base', 'server');
api.use('underscore');
// Server files
api.add_files('cas_rocketchat.js', 'server');
api.add_files('cas_server.js', 'server');
// Client files
api.add_files('cas_client.js', 'client');
api.add_files('cas_server.js', 'server');
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment