support user-requested filtering of extensions. resolves #1844
[xtuple] / node-datasource / routes / auth.js
index 0f26db4..fea2dc7 100644 (file)
@@ -9,7 +9,6 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
     @name Auth
     @class Auth
     */
-
   var passport = require('passport'),
       url = require('url');
 
@@ -20,9 +19,15 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
     //passport.authenticate('local', { successReturnToOrRedirect: '/login/scope', failureRedirect: '/', failureFlash: 'Invalid username or password.' }),
     passport.authenticate('local', { failureRedirect: '/?login=fail' }),
     function (req, res, next) {
-
+      var pathName = "/app";
       if (req && req.session && !req.session.oauth2 && req.session.passport && req.session.passport.user && req.session.passport.user.organization) {
-        res.redirect("/" + req.session.passport.user.organization + '/app');
+        if (req.body.extensions) {
+          pathName = pathName + "?extensions=" + req.body.extensions;
+        }
+        if (req.body.hash && req.body.hash.charAt(0) === "#") {
+          pathName = pathName + req.body.hash;
+        }
+        res.redirect("/" + req.session.passport.user.organization + pathName);
         //next();
       } else {
         exports.scopeForm(req, res, next);
@@ -136,7 +141,7 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
         res.redirect(req.session.returnTo);
       } else {
         // Redirect to start loading the client app.
-        res.redirect('/client');
+        res.redirect('/' + selectedOrg + '/app');
       }
     };
 
@@ -187,7 +192,7 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
 
           // Get the org from the scope URI e.g. 'dev' from: 'https://mobile.xtuple.com/auth/dev'
           scope = url.parse(value, true);
-          org = scope.path.match(/\/auth\/(.*)/)[1] || null;
+          org = scope.path.split("/")[1] || null;
 
           // TODO - Still need more work to support userinfo calls.
           // See node-datasource/oauth2/oauth2.js authorization.