src/* deprecated
parent
ce9282f04b
commit
b9b9701a05
@ -1,56 +0,0 @@
|
||||
var ready = require('domready')
|
||||
, check_email = require('valid-email')
|
||||
, loadsvg = require('load-svg')
|
||||
|
||||
process.nextTick(function() {
|
||||
ready(function() {
|
||||
|
||||
var form = document.getElementById('signup-form')
|
||||
, input_email = ''
|
||||
, status_msg = document.getElementById('status-msg')
|
||||
, logoCont = document.getElementById('logoCont')
|
||||
|
||||
loadsvg('/assets/img/squatconf_baguette.svg', function (err, svg) {
|
||||
logoCont.appendChild(svg);
|
||||
});
|
||||
|
||||
for (var n = 0, l = form.childNodes[1].childNodes.length; n < l; n++) {
|
||||
var el = form.childNodes[1].childNodes[n]
|
||||
if (el.nodeName === 'INPUT' && el.name === 'email')
|
||||
input_email = el
|
||||
}
|
||||
|
||||
document
|
||||
.getElementById("signup-form")
|
||||
.addEventListener("click", function(e) {
|
||||
if (e.srcElement.nodeName === 'BUTTON') {
|
||||
if (input_email && input_email.value) {
|
||||
var is_valid = check_email(input_email.value)
|
||||
if (is_valid) {
|
||||
var progress = 0
|
||||
, timerID = null
|
||||
e.preventDefault()
|
||||
status_msg.className = 'info'
|
||||
status_msg.innerHTML = "Sending"
|
||||
timerID = setInterval(function() {
|
||||
if (++progress < 8) {
|
||||
status_msg.innerHTML += "."
|
||||
} else {
|
||||
clearInterval(timerID)
|
||||
form.submit()
|
||||
}
|
||||
}, 150)
|
||||
} else {
|
||||
e.preventDefault()
|
||||
input_email.value = ''
|
||||
status_msg.className = 'error'
|
||||
status_msg.innerHTML = "that doesn't look like an email address,"
|
||||
+ "<br />please try again..."
|
||||
setTimeout(function() { status_msg.innerHTML = ' ' }, 2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -1,48 +0,0 @@
|
||||
var sanitize = require('xss-escape')
|
||||
, ip = require('./ip-trace')
|
||||
|
||||
module.exports = function(db) {
|
||||
return function (req, res, next) {
|
||||
req.resume()
|
||||
|
||||
function error(e) {
|
||||
console.error(e)
|
||||
return next(e || e.msg || 'ERROR')
|
||||
}
|
||||
|
||||
var params = require('url').parse(req.url, true)
|
||||
|
||||
if (params && params.query.email && params.query.token) {
|
||||
|
||||
var email = sanitize(params.query.email)
|
||||
, token = sanitize(params.query.token)
|
||||
|
||||
db.get(email, function(err, obj) {
|
||||
if (err) return error(err)
|
||||
|
||||
// db read OK..
|
||||
if (obj && ! obj.verified) {
|
||||
if (obj.token === token) {
|
||||
obj.verified = true
|
||||
obj.trace = obj.trace.concat(ip(req))
|
||||
|
||||
db.put(email, obj, function(err) {
|
||||
if (err) return error(err)
|
||||
|
||||
// db write OK..
|
||||
res.statusCode = 302
|
||||
res.setHeader('Location', '/verified.html')
|
||||
return res.end()
|
||||
})
|
||||
}
|
||||
} else {
|
||||
error('email is already verified: '+ email)
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
error('invalid input: '+ JSON.stringify(params.query))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,81 +0,0 @@
|
||||
var sanitize = require('xss-escape')
|
||||
, rn = require('./rng')
|
||||
, ip = require('./ip-trace')
|
||||
, config = require('../config')
|
||||
, Mailgun = require('mailgun').Mailgun
|
||||
, mg = new Mailgun(config.mailjetKey);
|
||||
|
||||
|
||||
|
||||
|
||||
module.exports = function(db) {
|
||||
return function (req, res, next) {
|
||||
req.resume()
|
||||
|
||||
function error(e) {
|
||||
console.error(e)
|
||||
return next(e || e.msg || 'ERROR')
|
||||
}
|
||||
|
||||
var params = require('url').parse(req.url, true)
|
||||
|
||||
if (params && params.query.email) {
|
||||
|
||||
var obj = {}
|
||||
, email = sanitize(params.query.email)
|
||||
|
||||
db.get(email, function(err, value) {
|
||||
if ((err && err.type == 'NotFoundError') || ! value.verified) {
|
||||
|
||||
console.log('got email:', params.query)
|
||||
|
||||
obj.token = rn()
|
||||
obj.verified = false
|
||||
obj.events = { paris: params.query.paris ? true : false }
|
||||
obj.trace = ip(req)
|
||||
|
||||
db.put(email, obj, function(err) {
|
||||
if (err) return error(err)
|
||||
|
||||
// db write OK..
|
||||
var url = config.host +'/confirm'
|
||||
, qstr = '?email='+ email +'&token='+ obj.token
|
||||
, link = url + qstr +'\n\n'
|
||||
, opts = {
|
||||
from : config.email.from
|
||||
, to : email
|
||||
, subject: config.email.subject
|
||||
, text : config.email.bodyText.replace(/\%link\%/, link)
|
||||
}
|
||||
|
||||
mg.sendText(
|
||||
opts.from
|
||||
, email
|
||||
, opts.subject
|
||||
, opts.text
|
||||
, {}
|
||||
, function(err) {
|
||||
if (err) console.log('Guru meditation: ' + err);
|
||||
else{
|
||||
res.statusCode = 302
|
||||
res.setHeader('Location', '/')
|
||||
console.log('email sent..', opts)}
|
||||
return res.end()
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
} else {
|
||||
error('already verified: '+ email)
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
error('invalid input: '+ JSON.stringify(params.query))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
module.exports = function(req) {
|
||||
if (req.headers['x-forwarded-for']) {
|
||||
return req.headers['x-forwarded-for'].split(',')
|
||||
} else {
|
||||
return [ req.connection.remoteAddress ]
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +0,0 @@
|
||||
module.exports = function() {
|
||||
var crypto = require('crypto')
|
||||
|
||||
function rng_Base64(len) {
|
||||
return crypto.randomBytes(Math.ceil(len * 3 / 4))
|
||||
.toString('base64')
|
||||
.slice(0, len)
|
||||
.replace(/\+/g, '0')
|
||||
.replace(/\//g, '0')
|
||||
}
|
||||
|
||||
return [ rng_Base64(8)
|
||||
, rng_Base64(4)
|
||||
, rng_Base64(4)
|
||||
, rng_Base64(4)
|
||||
, rng_Base64(12)
|
||||
]
|
||||
.join('-')
|
||||
}
|
||||
|
Loading…
Reference in New Issue