Created
October 31, 2016 22:22
-
-
Save 5nyper/2c910bd627f40f639fcfa8dbf01e2535 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict" | |
var twit = require("twit"); | |
var Promise = require('bluebird') | |
var file = Promise.promisifyAll(require('fs-extra')); | |
var request = Promise.promisify(require('request')); | |
var bodyParser = require('body-parser'); | |
var hour = (60 * 1000) | |
setInterval(checkTime, hour) | |
var T = new twit({ | |
consumer_key: 'd3UyTxZ2yOKBFOcilHMXNPnpB', | |
consumer_secret: 'pz0njvwKmXkbCXxaJvAYYeI0OhcjzRDpzAMXoyCo2inqgLRWBD', | |
access_token: '498173926-DdwNYHLFSMoWQjoG5dp8FqAsD2GFmbDjesxHruyc', | |
access_token_secret: '4U9IvHzZH7j5de2sNCklyaWJDpizmyhxAIThYWHFOjspI', | |
timeout_ms: 60 * 1000, | |
}); | |
module.exports = function(express, router, passport) { | |
router.use(express.static('views/new')); | |
// normal routes =============================================================== | |
// show the home page (will also have our login links) | |
router.get('/new', function(req, res) { | |
res.render('new/pages/index.ejs') | |
}) | |
router.get('/', function(req, res) { | |
//res.render('index.ejs'); | |
res.redirect('/login') | |
}); | |
// show the login form | |
router.get('/login', function(req, res) { | |
// render the page and pass in any flash data if it exists | |
res.render('login.ejs', { | |
message: req.flash('loginMessage') | |
}); | |
}); | |
router.post('/login', passport.authenticate('local-login', { | |
successRedirect: '/profile', // redirect to the secure profile section | |
failureRedirect: '/login', // redirect back to the signup page if there is an error | |
failureFlash: true // allow flash messages | |
})); | |
// process the login form | |
// router.post('/login', do all our passport stuff here); | |
// ===================================== | |
// SIGNUP ============================== | |
// ===================================== | |
// show the signup form | |
router.get('/signup', function(req, res) { | |
// render the page and pass in any flash data if it existscd icomeup | |
res.render('signup.ejs', { | |
message: req.flash('signupMessage') | |
}); | |
}); | |
router.post('/signup', passport.authenticate('local-signup', { | |
successRedirect: '/profile', // redirect to the secure profile section | |
failureRedirect: '/signup', // redirect back to the signup page if there is an error | |
failureFlash: true // allow flash messages | |
})); | |
// PROFILE SECTION ========================= | |
router.get('/profile', isLoggedIn, function(req, res) { | |
res.render('profile.ejs', { | |
user: req.user | |
}); | |
}); | |
// LOGOUT ============================== | |
router.get('/logout', function(req, res) { | |
req.logout(); | |
res.redirect('/'); | |
}); | |
// ============================================================================= | |
// AUTHENTICATE (FIRST LOGIN) ================================================== | |
// ============================================================================= | |
// twitter -------------------------------- | |
// send to twitter to do the authentication | |
router.get('/auth/twitter', passport.authenticate('twitter', { | |
scope: 'email' | |
})); | |
// handle the callback after twitter has authenticated the user | |
router.get('/auth/twitter/callback', | |
passport.authenticate('twitter', { | |
successRedirect: '/profile', | |
failureRedirect: '/' | |
})); | |
// instagram --------------------------------- | |
router.get('/auth/instagram', passport.authenticate('instagram')); | |
router.get('/auth/instagram/callback', | |
passport.authenticate('instagram', { | |
successRedirect: '/profile', | |
failureRedirect: '/' | |
})); | |
// twitter -------------------------------- | |
// send to twitter to do the authentication | |
router.get('/connect/twitter', passport.authorize('twitter', { | |
scope: 'email' | |
})); | |
// handle the callback after twitter has authorized the user | |
router.get('/connect/twitter/callback', | |
passport.authorize('twitter', { | |
successRedirect: '/profile', | |
failureRedirect: '/' | |
})); | |
// INSTAGRAM --------------------------------- | |
router.get('/connect/instagram', passport.authorize('instagram')); | |
router.get('/connect/instagram/callback', | |
passport.authorize('instagram', { | |
successRedirect: '/profile', | |
failureRedirect: '/' | |
})); | |
// ============================================================================= | |
// UNLINK ACCOUNTS ============================================================= | |
// ============================================================================= | |
// used to unlink accounts. for social accounts, just remove the token | |
// for local account, remove email and password | |
// user account will stay active in case they want to reconnect in the future | |
// twitter -------------------------------- | |
router.get('/unlink/twitter', isLoggedIn, function(req, res) { | |
var user = req.user; | |
user.twitter.token = undefined; | |
user.save(function(err) { | |
res.redirect('/profile'); | |
}); | |
}); | |
// instagram --------------------------------- | |
router.get('/unlink/instagram', isLoggedIn, function(req, res) { | |
var user = req.user; | |
user.instagram.token = undefined; | |
file.removeSync('users/' + req.user.local.email + '/' + req.user.instagram.username) | |
user.save(function(err) { | |
res.redirect('/profile'); | |
}); | |
}); | |
router.get('/analytics', isLoggedIn, function(req, res) { | |
var view = req.query.view | |
if (req.query.social == 'instagram') { | |
if (view == "week") { | |
Promise.all([ | |
getInstaPics(req.user.instagram.username, 0), | |
getInstaPics(req.user.instagram.username, 1), | |
getInstaPics(req.user.instagram.username, 2), | |
getInstaPics(req.user.instagram.username, 3) | |
]).then((obj) => { | |
var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.instagram.username + '/instagram.json', "utf-8") | |
data = JSON.parse(data); | |
res.render('new/pages/index.ejs', { | |
day1: data.WEEKLY_FOLLOWERS[0].DAYS[0], | |
day2: data.WEEKLY_FOLLOWERS[0].DAYS[1], | |
day3: data.WEEKLY_FOLLOWERS[0].DAYS[2], | |
day4: data.WEEKLY_FOLLOWERS[0].DAYS[3], | |
day5: data.WEEKLY_FOLLOWERS[0].DAYS[4], | |
day6: data.WEEKLY_FOLLOWERS[0].DAYS[5], | |
day7: data.WEEKLY_FOLLOWERS[0].DAYS[6], | |
avg1: data.WEEKLY_LIKES[0].DAYS[0], | |
avg2: data.WEEKLY_LIKES[0].DAYS[1], | |
avg3: data.WEEKLY_LIKES[0].DAYS[2], | |
avg4: data.WEEKLY_LIKES[0].DAYS[3], | |
avg5: data.WEEKLY_LIKES[0].DAYS[4], | |
avg6: data.WEEKLY_LIKES[0].DAYS[5], | |
avg7: data.WEEKLY_LIKES[0].DAYS[6], | |
hour1: data.DAILY_FOLLOWERS[0].HOURS[0], | |
hour2: data.DAILY_FOLLOWERS[0].HOURS[1], | |
hour3: data.DAILY_FOLLOWERS[0].HOURS[2], | |
hour4: data.DAILY_FOLLOWERS[0].HOURS[3], | |
hour5: data.DAILY_FOLLOWERS[0].HOURS[4], | |
hour6: data.DAILY_FOLLOWERS[0].HOURS[5], | |
hour7: data.DAILY_FOLLOWERS[0].HOURS[6], | |
hour8: data.DAILY_FOLLOWERS[0].HOURS[7], | |
hour9: data.DAILY_FOLLOWERS[0].HOURS[8], | |
hour10: data.DAILY_FOLLOWERS[0].HOURS[9], | |
hour11: data.DAILY_FOLLOWERS[0].HOURS[10], | |
hour12: data.DAILY_FOLLOWERS[0].HOURS[11], | |
hour13: data.DAILY_FOLLOWERS[0].HOURS[12], | |
user: req.user.instagram.username, | |
weekly_min_followers: (data.WEEKLY_LIKES[0].DAYS[0] - 50), | |
weekly_max_followers: (data.STARTING_COUNTS[0].DAY + 100), | |
daily_min_followers: (data.STARTING_COUNTS[0].DAY - 10), | |
daily_max_followers: (data.STARTING_COUNTS[0].DAY + 50), | |
url0: obj[0].url, | |
url1: obj[1].url, | |
url2: obj[2].url, | |
url3: obj[3].url, | |
photo_likes0: obj[0].likes, | |
photo_likes1: obj[1].likes, | |
photo_likes2: obj[2].likes, | |
photo_likes3: obj[3].likes, | |
comment_count0: obj[0].comment_count, | |
comment_count1: obj[1].comment_count, | |
comment_count2: obj[2].comment_count, | |
comment_count3: obj[3].comment_count, | |
date: data.STARTING_COUNTS[2].DATE, | |
starting_followers: data.STARTING_COUNTS[2].MONTH, | |
starting_follows: data.STARTING_COUNTS[2].FOLLOWS, | |
email: req.user.local.email | |
}); | |
}) | |
} | |
else if (view == "day") { | |
Promise.all([ | |
getInstaPics(req.user.instagram.username, 0), | |
getInstaPics(req.user.instagram.username, 1), | |
getInstaPics(req.user.instagram.username, 2), | |
getInstaPics(req.user.instagram.username, 3) | |
]).then((obj) => { | |
var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.instagram.username + '/instagram.json', "utf-8") | |
data = JSON.parse(data); | |
res.render('new/pages/index.ejs', { | |
day1: data.WEEKLY_FOLLOWERS[0].DAYS[0], | |
day2: data.WEEKLY_FOLLOWERS[0].DAYS[1], | |
day3: data.WEEKLY_FOLLOWERS[0].DAYS[2], | |
day4: data.WEEKLY_FOLLOWERS[0].DAYS[3], | |
day5: data.WEEKLY_FOLLOWERS[0].DAYS[4], | |
day6: data.WEEKLY_FOLLOWERS[0].DAYS[5], | |
day7: data.WEEKLY_FOLLOWERS[0].DAYS[6], | |
avg1: data.WEEKLY_LIKES[0].DAYS[0], | |
avg2: data.WEEKLY_LIKES[0].DAYS[1], | |
avg3: data.WEEKLY_LIKES[0].DAYS[2], | |
avg4: data.WEEKLY_LIKES[0].DAYS[3], | |
avg5: data.WEEKLY_LIKES[0].DAYS[4], | |
avg6: data.WEEKLY_LIKES[0].DAYS[5], | |
avg7: data.WEEKLY_LIKES[0].DAYS[6], | |
hour1: data.DAILY_FOLLOWERS[0].HOURS[0], | |
hour2: data.DAILY_FOLLOWERS[0].HOURS[1], | |
hour3: data.DAILY_FOLLOWERS[0].HOURS[2], | |
hour4: data.DAILY_FOLLOWERS[0].HOURS[3], | |
hour5: data.DAILY_FOLLOWERS[0].HOURS[4], | |
hour6: data.DAILY_FOLLOWERS[0].HOURS[5], | |
hour7: data.DAILY_FOLLOWERS[0].HOURS[6], | |
hour8: data.DAILY_FOLLOWERS[0].HOURS[7], | |
hour9: data.DAILY_FOLLOWERS[0].HOURS[8], | |
hour10: data.DAILY_FOLLOWERS[0].HOURS[9], | |
hour11: data.DAILY_FOLLOWERS[0].HOURS[10], | |
hour12: data.DAILY_FOLLOWERS[0].HOURS[11], | |
hour13: data.DAILY_FOLLOWERS[0].HOURS[12], | |
user: req.user.instagram.username, | |
weekly_min_followers: (data.WEEKLY_LIKES[0].DAYS[0] - 50), | |
weekly_max_followers: (data.STARTING_COUNTS[0].DAY + 100), | |
daily_min_followers: (data.STARTING_COUNTS[0].DAY - 10), | |
daily_max_followers: (data.STARTING_COUNTS[0].DAY + 50), | |
url0: obj[0].url, | |
url1: obj[1].url, | |
url2: obj[2].url, | |
url3: obj[3].url, | |
photo_likes0: obj[0].likes, | |
photo_likes1: obj[1].likes, | |
photo_likes2: obj[2].likes, | |
photo_likes3: obj[3].likes, | |
comment_count0: obj[0].comment_count, | |
comment_count1: obj[1].comment_count, | |
comment_count2: obj[2].comment_count, | |
comment_count3: obj[3].comment_count, | |
date: data.STARTING_COUNTS[2].DATE, | |
starting_followers: data.STARTING_COUNTS[2].MONTH, | |
starting_follows: data.STARTING_COUNTS[2].FOLLOWS, | |
email: req.user.local.email | |
}); | |
}) | |
} | |
} else if (req.query.social == 'twitter') { | |
//var data = file.readFileSync('users/' + req.user.local.email + '/' + req.user.twitter.username + '/twitter.json', "utf-8") | |
res.send('twitter coming soon') | |
} else { | |
res.send('please specify the social') | |
} | |
}); | |
}; | |
function isLoggedIn(req, res, next) { | |
if (req.isAuthenticated()) | |
return next(); | |
res.redirect('/'); | |
} | |
function getHour() { | |
var date = new Date(); | |
return (date.getHours() + 24) % 12 || 12; | |
} | |
function getInstaPics(userid, index) { | |
return new Promise((resolve, reject) => { | |
var obj = {}; | |
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) { | |
var res = JSON.parse(response.body); | |
obj.comment_count = res.user.media.nodes[index].comments.count; | |
obj.likes = res.user.media.nodes[index].likes.count; | |
obj.url = res.user.media.nodes[index].display_src; | |
resolve(obj); | |
}).catch((error) => { | |
reject(error) | |
}) | |
}) | |
} | |
function updateUsers() { | |
console.log("Updating User Data Across Server!") | |
let date = new Date(); | |
let users = file.readdirSync('users/') | |
for (let i = 0; i<users.length; i++) { | |
let links = file.readdirSync('users/' + users[i]) | |
for (let k = 0; k<links.length; k++) { | |
let files = file.readdirSync('users/' + users[i] + '/' + links[k]) | |
if (files == "instagram.json") { | |
let data = file.readFileSync('users/' + users[i] + '/' + links[k] + '/instagram.json', "utf-8") | |
data = JSON.parse(data) | |
if (date.getDay() != data.WEEKLY_FOLLOWERS[0].DATE) { | |
getWeeklyInstaLikes(users[i], links[k]).then(() => { | |
console.log("For Followers function: " +users[i] + " " + links[k]) | |
getWeeklyInstaFollowers(users[i], links[k], date.getDay()) | |
}); | |
} | |
if (data.DAILY_FOLLOWERS[0].HOUR != getHour()) { | |
data.DAILY_FOLLOWERS[0].HOUR = getHour(); | |
getDailyFollowers(users[i], links[k]) | |
file.writeFileSync('users/' + users[i] + '/' + links[k] + '/instagram.json', JSON.stringify(data)) | |
} | |
} | |
else { | |
; | |
} | |
} | |
} | |
} | |
function checkTime() { | |
updateUsers() | |
} | |
function getWeeklyInstaFollowers(email, userid, date) { | |
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => { | |
data = JSON.parse(data); | |
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) { | |
var res = JSON.parse(response.body); | |
//var media = res.user.media | |
var result = res.user.followed_by.count | |
console.log("Got instas") | |
for (var i = 0; i < data.WEEKLY_FOLLOWERS[0].DAYS.length; i++) { | |
if (data.WEEKLY_FOLLOWERS[0].DAYS[i] == null) { | |
data.WEEKLY_FOLLOWERS[0].DATE = date; | |
data.WEEKLY_FOLLOWERS[0].DAYS[i] = result; | |
break; | |
} else { | |
continue; | |
} | |
} | |
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).catch((error) => { | |
console.log(error); | |
}) | |
}).catch((error) => { | |
console.log(error) | |
}) | |
}).catch((error) => { | |
console.log(error) | |
}) | |
} | |
function getWeeklyInstaLikes(email, userid) { | |
console.log("For likes function: " + email + " " + userid) | |
return new Promise((resolve, reject) => { | |
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => { | |
data = JSON.parse(data); | |
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) { | |
var results = []; | |
var res = JSON.parse(response.body); | |
var media = res.user.media | |
for (var i = 0; i < media.nodes.length; i++) { | |
results[i] = media.nodes[i].likes.count | |
} | |
var total = results.reduce(function(a, b) { | |
return a + b | |
}); | |
var avg = total / results.length | |
for (var i = 0; i < data.WEEKLY_LIKES[0].DAYS.length; i++) { | |
if (data.WEEKLY_LIKES[0].DAYS[i] == null) { | |
data.WEEKLY_LIKES[0].DAYS[i] = Math.ceil(avg); | |
break; | |
} else { | |
continue; | |
} | |
} | |
console.log("got avg likes") | |
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).then(() => { | |
resolve(null); | |
}).catch((error) => { | |
reject(error); | |
}) | |
}).catch((error) => { | |
reject(error) | |
}) | |
}).catch((error) =>{ | |
console.log("or here?") | |
reject(error) | |
}) | |
}) | |
} | |
function getDailyFollowers(email, userid) { | |
file.readFileAsync('users/' + email + '/' + userid + '/instagram.json', "utf-8").then((data) => { | |
data = JSON.parse(data); | |
request(("https://instagram.com/" + userid + "/?__a=1")).then(function(response) { | |
var res = JSON.parse(response.body); | |
//var media = res.user.media | |
var result = res.user.followed_by.count | |
console.log("Got instas") | |
for (var i = 0; i < data.DAILY_FOLLOWERS[0].HOURS.length; i++) { | |
if (data.DAILY_FOLLOWERS[0].HOURS[i] == null) { | |
data.DAILY_FOLLOWERS[0].HOURS[i] = result; | |
break; | |
} else { | |
continue; | |
} | |
} | |
file.writeFileAsync('users/' + email + '/' + userid + '/instagram.json', JSON.stringify(data)).catch((error) => { | |
console.log(error); | |
}) | |
}).catch((error) => { | |
console.log(error) | |
}) | |
}) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var nodemailer = require('nodemailer'); | |
var file = require('fs'); | |
module.exports = function(express, app, io) { | |
app.use(express.static('views/html/public')); | |
var auth = false; | |
var trialcounter = 803; | |
app.get('/', function(req, res) { | |
res.render("html/public/index.ejs", { | |
counter: trialcounter | |
}) | |
}) | |
io.on('connection', function(socket) { | |
console.log("User connected"); | |
socket.on('load', function() { | |
socket.emit('loading'); | |
console.log("loading"); | |
}) | |
socket.on('load1', function() { | |
socket.emit('loading1'); | |
console.log("loading"); | |
}) | |
socket.on('disconnect', function() { | |
console.log("User disconnected"); | |
}); | |
}); | |
io.of('/mbs').on('connection', function(socket) { | |
console.log("User connected"); | |
socket.on('load', function() { | |
socket.emit('loading'); | |
console.log("loading"); | |
}) | |
socket.on('load1', function() { | |
socket.emit('loading1'); | |
console.log("loading"); | |
}) | |
socket.on('disconnect', function() { | |
console.log("User disconnected"); | |
}); | |
}); | |
app.get('/mindbootyspirit', function(req, res) { | |
res.render('mbs.ejs', { | |
message: '' | |
}) | |
}) | |
app.get('/mbs', function(req, res) { | |
if (auth === false) { | |
res.redirect('/mindbootyspirit') | |
} | |
res.render('mind.ejs') | |
auth = false; | |
}) | |
app.post('/mindbootyspirit', function(req, res) { | |
var data = req.body; | |
if (data.password !== "MBS30".toLowerCase() && data.password !== "MBS30") { | |
req.flash('error', 'Wrong Access Code!') | |
res.render('mbs.ejs', { | |
message: req.flash('error') | |
}); | |
} else { | |
auth = true; | |
res.redirect('/mbs') | |
} | |
}) | |
app.post('/subscribe', function(req, res, next) { | |
req.io = io | |
next() | |
var data = JSON.parse(file.readFileSync("emails.json", "utf-8")) | |
var dat = req.body; | |
console.log(data.emails) | |
if (data.emails.length > 0) { | |
var body = ""; | |
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com'); | |
for (var i = 0; i < 5; i++) { | |
body += data.emails[i] + "<br>" | |
} | |
var mailOptions = { | |
from: '"iComeUp" <icomeupwp@gmail.com>', | |
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers | |
subject: 'Email Lists', | |
html: body | |
}; | |
transporter.sendMail(mailOptions, function(error, info) { | |
if (error) { | |
return console.log(error); | |
} | |
console.log('Message sent: ' + info.response); | |
}); | |
data.emails = []; | |
file.writeFileSync("emails.json", JSON.stringify(data)); | |
} else { | |
data.emails.push(dat.email); | |
file.writeFileSync("emails.json", JSON.stringify(data)); | |
req.io.sockets.emit('success') | |
console.log("LOGGED") | |
} | |
}) | |
app.post('/freetrial', function(req, res, next) { | |
trialcounter += 1; | |
req.io = io | |
next(); | |
console.log(req.body) | |
var dat = req.body; | |
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com'); | |
var mailOptions = { | |
from: '"iComeUp" <icomeupwp@gmail.com>', | |
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers | |
subject: 'Free Trial Notification!', | |
html: 'Representative\'s Name: ' + dat.Rep_Name + '<br>Username: ' + dat.Username + '<br>Password: ' + dat.Password + '<br>Social: ' + dat.Social + '<br>Phone Number: ' + dat.phone + '<br>Niche: ' + dat.niche + | |
'<br>Age group: ' + dat.Age + '<br>Interests: ' + dat.interests | |
}; | |
req.io.sockets.emit('success1') | |
transporter.sendMail(mailOptions, function(error, info) { | |
if (error) { | |
return console.log(error); | |
} | |
console.log('Message sent: ' + info.response); | |
req.io.sockets.emit('success1') | |
}); | |
}) | |
app.post('/mindbootyspirit/freetrial', function(req, res) { | |
console.log(req.body) | |
var dat = req.body; | |
var transporter = nodemailer.createTransport('smtps://icomeupwp%40gmail.com:success1234$@smtp.gmail.com'); | |
var mailOptions = { | |
from: '"iComeUp" <icomeupwp@gmail.com>', | |
to: 'codydavidkerns@gmail.com, cody@icomeupmarketing.com, kyle@icomeupmarketing.com, j.robertsonpoi@gmail.com, river@icomeupmarketing.com', // list of receivers | |
subject: 'MindBootySpirit Trial Notification!', | |
html: 'Representative\'s Name: ' + dat.Rep_Name + '<br>Username: ' + dat.Username + '<br>Password: ' + dat.Password + '<br>Social: ' + dat.Social + '<br>Phone Number: ' + dat.phone + '<br>Niche: ' + dat.niche + | |
'<br>Age group: ' + dat.Age + '<br>Interests: ' + dat.interests | |
}; | |
// req.io.sockets.emit('success1') | |
transporter.sendMail(mailOptions, function(error, info) { | |
if (error) { | |
return console.log(error); | |
} | |
console.log('Message sent: ' + info.response); | |
//req.io.sockets.emit('success1') | |
}); | |
}) | |
app.get('/db', function(req, res) { | |
res.render('db.ejs', {message: '', total: getTotal()}) | |
}) | |
app.post('/add', function(req, res) { | |
var current; | |
var flag = false; | |
var user = req.body.username.toLowerCase(); | |
var aff = req.body.affiliate.toLowerCase(); | |
var data = JSON.parse(file.readFileSync("clients.json", "utf-8")) | |
var affs = Object.keys(data.clients[0]) | |
affs.forEach(function (owner) { | |
data.clients[0][owner].forEach(function (client) { | |
if (client == user) { | |
flag = true | |
current = owner | |
} | |
}) | |
}) | |
if (!flag) { | |
if (affs.includes(aff) == false) | |
data.clients[0][aff] = [] | |
data.clients[0][aff].push(user) | |
file.writeFileSync("clients.json", JSON.stringify(data)); | |
res.render('db.ejs', { message: "Success", reason: '', total: getTotal()}) | |
} | |
else { | |
res.render('db.ejs', { message: "Unavailable", reason: (user + " Is used by " + current), total: getTotal()}) | |
} | |
}) | |
app.post('/delete', function(req, res) { | |
var flag = false; | |
var user = req.body.username.toLowerCase(); | |
var aff = req.body.affiliate.toLowerCase(); | |
var data = JSON.parse(file.readFileSync("clients.json", "utf-8")) | |
var affs = Object.keys(data.clients[0]) | |
affs.forEach(function (owner) { | |
data.clients[0][owner].forEach(function (client, index) { | |
if (client == user) { | |
flag = true | |
data.clients[0][owner].splice(index, index) | |
file.writeFileSync("clients.json", JSON.stringify(data)); | |
} | |
}) | |
}) | |
if (!flag) { | |
res.render('db.ejs', { message: "Can't Delete", reason: '', total: getTotal()}) | |
} | |
else { | |
res.render('db.ejs', { message: "Deleted", reason: '', total: getTotal()}) | |
} | |
}) | |
app.post('/check', function(req, res) { | |
var current; | |
var flag = false; | |
var user = req.body.username.toLowerCase(); | |
var aff = req.body.affiliate.toLowerCase(); | |
var data = JSON.parse(file.readFileSync("clients.json", "utf-8")) | |
var affs = Object.keys(data.clients[0]) | |
affs.forEach(function (owner) { | |
console.log(owner) | |
data.clients[0][owner].forEach(function (client) { | |
if (client == user) { | |
flag = true | |
current = owner | |
} | |
}) | |
}) | |
if (!flag) { | |
res.render('db.ejs', { message: "Available", reason: '', total: getTotal()}) | |
} | |
else { | |
res.render('db.ejs', { message: "Unavailable", reason: (user + " Is used by " + current), total: getTotal()}) | |
} | |
}) | |
console.log("Listening") | |
function getTotal() { | |
var total = 0; | |
var data = JSON.parse(file.readFileSync("clients.json", "utf-8")) | |
var affs = Object.keys(data.clients[0]) | |
affs.forEach(function (owner) { | |
total += data.clients[0][owner].length; | |
}) | |
return total; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// server.js | |
// set up ====================================================================== | |
// get all the tools we need | |
let express = require('express'); | |
let app = express(); | |
let server = app.listen(8080) | |
let io = require('socket.io')(server); | |
let mongoose = require('mongoose'); | |
let passport = require('passport'); | |
let flash = require('connect-flash'); | |
let nodemailer = require('nodemailer'); | |
let subdomain = require('express-subdomain') | |
let file = require('fs'); | |
let router = express.Router(); | |
let morgan = require('morgan'); | |
let cookieParser = require('cookie-parser'); | |
let bodyParser = require('body-parser'); | |
let session = require('express-session'); | |
let configDB = require('./config/database.js'); | |
// configuration =============================================================== | |
mongoose.connect(configDB.url); // connect to our database | |
require('./config/passport')(passport); // pass passport for configuration | |
// set up our express application | |
app.use(morgan('dev')); // log every request to the console | |
app.use(cookieParser()); // read cookies (needed for auth) | |
app.use(bodyParser.json()); | |
app.use(bodyParser.urlencoded({ | |
extended: true | |
})); | |
app.set('view engine', 'ejs'); | |
app.set('views', __dirname + '/views');// set up ejs for templating | |
// required for passport | |
app.use(session({ | |
secret: 'icomeupmarketing', // session secret | |
resave: false, | |
saveUninitialized: true | |
})); | |
app.use(passport.initialize()); | |
app.use(passport.session()); // persistent login sessions | |
app.use(flash()); // use connect-flash for flash messages stored in session | |
// routes ====================================================================== | |
require('./app/routes_analytics.js')(express, router, passport); // load our routes and pass in our app and fully configured passport | |
require('./app/routes_root.js')(express, app, io); | |
app.use(subdomain('analytics', router)); | |
// launch ====================================================================== | |
console.log('The magic happens on port 8080'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment