1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Cause an error on startup if the Drupal server is unreachable.
- Meteor.startup(function () {
- sso = new DrupalSSO();
- sso.initServerState(Meteor.settings);
- if (!sso.state.online) {
- throw new Meteor.Error('startup', "Could not reach the Drupal server.");
- }
- });
- Meteor.methods({
- /**
- * Parse Meteor settings to initialize the SSO state from the server.
- */
- "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;
- },
- /**
- *
- * @param {string} cookieBlob
- * @returns {*}
- */
- "drupal-sso.whoami": function (cookieBlob) {
- // sso is a package global, initialized in server/sso.js Meteor.startup().
- 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;
- }
- });
|