var express = require('express'); var router = express.Router(); var request = require('request'); var config = require('../config'); router.get('/', function(req, res) { res.setLocale(config.locale); res.render('index', { community: config.community, tokenRequired: !!config.inviteToken, recaptchaSiteKey: config.recaptchaSiteKey }); }); router.post('/invite', function(req, res) { if (req.body.email && (!config.inviteToken || (!!config.inviteToken && req.body.token === config.inviteToken))) { function doInvite() { request.post({ url: 'https://'+ config.slackUrl + '/api/users.admin.invite', form: { email: req.body.email, token: config.slacktoken, set_active: true } }, function(err, httpResponse, body) { // body looks like: // {"ok":true} // or // {"ok":false,"error":"already_invited"} if (err) { return res.send('Error:' + err); } body = JSON.parse(body); if (body.ok) { res.render('result', { community: config.community, message: 'Success! Check “'+ req.body.email +'” for an invite from Slack.' }); } else { var error = body.error; if (error === 'already_invited' || error === 'already_in_team') { res.render('result', { community: config.community, message: 'Success! You were already invited.
' + 'Visit '+ config.community +'' }); return; } else if (error === 'invalid_email') { error = 'The email you entered is an invalid email.'; } else if (error === 'invalid_auth') { error = 'Something has gone wrong. Please contact a system administrator.'; } res.render('result', { community: config.community, message: 'Failed! ' + error, isFailed: true }); } }); } if (!!config.recaptchaSiteKey && !!config.recaptchaSecretKey) { request.post({ url: 'https://www.google.com/recaptcha/api/siteverify', form: { response: req.body['g-recaptcha-response'], secret: config.recaptchaSecretKey } }, function(err, httpResponse, body) { if (typeof body === "string") { body = JSON.parse(body); } if (body.success) { doInvite(); } else { error = 'Invalid captcha.'; res.render('result', { community: config.community, message: 'Failed! ' + error, isFailed: true }); } }); } else { doInvite(); } } else { var errMsg = []; if (!req.body.email) { errMsg.push('your email is required'); } if (!!config.inviteToken) { if (!req.body.token) { errMsg.push('valid token is required'); } if (req.body.token && req.body.token !== config.inviteToken) { errMsg.push('the token you entered is wrong'); } } res.render('result', { community: config.community, message: 'Failed! ' + errMsg.join(' and ') + '.', isFailed: true }); } }); module.exports = router;