aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2016-10-14 22:02:20 -0700
committerAdam Soltys <[email protected]>2016-10-14 22:02:20 -0700
commita4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18 (patch)
tree17cd0e8cf91e3902e4d584dc28621d4258370d80
parent6f906c289422c9d655e194390bb871b2e276f326 (diff)
downloadcoinos-server-a4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18.tar.gz
coinos-server-a4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18.zip
List users
-rw-r--r--app.js6
-rw-r--r--routes/users.js30
-rw-r--r--src/app.coffee2
-rw-r--r--src/routes/users.coffee16
4 files changed, 49 insertions, 5 deletions
diff --git a/app.js b/app.js
index ff06f5c4..76f070eb 100644
--- a/app.js
+++ b/app.js
@@ -1,5 +1,5 @@
(function() {
- var RedisStore, app, authorize, bodyParser, cache, config, cookieParser, express, fetchRates, fs, passport, path, proxy, proxyContext, proxyMiddleware, proxyOptions, request, session, sessionStore, sessions, transactions, users,
+ var RedisStore, app, authorize, bcoin, bodyParser, cache, config, cookieParser, express, fetchRates, fs, passport, path, proxy, proxyContext, proxyMiddleware, proxyOptions, request, session, sessionStore, sessions, transactions, users,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
request = require('request');
@@ -18,6 +18,8 @@
fs = require('fs');
+ bcoin = require('bcoin').set('testnet');
+
proxyMiddleware = require('http-proxy-middleware');
sessions = require("./routes/sessions")(passport);
@@ -178,6 +180,8 @@
app.get('/logout', sessions.destroy);
+ app.get('/users.json', users.index);
+
app.get('/register', cache, users["new"]);
app.get('/users/new', cache, users["new"]);
diff --git a/routes/users.js b/routes/users.js
index 04574c18..315287e2 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -1,5 +1,7 @@
(function() {
- var bcrypt, config, db, fs, request;
+ var Promise, bcrypt, config, db, fs, request;
+
+ Promise = require('bluebird');
db = require("../redis");
@@ -23,11 +25,31 @@
return res.end();
});
},
+ index: function(req, res) {
+ var result;
+ result = {
+ 'users': []
+ };
+ return db.keysAsync("user:*").then(function(users) {
+ return Promise.all(users.map(function(key) {
+ return db.hgetallAsync(key).then(function(user) {
+ delete user['password'];
+ return result.users.push(user);
+ });
+ }));
+ }).then(function() {
+ res.writeHead(200, {
+ "Content-Type": "application/json"
+ });
+ res.write(JSON.stringify(result));
+ return res.end();
+ });
+ },
json: function(req, res) {
if (!req.params.user) {
res.end();
}
- return db.llen("" + (req.params.user.toLowerCase()) + ":transactions", function(err, len) {
+ return db.llen((req.params.user.toLowerCase()) + ":transactions", function(err, len) {
return db.hgetall("user:" + (req.params.user.toLowerCase()), function(err, obj) {
delete obj['password'];
obj['index'] = len;
@@ -64,7 +86,7 @@
if ((ext === 'jpg' || ext === 'png' || ext === 'gif') && (err || !stats.isFile())) {
try {
return request("" + obj.logo).pipe(fs.createWriteStream(path));
- } catch (_error) {}
+ } catch (undefined) {}
}
});
}
@@ -141,7 +163,7 @@
if (host === 'localhost') {
host += ':3000';
}
- url = "" + req.protocol + "://" + host + "/verify/" + token;
+ url = req.protocol + "://" + host + "/verify/" + token;
return res.render('users/welcome', {
user: req.body.username.toLowerCase(),
layout: 'mail',
diff --git a/src/app.coffee b/src/app.coffee
index 903fa879..dfc1e295 100644
--- a/src/app.coffee
+++ b/src/app.coffee
@@ -6,6 +6,7 @@ path = require('path')
passport = require('./passport')
config = require('./config')
fs = require('fs')
+bcoin = require('bcoin').set('testnet')
proxyMiddleware = require('http-proxy-middleware')
sessions = require("./routes/sessions")(passport)
@@ -118,6 +119,7 @@ app.get('/login', cache, sessions.new)
app.post('/login', sessions.create)
app.get('/logout', sessions.destroy)
+app.get('/users.json', users.index)
app.get('/register', cache, users.new)
app.get('/users/new', cache, users.new)
app.post('/users', users.create)
diff --git a/src/routes/users.coffee b/src/routes/users.coffee
index 87fd0f51..cff87d62 100644
--- a/src/routes/users.coffee
+++ b/src/routes/users.coffee
@@ -1,3 +1,4 @@
+Promise = require('bluebird')
db = require("../redis")
config = require("../config")
bcrypt = require('bcryptjs')
@@ -10,6 +11,21 @@ module.exports = (sessions) ->
if obj? then res.write('true') else res.write('false')
res.end()
)
+
+ index: (req, res) ->
+ result = 'users': []
+ db.keysAsync("user:*").then((users) ->
+ Promise.all(users.map((key) ->
+ db.hgetallAsync(key).then((user) ->
+ delete user['password']
+ result.users.push(user)
+ )
+ ))
+ ).then(->
+ res.writeHead(200, {"Content-Type": "application/json"});
+ res.write(JSON.stringify(result))
+ res.end()
+ )
json: (req, res) ->
res.end() unless req.params.user