No Description

Outsider d0b9776bd5 use const instead var in node.js v6 above 6 years ago
bin d0b9776bd5 use const instead var in node.js v6 above 6 years ago
locales 7aa0134b70 Create nl.json 6 years ago
public d3d7659a1c Add reCAPTCHA functionality 6 years ago
routes d0b9776bd5 use const instead var in node.js v6 above 6 years ago
screenshots 2be0c2d42b describe how to issue token correctly 7 years ago
views d3d7659a1c Add reCAPTCHA functionality 6 years ago
.gitignore 27a4ae4e00 update npm modules 6 years ago
Dockerfile 30788ef215 Add Docker support 8 years ago
LICENSE.md 06435ed629 add license 9 years ago
README.md d3d7659a1c Add reCAPTCHA functionality 6 years ago
app.js d0b9776bd5 use const instead var in node.js v6 above 6 years ago
app.json b438c78680 Typo fix, "info" -> "into" 8 years ago
azuredeploy.json c98c6db8b4 added azuredeploy template 7 years ago
config.js d3d7659a1c Add reCAPTCHA functionality 6 years ago
iisnode.yaml 40e7a7aa15 added iis yaml for azure 7 years ago
manifest.yml 5ca7da6437 Add Cloud Foundry manifest 7 years ago
package.json 27a4ae4e00 update npm modules 6 years ago

README.md

Slack Invite Automation

A tiny web application to invite a user into your Slack team.

Inspired by How I hacked Slack into a community platform with Typeform and Socket.io's Slack page.

This project supports Heroku, Azure and Cloud Foundry.

Deploy to Heroku Deploy to Azure

Settings

You can set variables for your own purpose in config.js or environment variables.

config.js

Fill out config.js as your infomation.

  • community: your community or team name to display on join page.
  • slackUrl : your slack team url (ex.: socketio.slack.com)
  • slacktoken : Your access token for Slack. (see Issue token)
  • inviteToken: An optional security measure - if it is set, then that token will be required to get invited.
  • recaptchaSiteKey: An optional security measure - if it is set, and recaptchaSecretKey is set, then a captcha will be required to get invited.
  • recaptchaSecretKey: An optional security measure - if it is set, and recaptchaSiteKey is set, then a captcha will be required to get invited.
  • locale: Application language (currently cs, de, en, es, fr, it, ja, ko, pl, pt, pt-BR, tr, zh-CN and zh-TW available).

Environment Variables

You can set environment variables directly or in .env file. If you want to use a .env file, create a file in the root called .env with the following key/value pairs. (.env files are added to the .gitignore.)

  • COMMUNITY_NAME : Your community or team name to display on join page.
  • SLACK_URL : Your Slack team url (ex.: socketio.slack.com)
  • SLACK_TOKEN : Your access token for Slack. (see Issue token)
  • INVITE_TOKEN: An optional security measure - if it is set, then that token will be required to get invited.
  • RECAPTCHA_SITE: An optional security measure - used to enable reCAPTCHA.
  • RECAPTCHA_SECRET: An optional security measure - used to enable reCAPTCHA.
  • LOCALE: Application language (currently cs, de, en, es, fr, it, ja, ko, pl, pt, pt-BR, tr, zh-CN and zh-TW available).

Sample

COMMUNITY_NAME=socketio
SLACK_URL=socketio.slack.com
SLACK_TOKEN=ffsdf-5411524512154-16875416847864648976-45641654654654654-444334f43b34566f
INVITE_TOKEN=abcdefg
LOCALE=en

You can test your token via curl:

   curl -X POST 'https://YOUR-SLACK-TEAM.slack.com/api/users.admin.invite' \
   --data 'email=EMAIL&token=TOKEN&set_active=true' \
   --compressed

Heroku / Azure

Add the application settings that are defined in the environment variables above.

Run

Node.js is required.

$ git clone https://github.com/outsideris/slack-invite-automation.git
$ cd slack-invite-automation
$ npm install
$ npm start

You can access http://localhost:3000 on your web browser.

Run with Docker

It's easy to run this service if you have installed Docker on your system.

$ git clone https://github.com/outsideris/slack-invite-automation.git
$ cd slack-invite-automation
$ docker build -t slack-invite-automation .
$ docker run -it --rm -e COMMUNITY_NAME="YOUR-TEAM-NAME" -e SLACK_URL="YOUR-TEAM.slack.com" -e SLACK_TOKEN="YOUR-ACCESS-TOKEN" -p 3000:3000 slack-invite-automation

Issue token

You should generate the token in admin user, not owner. If you generate the token in owner user, a missing_scope error may occur.

There are two ways to issue the access token.

Legacy tokens

  1. Visit https://api.slack.com/custom-integrations/legacy-tokens.
  2. Click Create token.

OAuth tokens

  1. Visit https://api.slack.com/apps and Create New App.

  2. Click "Permissions".

  3. In "OAuth & Permissions" page, select admin scope under "Permission Scopes" menu and save changes.

  4. Click "Install App to Team".

  5. Visit https://slack.com/oauth/authorize?&client_id=CLIENT_ID&team=TEAM_ID&install_redirect=install-on-team&scope=admin+client in your browser and authorize it.

    • It authorizes the client permission. Otherwise, you can see {"ok":false,"error":"missing_scope","needed":"client","provided":"admin"} error.
    • Your CLIENT_ID could be found in "Basic Information" menu of your app page that you just install.
    • Your TEAM_ID could be found in https://api.slack.com/methods/team.info/test