able to use the api upon button click
This commit is contained in:
57
app.js
57
app.js
@ -31,6 +31,7 @@ var express = require('express'),
|
||||
passport = require('passport'),
|
||||
expressValidator = require('express-validator'),
|
||||
connectAssets = require('connect-assets'),
|
||||
request = require('request'),
|
||||
|
||||
/**
|
||||
* Controllers (route handlers).
|
||||
@ -46,7 +47,7 @@ var express = require('express'),
|
||||
/**
|
||||
* Stories
|
||||
*/
|
||||
storyController = require('./controllers/story');
|
||||
storyController = require('./controllers/story'),
|
||||
|
||||
/**
|
||||
* API keys and Passport configuration.
|
||||
@ -292,6 +293,60 @@ app.post(
|
||||
userController.updateProgress
|
||||
);
|
||||
|
||||
app.get('/api/slack', function(req, res) {
|
||||
if (req.user) {
|
||||
if (req.user.email) {
|
||||
var invite = {
|
||||
'email': req.user.email,
|
||||
'token': process.env.SLACK_KEY,
|
||||
'set_active': true
|
||||
};
|
||||
|
||||
var headers = {
|
||||
'User-Agent': 'Node Browser/0.0.1',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
};
|
||||
|
||||
var options = {
|
||||
url: 'https://freecode.slack.com/api/users.admin.invite',
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
form: invite
|
||||
};
|
||||
|
||||
request(options, function (error, response, body) {
|
||||
if (!error && response.statusCode === 200) {
|
||||
req.flash('success', {
|
||||
msg: "We've successfully requested an invite for you. Please check your email and follow the instructions from Slack."
|
||||
});
|
||||
req.user.sentSlackInvite = true;
|
||||
req.user.save(function(err, user) {
|
||||
if (err) {
|
||||
next(err);
|
||||
}
|
||||
return res.redirect('back');
|
||||
});
|
||||
} else {
|
||||
req.flash('errors', {
|
||||
msg: "The invitation email did not go through for some reason. Please try again or <a href='mailto:team@freecodecamp.com?subject=slack%20invite%20failed%20to%20send>email us</a>."
|
||||
});
|
||||
return res.redirect('back');
|
||||
}
|
||||
})
|
||||
} else {
|
||||
req.flash('notice', {
|
||||
msg: "Before we can send your Slack invite, we need your email address. Please update your profile information here."
|
||||
});
|
||||
return res.redirect('/account');
|
||||
}
|
||||
} else {
|
||||
req.flash('notice', {
|
||||
msg: "You need to sign in to Free Code Camp before we can send you a Slack invite."
|
||||
});
|
||||
return res.redirect('/account');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Main routes.
|
||||
*/
|
||||
|
@ -74,6 +74,11 @@ module.exports = {
|
||||
},
|
||||
|
||||
chat: function chat(req, res) {
|
||||
if (req.user) {
|
||||
if (req.user.sentSlackInvite) {
|
||||
res.redirect('https://freecode.slack.com/messages/general/');
|
||||
}
|
||||
}
|
||||
res.render('resources/chat', {
|
||||
title: "Enter Free Code Camp's Chat Rooms"
|
||||
});
|
||||
|
@ -348,6 +348,7 @@ var userSchema = new mongoose.Schema({
|
||||
}
|
||||
},
|
||||
resetPasswordToken: String,
|
||||
sentSlackInvite: false,
|
||||
resetPasswordExpires: Date,
|
||||
uncompletedBonfires: Array,
|
||||
completedBonfires: Array,
|
||||
|
@ -4,6 +4,9 @@ block content
|
||||
br
|
||||
.text-center
|
||||
if (user)
|
||||
if (!user.sentSlackInvite)
|
||||
a.btn.btn-primary.signup-btn.next-challenge-button(href="/api/slack") Join our Slack Chat Room
|
||||
.spacer
|
||||
a.btn.btn-cta.signup-btn.next-challenge-button(href="/challenges") Take me to my next challenge
|
||||
else
|
||||
a.btn.btn-cta.signup-btn.next-challenge-button(href="/signin") Start learning to code (it's free)
|
||||
|
Reference in New Issue
Block a user