mavensmate
Version:
Core APIs that drive MavensMate IDEs for Salesforce1/Force.com
79 lines (72 loc) • 2.39 kB
JavaScript
;
var express = require('express');
var router = express.Router();
var inherits = require('inherits');
var logger = require('winston');
var querystring = require('querystring');
var path = require('path');
var util = require('../lib/util');
router.get('/new', function(req, res) {
var project;
if (req.project) {
project = req.project;
} else if (req.query.pid) {
project = util.getProjectById(req.app, req.query.pid);
}
res.render('auth/index.html', {
project: project,
title: req.query.title,
callback: req.query.callback,
param1: req.query.param1,
isForced: req.query.forced === '1'
});
});
router.get('/callback', function(req, res) {
res.render('auth/callback.html', {
title: 'Redirecting...'
});
});
router.post('/', function(req, res) {
var orgType = req.body.orgType;
var instanceUrl = req.body.instanceUrl;
if (!instanceUrl) {
if (orgType === 'sandbox') {
instanceUrl = 'https://test.salesforce.com/';
} else {
instanceUrl = 'https://login.salesforce.com/';
}
}
var params = {
client_id: process.env.SFDC_OAUTH_CLIENT_ID || '3MVG9uudbyLbNPZP7kLgoRiWVRqiN8gFcKwdAlztVnjgbj9shSk1vMXJNmV7W0ciFbeYiaP9D4tLfBBD06l_7',
redirect_uri: process.env.SFDC_OAUTH_CALLBACK_URL || 'https://localhost:56248/sfdc/auth/callback',
response_type: process.env.SFDC_OAUTH_RESPONSE_TYPE || 'token',
display: 'popup',
prompt: 'login'
};
if (req.body.username) {
params.login_hint = req.body.username;
}
var state = {};
if (req.body.callback) {
state.callback = req.body.callback
}
if (req.body.pid) {
state.pid = req.body.pid;
}
if (req.body.param1) {
state.param1 = req.body.param1;
}
params.state = JSON.stringify(state);
var oauthUrl = instanceUrl+'/services/oauth2/authorize?'+querystring.stringify(params);
logger.debug('oauth url is: ', oauthUrl);
res.redirect(oauthUrl);
});
router.post('/finish', function(req, res) {
logger.debug('finishing oauth dance: ', req.body.url);
var loginInfo = querystring.parse(req.body.url.split('#')[1]);
var state = JSON.parse(loginInfo.state);
var callbackUrl = state.callback+'?'+querystring.stringify(loginInfo);
logger.debug('redirecting to callback', callbackUrl);
res.redirect(callbackUrl);
});
module.exports = router;