Skip to content

Commit

Permalink
Very basic user confirmation
Browse files Browse the repository at this point in the history
  • Loading branch information
eyeballcode committed Dec 15, 2015
1 parent 829b9a7 commit 4819ac1
Show file tree
Hide file tree
Showing 11 changed files with 203 additions and 141 deletions.
3 changes: 2 additions & 1 deletion .gitignore
@@ -1,3 +1,4 @@
node_modules
.idea
data/
data/
user-info.json
86 changes: 50 additions & 36 deletions bin/www
Expand Up @@ -7,6 +7,8 @@
var app = require('../app');
var debug = require('debug')('TeamFreeHugsWebsite:server');
var http = require('http');
var nodemailer = require('nodemailer');
var fs = require('fs');

/**
* Get port from environment and store in Express.
Expand All @@ -29,62 +31,74 @@ global.server.listen(port);
global.server.on('error', onError);
global.server.on('listening', onListening);

fs.readFile('user-info.json', function (err, data) {
if (err) throw err;
var userdata = JSON.parse(data);
global.transporter = nodemailer.createTransport({
service: userdata.service,
auth: {
user: userdata.username,
pass: userdata.password
}
});
});

/**
* Normalize a port into a number, string, or false.
*/

function normalizePort(val) {
var port = parseInt(val, 10);
var port = parseInt(val, 10);

if (isNaN(port)) {
// named pipe
return val;
}
if (isNaN(port)) {
// named pipe
return val;
}

if (port >= 0) {
// port number
return port;
}
if (port >= 0) {
// port number
return port;
}

return false;
return false;
}

/**
* Event listener for HTTP server "error" event.
*/

function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}

var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;

// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
if (error.syscall !== 'listen') {
throw error;
}

var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;

// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}

/**
* Event listener for HTTP server "listening" event.
*/

function onListening() {
var addr = global.server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
var addr = global.server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
32 changes: 30 additions & 2 deletions modules/account-manager.js
Expand Up @@ -23,7 +23,7 @@ mongo.connect('mongodb://localhost:27017/TFHWebSite', {}, function (err, db1) {
/* login validation methods */

exports.manualLogin = function (user, pass, callback) {
users.findOne({user: user}, function (e, o) {
users.findOne({user: user, confirmed: true}, function (e, o) {
if (o == null) {
callback('user-not-found');
} else {
Expand Down Expand Up @@ -56,22 +56,50 @@ exports.addNewAccount = function (newData, callback) {
newData.emailHash = require('md5')(newData.email);
newData.imgURL = 'http://gravatar.com/avatar/' + newData.emailHash;
newData.aboutMe = '';
var today = new Date();
var nextWeek = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 7);
newData.confirmed = false;
newData.confirmToken = generateSalt();
newData.tokenExpire = nextWeek;
users.insert(newData, {safe: true}, callback);
chatUsers.insert({
name: newData.user,
email: newData.email,
emailHash: newData.emailHash,
imgURL: newData.imgURL,
key: require('md5')(newData.email + newData.date + generateSalt()),
rooms: []
rooms: [],
confirmed: false
}, {safe: true});
var data = require('fs').readFileSync('views/confirmEmail.jade').utf8Slice();
console.log(data);
data = data.replace(/\$\{USERNAME}/, newData.user).replace(/\$\{TOKEN}/, newData.confirmToken);
transporter.sendMail({
from: 'Team Free Hugs <teamfreehugs@teamfreehugs.com>',
to: newData.email,
subject: 'Welcome to Team Free Hugs, ' + newData.user,
html: require('jade').compile(data, {})()
}, function (error, info) {
});
});
}
});
}
});
};

exports.isValidConfirmLink = function (token, callback) {
users.findOne({confirmToken: token}, function (err, user) {
if (!user) {
callback('no-such-token');
} else if (+user.tokenExpire < +new Date) {
callback('token-expired');
} else {
callback('valid-token');
}
});
};

exports.updateAccount = function (newData, callback) {
users.findOne({user: newData.user}, function (e, o) {
o.name = newData.name;
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -22,6 +22,7 @@
"moment": "2.10.3",
"mongodb": "^2.0.47",
"morgan": "~1.6.1",
"nodemailer": "^1.10.0",
"request": "latest",
"serve-favicon": "~2.3.0",
"stylus": "0.42.3",
Expand Down

0 comments on commit 4819ac1

Please sign in to comment.