aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/users.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2014-07-31 21:06:23 -0700
committerAdam Soltys <[email protected]>2014-07-31 21:06:23 -0700
commit7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9 (patch)
treef387c3d4e3ce9ed0c464659a787b99d8c6e90fb9 /src/routes/users.js
parentde1cdd2e3f9d9f36ce3d8e97335341cc3237e829 (diff)
downloadcoinos-server-7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9.tar.gz
coinos-server-7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9.zip
Move coffee files to src/ folder
Diffstat (limited to 'src/routes/users.js')
-rw-r--r--src/routes/users.js130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/routes/users.js b/src/routes/users.js
new file mode 100644
index 00000000..137d5bb9
--- /dev/null
+++ b/src/routes/users.js
@@ -0,0 +1,130 @@
+(function() {
+ var bcrypt, db;
+
+ db = require("../redis");
+
+ bcrypt = require('bcrypt');
+
+ module.exports = function(sessions) {
+ return {
+ exists: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ if (obj != null) {
+ res.write('true');
+ } else {
+ res.write('false');
+ }
+ return res.end();
+ });
+ },
+ json: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ delete obj['password'];
+ res.writeHead(200, {
+ "Content-Type": "application/json"
+ });
+ res.write(JSON.stringify(obj));
+ return res.end();
+ });
+ },
+ index: function(req, res) {
+ return;
+ return db.keys('*', function(err, obj) {
+ res.write(JSON.stringify(obj));
+ return res.end();
+ });
+ },
+ list: function(req, res) {
+ return res.render('users/index', {
+ layout: 'layout'
+ });
+ },
+ show: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ if (obj) {
+ return res.render('calculator/show', {
+ user: req.params.user,
+ layout: 'layout'
+ });
+ } else {
+ return res.render('sessions/new', {
+ notice: true
+ });
+ }
+ });
+ },
+ "new": function(req, res) {
+ return res.render('users/new', {
+ js: (function() {
+ return global.js;
+ }),
+ css: (function() {
+ return global.css;
+ })
+ });
+ },
+ create: function(req, res) {
+ var errormsg, userkey;
+ errormsg = "";
+ userkey = "user:" + req.body.username;
+ return db.hgetall(userkey, function(err, obj) {
+ if (obj) {
+ return res.redirect(req.body.username);
+ } else {
+ if (req.body.confirm !== req.body.password) {
+ errormsg += "Passwords must match";
+ return res.render('users/new', {
+ js: (function() {
+ return global.js;
+ }),
+ css: (function() {
+ return global.css;
+ }),
+ error: errormsg
+ });
+ }
+ return bcrypt.hash(req.body.password, 12, function(err, hash) {
+ db.sadd("users", userkey);
+ return db.hmset(userkey, {
+ username: req.body.username,
+ password: hash,
+ email: req.body.email
+ }, function() {
+ req.headers['referer'] = "/" + req.body.username + "/edit";
+ return sessions.create(req, res);
+ });
+ });
+ }
+ });
+ },
+ edit: function(req, res) {
+ return res.render('calculator/setup', {
+ user: req.params.user,
+ layout: 'layout'
+ });
+ },
+ update: function(req, res) {
+ if (!(req.params.user === req.user.username || req.user.username === 'admin' || req.user.username === 'ben')) {
+ return;
+ }
+ if (req.body.password === '') {
+ delete req.body.password;
+ }
+ return db.hmset("user:" + req.params.user, req.body, function() {
+ if (req.body.password == null) {
+ return res.redirect("/" + req.params.user);
+ } else {
+ return bcrypt.hash(req.body.password, 12, function(err, hash) {
+ return db.hmset("user:" + req.params.user, {
+ password: hash
+ }, function() {
+ return res.redirect("/" + req.params.user);
+ });
+ });
+ }
+ });
+ }
+ };
+ };
+
+}).call(this);