| @@ -0,0 +1,37 @@ | |||
| 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 | |||
| @@ -38,22 +38,6 @@ userSchema.pre('save', async function(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() { | |||
| const user = this | |||
| const token = jwt.sign({ _id: user._id.toString() }, 'ovoJeSecret') | |||
| @@ -0,0 +1,22 @@ | |||
| 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 | |||
| @@ -4,10 +4,12 @@ const path = require('path') | |||
| const port = process.env.PORT || 3000 | |||
| require('./database/mongoose') | |||
| const userRouter = require('./routers/user') | |||
| const tokenRouter = require('./routers/token') | |||
| //const viewsPath = path.join(__dirname, '../templates/views') | |||
| app.use(express.json()) | |||
| app.use(userRouter) | |||
| app.use(tokenRouter) | |||
| app.get('/', (req, res) => { | |||
| try { | |||