diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/routes/sessions.coffee | 5 | ||||
| -rw-r--r-- | src/routes/users.coffee | 84 |
2 files changed, 48 insertions, 41 deletions
diff --git a/src/routes/sessions.coffee b/src/routes/sessions.coffee index 30d3cdef..5b1d9f06 100644 --- a/src/routes/sessions.coffee +++ b/src/routes/sessions.coffee @@ -21,7 +21,10 @@ module.exports = (passport) -> if (err) return next(err) - url = req.session.redirect if req.session.redirect? + re = new RegExp(user.username, 'g') + if req.session.redirect? and re.test(req.session.redirect) + url = req.session.redirect + url ?= "/#{user.username}" delete req.session.redirect return res.redirect(url) diff --git a/src/routes/users.coffee b/src/routes/users.coffee index 91654391..dc22303d 100644 --- a/src/routes/users.coffee +++ b/src/routes/users.coffee @@ -56,53 +56,57 @@ module.exports = (sessions) -> userkey = "user:"+req.body.username db.hgetall(userkey, (err, obj) -> if obj - res.redirect(req.body.username) - else - if req.body.confirm != req.body.password - errormsg += "Passwords must match" - return res.render('users/new', - layout: 'layout', - js: (-> global.js), - css: (-> global.css), - error: errormsg - ) + errormsg += "Username exists" - bcrypt.hash(req.body.password, 12, (err, hash) -> - db.sadd("users",userkey) - db.hmset(userkey, - username: req.body.username, - password: hash, - email: req.body.email - , -> - req.session.redirect = "/#{req.body.username}/edit" - sessions.create(req, res) - ) + if req.body.confirm != req.body.password + errormsg += "Passwords must match" + + if errormsg + return res.render('users/new', + layout: 'layout', + js: (-> global.js), + css: (-> global.css), + error: errormsg ) - 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}" + bcrypt.hash(req.body.password, 12, (err, hash) -> + db.sadd("users",userkey) + db.hmset(userkey, + username: req.body.username, + password: hash, + email: req.body.email, + pubkey: req.body.pubkey, + privkey: req.body.privkey + , -> + req.session.redirect = "/#{req.body.username}/edit" + 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) + 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 - from: '[email protected]' - subject: 'Welcome to CoinOS' - html: html - ) + email = new sendgrid.Email( + to: req.body.email + from: '[email protected]' + subject: 'Welcome to CoinOS' + html: html + ) - sendgrid.send(email) - ) + sendgrid.send(email) ) + ) ) edit: (req, res) -> |
