No Description

Outsider 1f4d743f01 remove docker release on travis-ci 6 years ago
aws 00a6ac7a7a output URL; fix relative URL problem; update README 6 years ago
bin d0b9776bd5 use const instead var in node.js v6 above 6 years ago
lib 456b25a8d9 - Custom background colors for the badge 6 years ago
locales 7aa0134b70 Create nl.json 6 years ago
public d3d7659a1c Add reCAPTCHA functionality 6 years ago
routes 456b25a8d9 - Custom background colors for the badge 6 years ago
screenshots d8b2c43a96 Revise readme with more accurate instructions 6 years ago
scripts 7f91bfbd2f ci: deploy docker image with a script 6 years ago
views 00a6ac7a7a output URL; fix relative URL problem; update README 6 years ago
.dockerignore 2db394f980 fix node version and use alpine for Docker 6 years ago
.gitignore c9cc4ba621 add AWS deployment 6 years ago
.travis.yml 1f4d743f01 remove docker release on travis-ci 6 years ago
Dockerfile 2bccb8823e fix Dockerfile 6 years ago
LICENSE.md 06435ed629 add license 9 years ago
README.md 1fddae03c6 Merge pull request #117 from lafiosca/aws 6 years ago
app.js 958be0a6a5 support sub-path 6 years ago
app.json b438c78680 Typo fix, "info" -> "into" 8 years ago
azuredeploy.json 1e25ee648a fix azure node.js env 6 years ago
config.js 958be0a6a5 support sub-path 6 years ago
iisnode.yaml 18478694b4 fix azure deployment to integrate github 6 years ago
manifest.yml 5ca7da6437 Add Cloud Foundry manifest 7 years ago
package-lock.json c9cc4ba621 add AWS deployment 6 years ago
package.json 8dc5086edf release 0.3.3 6 years ago

README.md

Slack Invite Automation

Build Status

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, Cloud Foundry, and Amazon Web Services (AWS).

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, nl, pl, pt, pt-BR, tr, zh-CN and zh-TW available).
  • subpath: Sub-path in URL. For example, if /example is set, it's served in /example, not /. Default is /.

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, nl, pl, pt, pt-BR, tr, zh-CN and zh-TW available).
  • SUBPATH: Sub-path in URL. For example, if /example is set, it's served in /example, not /. Default is /.

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.

Amazon Web Services (AWS)

If you have an AWS account and have already installed and configured the AWS CLI tool, you can easily deploy this application to API Gateway and Lambda via CloudFormation in a few minutes.

Instead of editing config.js, take these steps:

  1. Copy aws/config.example.sh to aws/config.sh
  2. Edit the values in aws/config.sh, which correspond to the variables described above, plus these:
    • StackName: the name of the CloudFormation stack to create
    • S3BucketArtifacts: the name of an existing S3 bucket you have write access to, for storing deployment artifacts
    • S3PrefixArtifacts: the prefix to use within that S3 bucket for all deployment artifacts written
  3. Run aws/deploy.sh to create the CloudFormation stack and deploy your application, outputting the URL
  4. (Optional) For a friendlier URL, log into the AWS web console and establish a custom domain pointing to the API Gateway stage deployed in step 3.

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. Pull the Docker image from Docker Hub.

$ docker pull outsideris/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 outsideris/slack-invite-automation

Or, You can build a Docker image yourself.

$ git clone https://github.com/outsideris/slack-invite-automation.git
$ cd slack-invite-automation
$ docker build -t outsideris/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 outsideris/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 Workspace".

  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 TEAM_ID is the subdomain for your slack team, e.g. myteam.slack.com - your TEAM_ID is myteam.
    • Your CLIENT_ID found in "Basic Information" section for your App.

Badge

You can use the badge to show status of user in your slack.

  • With default colors:

    <img src="https://your.domain/badge.svg">
    
  • With custom colors:

    • ?colorA=abcdef Set background of the left part (hex color only)
    • ?colorB=fedcba Set background of the right part (hex color only)

      <img src="https://your.domain/badge.svg?colorA=155799&colorB=159957">
      

reCAPTCHA

Register a new site in Google reCAPTHCA as reCAPTCHA v2 type.

Set "Site key" as recaptchaSiteKey or RECAPTCHA_SITE, and "Secret key" as recaptchaSecretKey or RECAPTCHA_SECRET.

Associate fork with heroku

If you use the "Deploy to Heroku" button and want to modify your App you should fork this project. After forking and making changes you should associate your repo with the deployed instance by running:

$ heroku git:remote -a thawing-inlet-61413 replacing your heroku app's name and running

$ git push heroku master to upload the changes. For full details see Heroku: deploying with git