Przeglądaj źródła

Adding token to the database

pull/16/head
Djordje Djoric 3 lat temu
rodzic
commit
12fdbf7afa
3 zmienionych plików z 19 dodań i 51 usunięć
  1. 19
    8
      src/models/token.js
  2. 0
    18
      src/models/user.js
  3. 0
    25
      src/routers/token.js

+ 19
- 8
src/models/token.js Wyświetl plik

@@ -20,26 +20,37 @@ tokenSchema.statics.findByCredentials = async (email, password) => {
if(!user) {
return
}

const checkMatch = await bcrypt.compare(password, user.password)
console.log(password)
console.log(user.password)
console.log(checkMatch)
if(!checkMatch) {
if(checkMatch) {
return user
}
return user
return null
}

tokenSchema.statics.generateAuthToken = async function(userArg) {
const user = userArg
const token = jwt.sign({ _id: user._id.toString() }, 'ovoJeSecret')
user.tokens = user.tokens.concat({ token })
const token = jwt.sign({ _id: user._id.toString() }, 'ovoJeSecret', { expiresIn: 60 * 20 })
const newToken = new Token({ token: token, userId: user._id })
await newToken.save()
user.tokens = user.tokens.concat({ token: newToken })
await user.save()
console.log(newToken)

return token
}

tokenSchema.statics.refreshAuthToken = async function(token, refreshOptions) {
const payload = jwt.verify(token, 'ovoJeSecret', refreshOptions.verify);
delete payload.iat;
delete payload.exp;
delete payload.nbf;
delete payload.jti;
const jwtSignOptions = Object.assign({ }, this.options, { jwtid: refreshOptions.jwtid });

return jwt.sign(payload, this.secretOrPrivateKey, jwtSignOptions);
}

const Token = mongoose.model('Token', tokenSchema)

module.exports = Token

+ 0
- 18
src/models/user.js Wyświetl plik

@@ -26,27 +26,9 @@ userSchema.pre('save', async function(next) {
const user = this

console.log('Middleware before password hash')
console.log(user)

if(user.isModified('password')) {
user.password = await bcrypt.hash(user.password, 8)
}

console.log('User data that will be written to database: ')
console.log(user)

next()
})

userSchema.methods.generateAuthToken = async function() {
const user = this
const token = jwt.sign({ _id: user._id.toString() }, 'ovoJeSecret')
user.tokens = user.tokens.concat({ token })
await user.save()

return token
}

const User = mongoose.model('User', userSchema)

module.exports = User

+ 0
- 25
src/routers/token.js Wyświetl plik

@@ -1,25 +0,0 @@
const express = require('express')
const Token = require('../models/token')
const User = require('../models/user')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcryptjs')
const router = new express.Router()


router.post('/login', async (req, res) => {
const findUser = await Token.findByCredentials(req.body.email, req.body.password)
if(!findUser) {
return res.status(400).send('User does not exist, wrong email')
}

const isValidPassword = await bcrypt.compare(req.body.password, findUser.password)
if(!isValidPassword) {
return res.status(400).send('Password is incorrect!')
}

const token = await Token.generateAuthToken(findUser)

return res.send(findUser)
})

module.exports = router

Ładowanie…
Anuluj
Zapisz