diff options
| author | Adam Soltys <[email protected]> | 2017-04-17 19:15:12 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2017-04-17 19:15:12 -0700 |
| commit | e70a7bad02a23651a5c42a70a289ff7327589bbe (patch) | |
| tree | 55bd73c0329a1cfd7bd49de0153e747a07ca3d9b | |
| parent | 73adacab3e5ebf453e3fe8b878d8656b5d07d8ff (diff) | |
| download | coinos-server-e70a7bad02a23651a5c42a70a289ff7327589bbe.tar.gz coinos-server-e70a7bad02a23651a5c42a70a289ff7327589bbe.zip | |
jwt login
| -rw-r--r-- | app.js | 3 | ||||
| -rw-r--r-- | install.js | 4 | ||||
| -rw-r--r-- | passport.js | 14 | ||||
| -rw-r--r-- | routes/rates.js | 2 | ||||
| -rw-r--r-- | routes/users.js | 58 |
5 files changed, 36 insertions, 45 deletions
@@ -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") @@ -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, |
