1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Website/src/email-confirm.js

39 lines
914 B
JavaScript

var sanitize = require('xss-escape')
, ip = require('./ip-trace')
module.exports = function(db) {
return function (req, res, next) {
req.resume()
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 console.error(err)
// db read OK..
if (obj && obj.token === token) {
obj.verified = true
obj.trace = obj.trace.concat(ip(req))
db.put(email, obj, function(err) {
if (err) return console.error(err)
// db write OK..
res.statusCode = 302
res.setHeader('Location', '/verified.html')
return res.end()
})
}
})
if (next) return next()
}
}
}