aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2014-09-02 16:10:12 -0700
committerAdam Soltys <[email protected]>2014-09-02 16:10:12 -0700
commit8426aa8ef3a97d8d8fda7eb70bab8efe74b3c3f3 (patch)
tree4db560a0937f12bdc1d62470299005b60304b6cf /src/routes
parent120efd8d820ee1c76ca4c9504292d8101e721711 (diff)
downloadcoinos-server-8426aa8ef3a97d8d8fda7eb70bab8efe74b3c3f3.tar.gz
coinos-server-8426aa8ef3a97d8d8fda7eb70bab8efe74b3c3f3.zip
Verify email
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/users.coffee47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/routes/users.coffee b/src/routes/users.coffee
index 26b28e1e..d2c88dc2 100644
--- a/src/routes/users.coffee
+++ b/src/routes/users.coffee
@@ -1,4 +1,5 @@
db = require("../redis")
+config = require("../config")
bcrypt = require('bcrypt')
module.exports = (sessions) ->
@@ -22,13 +23,18 @@ module.exports = (sessions) ->
show: (req, res) ->
db.hgetall("user:"+req.params.user, (err, obj) ->
if obj
- res.render('users/show',
+ options =
user: req.params.user,
layout: 'layout',
navigation: true,
js: (-> global.js),
css: (-> global.css)
- )
+
+ if req.session.verified?
+ options.verified = true
+
+ res.render('users/show', options)
+ delete req.session.verified
else
res.render('sessions/new',
notice: true,
@@ -72,6 +78,31 @@ module.exports = (sessions) ->
sessions.create(req, res)
)
)
+
+ require('crypto').randomBytes(48, (ex, buf) ->
+ token = buf.toString('base64').replace(/\//g,'').replace(/\+/g,'')
+ db.set(token, req.body.username)
+ url = "#{req.protocol}://#{req.hostname}:3000/verify/#{token}"
+
+ res.render('users/welcome',
+ user: req.params.user,
+ layout: 'mail',
+ url: url,
+ js: (-> global.js),
+ css: (-> global.css),
+ (err, html) ->
+ sendgrid = require('sendgrid')(config.sendgrid_user, config.sendgrid_password)
+
+ email = new sendgrid.Email(
+ to: req.body.email
+ subject: 'Welcome to CoinOS'
+ html: html
+ )
+
+ sendgrid.send(email)
+ )
+ )
)
edit: (req, res) ->
@@ -96,3 +127,15 @@ module.exports = (sessions) ->
)
)
)
+
+ verify: (req, res) ->
+ db.get(req.params.token, (err, reply) ->
+ if err or !reply
+ res.write('Invalid token')
+ res.end()
+ else
+ db.hset("user:#{reply.toString()}", "verified", "true", ->
+ req.session.verified = true
+ res.redirect("/#{reply.toString()}")
+ )
+ )