aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2017-01-15 18:24:09 -0800
committerAdam Soltys <[email protected]>2017-01-15 18:24:09 -0800
commit7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e (patch)
tree91bb1d1b8fe6ad77a48f0e429d9bfd35834c78d9 /src/routes
parent0ae266bf88f9f79c7e99b272688126898303daa4 (diff)
downloadcoinos-server-7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e.tar.gz
coinos-server-7762ceaa7e2bb34f8758e17a4c8f512fa6a81b9e.zip
Initial Vueification
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/sessions.coffee20
-rw-r--r--src/routes/users.coffee248
2 files changed, 17 insertions, 251 deletions
diff --git a/src/routes/sessions.coffee b/src/routes/sessions.coffee
index 6a441c75..70c18b4e 100644
--- a/src/routes/sessions.coffee
+++ b/src/routes/sessions.coffee
@@ -1,9 +1,8 @@
module.exports = (passport) ->
new: (req, res) ->
res.render('sessions/new',
- layout: 'layout',
js: (-> global.js),
- css: (-> global.css)
+ css: (-> global.css)
)
create: (req, res, next) ->
@@ -11,23 +10,12 @@ module.exports = (passport) ->
if (err)
return next(err)
if (!user)
- return res.render('sessions/new',
- layout: 'layout',
- js: (-> global.js),
- css: (-> global.css),
- badpw: true
- )
- req.session.user = user
+ return res.redirect('/login')
req.login(user, (err) ->
if (err)
return next(err)
-
- 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
+ url = req.headers['referer']
+ url = "/#{user.username}" unless /edit/.test(url)
return res.redirect(url)
)
)(req, res, next)
diff --git a/src/routes/users.coffee b/src/routes/users.coffee
index 7b2f1f3a..1611f691 100644
--- a/src/routes/users.coffee
+++ b/src/routes/users.coffee
@@ -1,253 +1,31 @@
-Promise = require('bluebird')
-db = require("../redis")
-config = require("../config")
-bcrypt = require('bcryptjs')
-fs = require('fs')
-request = require('request')
+db = require("redis").createClient()
+bcrypt = require('bcrypt')
module.exports = (sessions) ->
exists: (req, res) ->
- db.hgetall("user:"+req.params.user.toLowerCase(), (err, obj) ->
+ db.hgetall(req.params.user, (err, obj) ->
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
- db.llen("#{req.params.user.toLowerCase()}:transactions", (err, len) ->
- db.hgetall("user:#{req.params.user.toLowerCase()}", (err, obj) ->
- delete obj['password']
- obj['index'] = len
- res.writeHead(200, {"Content-Type": "application/json"});
- res.write(JSON.stringify(obj))
- res.end()
- )
- )
-
- show: (req, res) ->
- db.hgetall("user:"+req.params.user.toLowerCase(), (err, obj) ->
- if obj
- options =
- user: req.params.user.toLowerCase(),
- layout: 'layout',
- navigation: true,
- js: (-> global.js),
- css: (-> global.css)
-
- if req.query.verified?
- options.verified = true
-
- if obj.logo and obj.logo.length > 3
- ext = obj.logo.substr(obj.logo.length - 3)
- path = "public/img/logos/#{obj.username}.#{ext}"
- fs.lstat(path, (err, stats) ->
- if ext in ['jpg', 'png', 'gif'] and (err or not stats.isFile())
- try
- request("#{obj.logo}").pipe(fs.createWriteStream(path))
- )
-
- res.render('users/show', options)
- delete req.session.verified
- else
- res.render('sessions/new',
- notice: true,
- layout: 'layout',
- js: (-> global.js),
- css: (-> global.css)
- )
- )
-
new: (req, res) ->
res.render('users/new',
- layout: 'layout',
js: (-> global.js),
- css: (-> global.css)
+ css: (-> global.css),
)
create: (req, res) ->
- errormsg = ""
- userkey = "user:"+req.body.username
- db.hgetall(userkey, (err, obj) ->
+ db.hgetall(req.body.username, (err, obj) ->
if obj
- errormsg += "Username exists"
-
- 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
- )
-
- 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,
- commission: req.body.commission
- unit: req.body.unit,
- 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:#{token}", req.body.username)
- host = req.hostname
- host += ':3000' if host is 'localhost'
- url = "#{req.protocol}://#{host}/verify/#{token}"
-
- res.render('users/welcome',
- user: req.body.username.toLowerCase(),
- layout: 'mail',
- url: url,
- privkey: req.body.privkey,
- js: (-> global.js),
- css: (-> global.css),
- (err, html) ->
-
- helper = require('sendgrid').mail
- from_email = new helper.Email('[email protected]')
- to_email = new helper.Email(req.body.email)
- subject = 'Welcome to CoinOS'
- content = new helper.Content('text/html', html)
- mail = new helper.Mail(from_email, subject, to_email, content)
-
- sg = require('sendgrid')(config.sendgrid_token)
- request = sg.emptyRequest(
- method: 'POST'
- path: '/v3/mail/send'
- body: mail.toJSON()
- )
-
- sg.API(request, (error, response) ->
- console.log(response.statusCode)
- console.log(response.body)
- console.log(response.headers)
- )
- )
- )
- )
-
- edit: (req, res) ->
- res.render('users/edit',
- user: req.params.user.toLowerCase(),
- layout: 'layout',
- navigation: true,
- js: (-> global.js),
- css: (-> global.css)
- )
-
- profile: (req, res) ->
- res.render('users/profile',
- user: req.params.user.toLowerCase(),
- layout: 'layout',
- navigation: true,
- js: (-> global.js),
- css: (-> global.css)
- )
-
- update: (req, res) ->
- if req.body.password is ''
- delete req.body.password
-
- db.hmset("user:"+req.params.user.toLowerCase(), req.body, ->
- req.session.user = req.body
- delete req.session.user.password
-
- if req.body.password?
- bcrypt.hash(req.body.password, 12, (err, password) ->
- db.hmset("user:#{req.params.user.toLowerCase()}",
- email: email
- password: password
- phone: phone
- , ->
- if req.xhr
- res.send({})
- res.end()
- else
- res.redirect("/#{req.params.user.toLowerCase()}")
- )
- )
+ res.redirect(req.body.username)
else
- if req.xhr
- res.send({})
- res.end()
- else
- res.redirect("/#{req.params.user.toLowerCase()}")
- )
-
- if process.env.NODE_ENV is 'production' and
- req.body.privkey? and
- req.body.privkey != '' and
- req.body.email != ''
- res.render('users/key',
- user: req.params.user.toLowerCase(),
- layout: 'mail',
- key: req.body.privkey,
- js: (-> global.js),
- css: (-> global.css),
- (err, html) ->
- helper = require('sendgrid').mail
- from_email = new helper.Email('[email protected]')
- to_email = new helper.Email(req.body.email)
- subject = 'CoinOS Wallet Key'
- content = new helper.Content('text/html', html)
- mail = new helper.Mail(from_email, subject, to_email, content)
-
- sg = require('sendgrid')(config.sendgrid_token)
- request = sg.emptyRequest(
- method: 'POST'
- path: '/v3/mail/send'
- body: mail.toJSON()
- )
-
- sg.API(request, (error, response) ->
- console.log(response.statusCode)
- console.log(response.body)
- console.log(response.headers)
+ bcrypt.hash(req.body.password, 12, (err, hash) ->
+ db.hmset(
+ req.body.username,
+ {username: req.body.username, password: hash},
+ ->
+ req.headers['referer'] = "/#{req.body.username}/edit"
+ sessions.create(req, res)
)
- )
-
- verify: (req, res) ->
- db.get("token:#{req.params.token}", (err, reply) ->
- if err or !reply
- res.write("Invalid Verification Token")
- res.end()
- else
- db.hset("user:#{reply.toString()}", "verified", "true", ->
- res.redirect("/#{reply.toString()}?verified")
)
)
-
- wallet: (req, res) ->
- res.render('users/wallet',
- user: req.params.user.toLowerCase(),
- layout: 'layout',
- navigation: true,
- js: (-> global.js),
- css: (-> global.css)
- )