add/remove facebook from profile template complete

This commit is contained in:
Sahat Yalkabov
2014-04-13 00:08:28 -04:00
parent 90de4eedba
commit 09ef192298

View File

@ -111,6 +111,15 @@ inquirer.prompt({
| Sign in with Facebook | Sign in with Facebook
***/ ***/
}); });
var facebookLinkUnlink = M(function() {
/***
if user.facebook
p: a.text-danger(href='/account/unlink/facebook') Unlink your Facebook account
else
p: a(href='/auth/facebook') Link your Facebook account
***/
});
var passportConfigFile = 'config/passport.js'; var passportConfigFile = 'config/passport.js';
var userModelFile = 'models/User.js'; var userModelFile = 'models/User.js';
@ -125,13 +134,9 @@ inquirer.prompt({
output; output;
if (_.contains(answer.auth, 'facebook')) { if (_.contains(answer.auth, 'facebook')) {
// Check if FacebookStrategy is already in use. If it isn't defined,
// add Facebook authentication.
if (passportConfig.indexOf(facebookStrategyRequire) < 0) { if (passportConfig.indexOf(facebookStrategyRequire) < 0) {
// config/passport.js (add)
// config/passport.js
passportConfig = passportConfig.split('\n'); passportConfig = passportConfig.split('\n');
index = passportConfig.lastIndexOf("var passport = require('passport');"); index = passportConfig.lastIndexOf("var passport = require('passport');");
passportConfig.splice(index + 1, 0, facebookStrategyRequire); passportConfig.splice(index + 1, 0, facebookStrategyRequire);
index = passportConfig.lastIndexOf('passport.deserializeUser(function(id, done) {'); index = passportConfig.lastIndexOf('passport.deserializeUser(function(id, done) {');
@ -139,43 +144,47 @@ inquirer.prompt({
output = passportConfig.join('\n'); output = passportConfig.join('\n');
fs.writeFileSync(passportConfigFile, output); fs.writeFileSync(passportConfigFile, output);
// views/account/login.jade // views/account/login.jade (add)
loginTemplate = loginTemplate.split('\n'); loginTemplate = loginTemplate.split('\n');
loginTemplate.push(facebookButton); loginTemplate.push(facebookButton);
output = loginTemplate.join('\n'); output = loginTemplate.join('\n');
fs.writeFileSync(loginTemplateFile, output); fs.writeFileSync(loginTemplateFile, output);
// views/account/profile.jade // views/account/profile.jade (add)
profileTemplate = profileTemplate.split('\n'); profileTemplate = profileTemplate.split('\n');
profileTemplate.push(facebookButton); index = profileTemplate.indexOf(' h3 Linked Accounts');
output = loginTemplate.join('\n'); profileTemplate.splice(index + 1, 0, facebookLinkUnlink);
fs.writeFileSync(loginTemplateFile, output); output = profileTemplate.join('\n');
fs.writeFileSync(profileTemplateFile, output);
console.log('Facebook authentication has been added.'.info); console.log('Facebook authentication has been added.'.info);
} else { } else {
// Otherwise, safely ignore it. No need to add it twice.
console.log('Facebook authentication is already active.'.warn); console.log('Facebook authentication is already active.'.warn);
} }
} else { } else {
// If checkbox is unchecked, delete Facebook authentication entirely. // config/passport.js (remove)
passportConfig = passportConfig.split('\n'); passportConfig = passportConfig.split('\n');
index = passportConfig.lastIndexOf(facebookStrategyRequire); index = passportConfig.lastIndexOf(facebookStrategyRequire);
passportConfig.splice(index, 1); passportConfig.splice(index, 1);
index = passportConfig.lastIndexOf('// Sign in with Facebook.'); index = passportConfig.lastIndexOf('// Sign in with Facebook.');
passportConfig.splice(index, 47); passportConfig.splice(index, 47);
output = passportConfig.join('\n'); output = passportConfig.join('\n');
fs.writeFileSync(passportConfigFile, output); fs.writeFileSync(passportConfigFile, output);
// views/account/login.jade (remove)
loginTemplate = loginTemplate.split('\n'); loginTemplate = loginTemplate.split('\n');
index = loginTemplate.indexOf(" a.btn.btn-block.btn-facebook.btn-social(href='/auth/facebook')"); index = loginTemplate.indexOf(" a.btn.btn-block.btn-facebook.btn-social(href='/auth/facebook')");
loginTemplate.splice(index, 3); loginTemplate.splice(index, 4);
output = loginTemplate.join('\n'); output = loginTemplate.join('\n');
fs.writeFileSync(loginTemplateFile, output); fs.writeFileSync(loginTemplateFile, output);
// views/account/profile.jade (remove)
profileTemplate = profileTemplate.split('\n');
index = profileTemplate.indexOf(" if user.facebook");
profileTemplate.splice(index - 1, 5);
output = profileTemplate.join('\n');
fs.writeFileSync(profileTemplateFile, output);
console.log('Facebook authentication has been removed.'.error); console.log('Facebook authentication has been removed.'.error);
} }
}); });