From 26af40f50b02a487b3eff842fdfc5409477a88d2 Mon Sep 17 00:00:00 2001 From: lowercasename Date: Thu, 25 Jul 2019 17:20:44 +0100 Subject: Many bugfixes --- models/User.js | 43 ------------------------------------------- models/passport.js | 19 ------------------- 2 files changed, 62 deletions(-) delete mode 100755 models/User.js delete mode 100755 models/passport.js (limited to 'models') diff --git a/models/User.js b/models/User.js deleted file mode 100755 index 9391c35..0000000 --- a/models/User.js +++ /dev/null @@ -1,43 +0,0 @@ -const mongoose = require('mongoose'); -const crypto = require('crypto'); -const jwt = require('jsonwebtoken'); - -const { Schema } = mongoose; - -const UserSchema = new Schema({ - email: String, - hash: String, - salt: String, -}); - -UserSchema.methods.setPassword = function(password) { - this.salt = crypto.randomBytes(16).toString('hex'); - this.hash = crypto.pbkdf2Sync(password, this.salt, 10000, 512, 'sha512').toString('hex'); -}; - -UserSchema.methods.validatePassword = function(password) { - const hash = crypto.pbkdf2Sync(password, this.salt, 10000, 512, 'sha512').toString('hex'); - return this.hash === hash; -}; - -UserSchema.methods.generateJWT = function() { - const today = new Date(); - const expirationDate = new Date(today); - expirationDate.setDate(today.getDate() + 60); - - return jwt.sign({ - email: this.email, - id: this._id, - exp: parseInt(expirationDate.getTime() / 1000, 10), - }, 'secret'); -} - -UserSchema.methods.toAuthJSON = function() { - return { - _id: this._id, - email: this.email, - token: this.generateJWT(), - }; -}; - -mongoose.model('User', UserSchema); \ No newline at end of file diff --git a/models/passport.js b/models/passport.js deleted file mode 100755 index 15020a7..0000000 --- a/models/passport.js +++ /dev/null @@ -1,19 +0,0 @@ -const mongoose = require('mongoose'); -const passport = require('passport'); -const LocalStrategy = require('passport-local'); - -const User = mongoose.model('User'); - -passport.use(new LocalStrategy({ - usernameField: 'user[email]', - passwordField: 'user[password]', -}, (email, password, done) => { - User.findOne({ email }) - .then((user) => { - if(!user || !user.validatePassword(password)) { - return done(null, false, { errors: { 'Email or password': 'is invalid' } }); - } - - return done(null, user); - }).catch(done); -})); \ No newline at end of file -- cgit v1.2.3