aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2017-04-17 19:15:12 -0700
committerAdam Soltys <[email protected]>2017-04-17 19:15:12 -0700
commite70a7bad02a23651a5c42a70a289ff7327589bbe (patch)
tree55bd73c0329a1cfd7bd49de0153e747a07ca3d9b
parent73adacab3e5ebf453e3fe8b878d8656b5d07d8ff (diff)
downloadcoinos-server-e70a7bad02a23651a5c42a70a289ff7327589bbe.tar.gz
coinos-server-e70a7bad02a23651a5c42a70a289ff7327589bbe.zip
jwt login
-rw-r--r--app.js3
-rw-r--r--install.js4
-rw-r--r--passport.js14
-rw-r--r--routes/rates.js2
-rw-r--r--routes/users.js58
5 files changed, 36 insertions, 45 deletions
diff --git a/app.js b/app.js
index 9e246aef..a8c7c908 100644
--- a/app.js
+++ b/app.js
@@ -1,6 +1,5 @@
const express = require('express')
const bodyParser = require('body-parser')
-const path = require('path')
const passport = require('./passport')
const cache = require('./cache')
@@ -8,7 +7,7 @@ app = express()
app.enable('trust proxy')
app.use(require('./blockcypher'))
app.use(bodyParser.urlencoded({ extended: true }))
-app.use(bodyParser.json({ type: 'application/vnd.api+json' }))
+app.use(bodyParser.json())
app.use(passport.initialize())
const users = require("./routes/users")
diff --git a/install.js b/install.js
index 30ece122..6432fb1d 100644
--- a/install.js
+++ b/install.js
@@ -1,9 +1,7 @@
(function() {
var bcrypt, db;
-
db = require("./redis");
-
- bcrypt = require('bcryptjs');
+ bcrypt = require('bcrypt');
db.get("user:admin", function(err, res) {
if (!res) {
diff --git a/passport.js b/passport.js
index 1395614b..e79b53fe 100644
--- a/passport.js
+++ b/passport.js
@@ -1,16 +1,20 @@
const passport = require('passport')
+const db = require('./redis')
const jwt = require('passport-jwt')
passport.use(new jwt.Strategy({
jwtFromRequest: jwt.ExtractJwt.fromAuthHeader(),
secretOrKey: process.env.SECRET
- }, (payload, next) => {
- const user = {} // todo
- if (user) {
+ }, function (payload, next) {
+ console.log(payload)
+ db.hgetallAsync('user:' + payload.username).then((user) => {
+ console.log(user)
+ console.log(payload.username)
next(null, user)
- } else {
+ }).catch((err) => {
+ console.log(err)
next(null, false)
- }
+ })
})
)
diff --git a/routes/rates.js b/routes/rates.js
index f81085e3..99eb3773 100644
--- a/routes/rates.js
+++ b/routes/rates.js
@@ -9,7 +9,7 @@ module.exports = (function (app) {
app.set('rates', body)
} catch (undefined) {}
})
- return setTimeout(this.fetchRates, 120000)
+ return setTimeout(module.exports.fetchRates, 120000)
},
index (req, res) {
res.write(app.get('rates'))
diff --git a/routes/users.js b/routes/users.js
index 1964f88d..3560bd71 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -1,43 +1,33 @@
const Promise = require('bluebird')
const db = require("../redis")
const config = require("../config")
-const bcrypt = require('bcryptjs')
+const bcrypt = require('bcrypt')
const fs = require('fs')
const request = require('request')
+const jwt = require('jsonwebtoken')
module.exports = {
login (req, res) {
- if(req.body.name && req.body.password){
- var name = req.body.name
- var password = req.body.password
- }
- var user = db[_.findIndex(db, {name: name})]
-
- if( ! user ){
- res.status(401).json({message:"no such user found"})
- return
- }
-
- if(user.password === req.body.password) {
- var payload = {id: user.id}
- var token = jwt.sign(payload, process.env.SECRET)
- res.json({message: "ok", token: token})
- } else {
- res.status(401).json({message:"passwords did not match"})
- }
+ db.hgetallAsync('user:' + req.body.username).then((user) => {
+ bcrypt.compare(req.body.password, user.password).then((result) => {
+ if (result) {
+ let payload = { username: user.username }
+ let token = jwt.sign(payload, process.env.SECRET)
+ res.json({message: 'ok', token: token})
+ } else {
+ res.status(401)
+ }
+ }).catch((err) => {
+ console.log(err)
+ res.status(401)
+ })
+ }).catch((err) => {
+ console.log(err)
+ res.status(401)
+ })
},
secret (req, res) {
- res.json({message: "Success! You can not see this without a token"})
- },
- exists: function(req, res) {
- return db.hgetall("user:" + req.params.user.toLowerCase(), function(err, obj) {
- if (obj != null) {
- res.write('true')
- } else {
- res.write('false')
- }
- return res.end()
- })
+ res.json({message: 'Success! You can not see this without a token'})
},
index: function(req, res) {
var result
@@ -73,18 +63,18 @@ module.exports = {
db.hgetallAsync(userkey).then((obj) => {
if (obj) {
- error = { message: 'User exists' }
+ error = { message: 'user exists' }
res.status(400).json(error)
throw error
}
}).then(() => {
if (req.body.passconfirm !== req.body.password) {
- error = { message: 'Passwords must match' }
+ error = { message: 'passwords must match' }
res.status(400).json(error)
throw error
}
- bcrypt.hash(req.body.password, 12, function(err, hash) {
+ bcrypt.hash(req.body.password).then(function(err, hash) {
db.sadd("users", userkey)
db.hmset(userkey, {
username: req.body.username,
@@ -131,7 +121,7 @@ module.exports = {
req.session.user = req.body
delete req.session.user.password
if (req.body.password != null) {
- bcrypt.hash(req.body.password, 12, function(err, password) {
+ bcrypt.hash(req.body.password).then(function(err, password) {
db.hmset("user:" + (req.params.user.toLowerCase()), {
email: email,
password: password,