Sfoglia il codice sorgente

Token model and router, moved login from user to token

pull/16/head
Djordje Djoric 4 anni fa
parent
commit
4b77a9419f
4 ha cambiato i file con 61 aggiunte e 16 eliminazioni
  1. 37
    0
      src/models/token.js
  2. 0
    16
      src/models/user.js
  3. 22
    0
      src/routers/token.js
  4. 2
    0
      src/server.js

+ 37
- 0
src/models/token.js Vedi File

const validator = require('validator')
const mongoose = require('mongoose')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const User = require('../models/user')

const tokenSchema = new mongoose.Schema({
token: {
type: String,
required: true
},
userId: {
type: String,
required: true
}
})

tokenSchema.statics.findByCredentials = async (email, password) => {
const user = await User.findOne({email})
if(!user) {
throw new Error('Login unsuccessfull!')
}

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


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

module.exports = Token

+ 0
- 16
src/models/user.js Vedi File

next() next()
}) })


userSchema.statics.findByCredentials = async (email, password) => {
const user = await User.findOne({email})
if(!user) {
throw new Error('Login unsuccessfull!')
}

const checkMatch = await bcrypt.compare(password, user.password)
console.log(password)
console.log(user.password)
console.log(checkMatch)
if(!checkMatch) {
throw new Error('Wrong password!')
}
return user
}

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

+ 22
- 0
src/routers/token.js Vedi File

const express = require('express')
const Token = require('../models/token')
const User = require('../models/user')
const bcrypt = require('bcryptjs')
const router = new express.Router()


router.get('/login', async (req, res) => {
const findUser = await Token.findByCredentials(req.body.email, req.body.password)
if(!findUser) {
return res.status(400).send('Invalid credentials!')
}

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

module.exports = router

+ 2
- 0
src/server.js Vedi File

const port = process.env.PORT || 3000 const port = process.env.PORT || 3000
require('./database/mongoose') require('./database/mongoose')
const userRouter = require('./routers/user') const userRouter = require('./routers/user')
const tokenRouter = require('./routers/token')
//const viewsPath = path.join(__dirname, '../templates/views') //const viewsPath = path.join(__dirname, '../templates/views')


app.use(express.json()) app.use(express.json())
app.use(userRouter) app.use(userRouter)
app.use(tokenRouter)


app.get('/', (req, res) => { app.get('/', (req, res) => {
try { try {

Loading…
Annulla
Salva