diff --git a/.meteor/versions b/.meteor/versions index ebd055bec..fe3bd637a 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -137,7 +137,7 @@ useraccounts:flow-routing-extra@1.1.0 useraccounts:unstyled@1.14.2 webapp@1.13.8 webapp-hashing@1.1.1 -wekan-accounts-cas@0.1.0 +wekan-accounts-cas@0.2.0 wekan-accounts-lockout@1.1.0 wekan-accounts-oidc@1.0.10 wekan-accounts-sandstorm@0.9.0 diff --git a/packages/wekan-accounts-cas/cas_server.js b/packages/wekan-accounts-cas/cas_server.js index 2e8edef2c..f8bb2d894 100644 --- a/packages/wekan-accounts-cas/cas_server.js +++ b/packages/wekan-accounts-cas/cas_server.js @@ -1,9 +1,8 @@ "use strict"; -const Fiber = Npm.require('fibers'); -const https = Npm.require('https'); -const url = Npm.require('url'); -const xmlParser = Npm.require('xml2js'); +import https from 'https'; +import url from 'url'; +import xml2js from 'xml2js'; // Library class CAS { @@ -61,7 +60,7 @@ class CAS { console.log(error); callback(undefined, false); } else { - xmlParser.parseString(response, (err, result) => { + xml2js.parseString(response, (err, result) => { if (err) { console.log('Bad response format.'); callback({message: 'Bad response format. XML could not parse it'}); @@ -120,20 +119,16 @@ let _userData = {}; //RoutePolicy.declare('/_cas/', 'network'); // Listen to incoming OAuth http requests -WebApp.connectHandlers.use((req, res, next) => { - // Need to create a Fiber since we're using synchronous http calls and nothing - // else is wrapping this in a fiber automatically - - Fiber(() => { - middleware(req, res, next); - }).run(); -}); +WebApp.connectHandlers.use(Meteor.bindEnvironment((req, res, next) => { + middleware(req, res, next); +})); const middleware = (req, res, next) => { // Make sure to catch any exceptions because otherwise we'd crash // the runner + let redirectUrl; try { - urlParsed = url.parse(req.url, true); + const urlParsed = url.parse(req.url, true); // Getting the ticket (if it's defined in GET-params) // If no ticket, then request will continue down the default @@ -150,7 +145,7 @@ const middleware = (req, res, next) => { } const serviceUrl = Meteor.absoluteUrl(urlParsed.href.replace(/^\//g, '')).replace(/([&?])ticket=[^&]+[&]?/g, '$1').replace(/[?&]+$/g, ''); - const redirectUrl = serviceUrl;//.replace(/([&?])casToken=[^&]+[&]?/g, '$1').replace(/[?&]+$/g, ''); + redirectUrl = serviceUrl;//.replace(/([&?])casToken=[^&]+[&]?/g, '$1').replace(/[?&]+$/g, ''); // get auth token const credentialToken = query.casToken; @@ -206,7 +201,7 @@ const casValidate = (req, ticket, token, service, callback) => { * Register a server-side login handle. * It is call after Accounts.callLoginMethod() is call from client. */ - Accounts.registerLoginHandler((options) => { + Accounts.registerLoginHandler(async (options) => { if (!options.cas) return undefined; @@ -252,13 +247,13 @@ const casValidate = (req, ticket, token, service, callback) => { if (attrs.debug) { console.log(`CAS response : ${JSON.stringify(result)}`); } - let user = Meteor.users.findOne({ 'username': options.username }); + let user = await Meteor.users.findOneAsync({ 'username': options.username }); if (! user) { if (attrs.debug) { console.log(`Creating user account ${JSON.stringify(options)}`); } - const userId = Accounts.insertUserDoc({}, options); - user = Meteor.users.findOne(userId); + const userId = await Accounts.insertUserDoc({}, options); + user = await Meteor.users.findOneAsync(userId); } if (attrs.debug) { console.log(`Using user account ${JSON.stringify(user)}`); @@ -267,7 +262,7 @@ const casValidate = (req, ticket, token, service, callback) => { }); const _hasCredential = (credentialToken) => { - return _.has(_casCredentialTokens, credentialToken); + return Object.prototype.hasOwnProperty.call(_casCredentialTokens, credentialToken); } /* diff --git a/packages/wekan-accounts-cas/package.js b/packages/wekan-accounts-cas/package.js index 314d17c17..8cf749829 100644 --- a/packages/wekan-accounts-cas/package.js +++ b/packages/wekan-accounts-cas/package.js @@ -1,17 +1,17 @@ Package.describe({ summary: "CAS support for accounts", - version: "0.1.0", + version: "0.2.0", name: "wekan-accounts-cas", git: "https://github.com/wekan/meteor-accounts-cas" }); Package.onUse(function(api) { + api.use('ecmascript'); 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('underscore'); api.addFiles('cas_client.js', 'web.browser'); api.addFiles('cas_client_cordova.js', 'web.cordova'); api.addFiles('cas_server.js', 'server');