aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/users.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/users.coffee')
-rw-r--r--src/routes/users.coffee98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/routes/users.coffee b/src/routes/users.coffee
new file mode 100644
index 00000000..db4dde03
--- /dev/null
+++ b/src/routes/users.coffee
@@ -0,0 +1,98 @@
+db = require("../redis")
+bcrypt = require('bcrypt')
+
+module.exports = (sessions) ->
+ exists: (req, res) ->
+ db.hgetall("user:"+req.params.user, (err, obj) ->
+ if obj? then res.write('true') else res.write('false')
+ res.end()
+ )
+
+ json: (req, res) ->
+ db.hgetall("user:"+req.params.user, (err, obj) ->
+ delete obj['password']
+ res.writeHead(200, {"Content-Type": "application/json"});
+ res.write(JSON.stringify(obj))
+ res.end()
+ )
+
+ index: (req, res) ->
+ return
+ db.keys('*', (err, obj) ->
+ res.write(JSON.stringify(obj))
+ res.end()
+ )
+
+ list: (req, res) ->
+ res.render('users/index',
+ layout: 'layout'
+ )
+
+ show: (req, res) ->
+ db.hgetall("user:"+req.params.user, (err, obj) ->
+ if obj
+ res.render('calculator/show',
+ user: req.params.user,
+ layout: 'layout'
+ )
+ else
+ res.render('sessions/new',
+ notice: true
+ )
+ )
+
+ new: (req, res) ->
+ res.render('users/new',
+ js: (-> global.js),
+ css: (-> global.css)
+ )
+
+ create: (req, res) ->
+ errormsg = ""
+ 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',
+ js: (-> global.js),
+ css: (-> global.css),
+ error: errormsg
+ )
+
+ 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.headers['referer'] = "/#{req.body.username}/edit"
+ sessions.create(req, res)
+ )
+ )
+ )
+
+ edit: (req, res) ->
+ res.render('calculator/setup',
+ user: req.params.user,
+ layout: 'layout'
+ )
+
+ update: (req, res) ->
+ return unless req.params.user is req.user.username or
+ req.user.username is 'admin' or req.user.username is 'ben'
+ if req.body.password is ''
+ delete req.body.password
+ db.hmset("user:"+req.params.user, req.body, ->
+ if not req.body.password?
+ res.redirect("/#{req.params.user}")
+ else
+ bcrypt.hash(req.body.password, 12, (err, hash) ->
+ db.hmset("user:"+req.params.user,password: hash, ->
+ res.redirect("/#{req.params.user}")
+ )
+ )
+ )