123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- Meteor._debug("Loading server/sso");
- Meteor.startup(function () {
- Meteor._debug("Startup server/sso", CHANNEL_NAME, EVENT_NAME);
- sso = new DrupalSSO();
- sso.initServerState(Meteor.settings);
- if (!sso.state.online) {
- throw new Meteor.Error('startup', "Could not reach the Drupal server.");
- }
- });
- Meteor.methods({
-
- "drupal-sso.initState": function () {
- var settings = Meteor.settings['drupal-sso'];
- var site = settings.site;
- var appToken = settings.appToken;
- if (!settings) {
- throw new Meteor.Error('invalid-settings', "Invalid settings: 'drupal-sso' key not found.");
- }
- if (!site) {
- throw new Meteor.Error('invalid-settings', "Invalid settings: 'drupal-sso.site' key not found.");
- }
- if (!appToken) {
- throw new Meteor.Error('invalid-settings', "Invalid settings: 'drupal-sso.appToken' key not found.");
- }
- var options = {
- params: {
- appToken: settings.appToken
- }
- };
- try {
- var ret = HTTP.get(site + "/meteor/siteInfo", options);
- info = JSON.parse(ret.content);
- info.online = true;
- }
- catch (err) {
- info = {
- cookieName: undefined,
- anonymousName: undefined,
- online: false
- };
- Meteor._debug("Error: ", err);
- }
- return info;
- },
-
- "drupal-sso.whoami": function (cookieBlob) {
-
- var cookieName = sso.state.cookieName;
- var cookieValue = sso.getSessionCookie(cookieBlob);
- var url = sso.settings['drupal-sso'].site + "/meteor/whoami";
- var options = {
- headers: {
- 'cookie': cookieName + '=' + cookieValue
- }
- };
- Meteor._debug('Checking ' + cookieName + "=" + cookieValue + ' on ' + url);
- try {
- var ret = HTTP.get(url, options);
- info = JSON.parse(ret.content);
- }
- catch (err) {
- info = {
- 'uid': 0,
- 'name': 'Unresolved',
- 'roles': []
- };
- Meteor._debug("Error: ", err);
- }
- return info;
- }
- });
|