diff options
| author | Adam Soltys <[email protected]> | 2016-10-14 22:02:20 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2016-10-14 22:02:20 -0700 |
| commit | a4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18 (patch) | |
| tree | 17cd0e8cf91e3902e4d584dc28621d4258370d80 | |
| parent | 6f906c289422c9d655e194390bb871b2e276f326 (diff) | |
| download | coinos-server-a4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18.tar.gz coinos-server-a4adc19e1e8cbe1e91afc5d81a5c844a8e92cb18.zip | |
List users
| -rw-r--r-- | app.js | 6 | ||||
| -rw-r--r-- | routes/users.js | 30 | ||||
| -rw-r--r-- | src/app.coffee | 2 | ||||
| -rw-r--r-- | src/routes/users.coffee | 16 |
4 files changed, 49 insertions, 5 deletions
@@ -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 |
