index.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. var express = require('express');
  2. var router = express.Router();
  3. var request = require('request');
  4. var config = require('../config');
  5. router.get('/', function(req, res) {
  6. res.setLocale(config.locale);
  7. res.render('index', { community: config.community,
  8. tokenRequired: !!config.inviteToken });
  9. });
  10. router.post('/invite', function(req, res) {
  11. if (req.body.email && (!config.inviteToken || (!!config.inviteToken && req.body.token === config.inviteToken))) {
  12. request.post({
  13. url: 'https://'+ config.slackUrl + '/api/users.admin.invite',
  14. form: {
  15. email: req.body.email,
  16. token: config.slacktoken,
  17. set_active: true
  18. }
  19. }, function(err, httpResponse, body) {
  20. // body looks like:
  21. // {"ok":true}
  22. // or
  23. // {"ok":false,"error":"already_invited"}
  24. if (err) { return res.send('Error:' + err); }
  25. body = JSON.parse(body);
  26. if (body.ok) {
  27. res.render('result', {
  28. community: config.community,
  29. message: 'Success! Check "'+ req.body.email +'" for an invite from Slack.'
  30. });
  31. } else {
  32. var error = body.error;
  33. if (error === 'already_invited' || error === 'already_in_team') {
  34. res.render('result', {
  35. community: config.community,
  36. message: 'Success! You were already invited.<br>' +
  37. 'Visit <a href="https://'+ config.slackUrl +'">'+ config.community +'</a>'
  38. });
  39. return;
  40. } else if (error === 'invalid_email') {
  41. error = 'The email you entered is an invalid email.';
  42. } else if (error === 'invalid_auth') {
  43. error = 'Something has gone wrong. Please contact a system administrator.';
  44. }
  45. res.render('result', {
  46. community: config.community,
  47. message: 'Failed! ' + error,
  48. isFailed: true
  49. });
  50. }
  51. });
  52. } else {
  53. var errMsg = [];
  54. if (!req.body.email) {
  55. errMsg.push('your email is required');
  56. }
  57. if (!!config.inviteToken) {
  58. if (!req.body.token) {
  59. errMsg.push('valid token is required');
  60. }
  61. if (req.body.token && req.body.token !== config.inviteToken) {
  62. errMsg.push('the token you entered is wrong');
  63. }
  64. }
  65. res.render('result', {
  66. community: config.community,
  67. message: 'Failed! ' + errMsg.join(' and ') + '.',
  68. isFailed: true
  69. });
  70. }
  71. });
  72. module.exports = router;