| const jwt = require('jsonwebtoken') | |||||
| const User = require('../models/user') | |||||
| const auth = async (req, res, next) => { | |||||
| try { | |||||
| const token = req.header('Authorization').replace('Bearer ', '') | |||||
| const decoded = jwt.verify(token, 'ovoJeSecret') | |||||
| console.log(decoded) | |||||
| } catch (e) { | |||||
| return res.send(e) | |||||
| } | |||||
| console.log('auth middleware') | |||||
| next() | |||||
| } | |||||
| module.exports = auth |
| return | return | ||||
| } | } | ||||
| const checkMatch = await bcrypt.compare(password, user.password) | const checkMatch = await bcrypt.compare(password, user.password) | ||||
| console.log(password) | |||||
| console.log(user.password) | |||||
| if(checkMatch) { | if(checkMatch) { | ||||
| return user | return user | ||||
| } | } | ||||
| delete payload.jti | delete payload.jti | ||||
| const jwtSignOptions = Object.assign({ }, this.options, { jwtid: refreshOptions.jwtid }) | const jwtSignOptions = Object.assign({ }, this.options, { jwtid: refreshOptions.jwtid }) | ||||
| return jwt.sign(payload, this.secretOrPrivateKey, jwtSignOptions) | |||||
| return jwt.sign(payload, 'ovoJeSecret', jwtSignOptions) | |||||
| } | |||||
| tokenSchema.statics.destroyToken = async function(token) { | |||||
| const findUser = await User.findOne({ 'tokens.token': token }) | |||||
| findUser.tokens = findUser.tokens.filter((currToken) => { | |||||
| return currToken.token !== token | |||||
| }) | |||||
| await findUser.save() | |||||
| console.log('uspesno') | |||||
| return jwt.sign(token, 'a', { expiresIn: 1 }) | |||||
| } | } | ||||
| const Token = mongoose.model('Token', tokenSchema) | const Token = mongoose.model('Token', tokenSchema) |
| userSchema.pre('save', async function(next) { | userSchema.pre('save', async function(next) { | ||||
| const user = this | const user = this | ||||
| user.password = await bcrypt.hash(user.password, 8) | |||||
| console.log('Middleware before password hash') | console.log('Middleware before password hash') | ||||
| next() | next() | ||||
| }) | }) |
| const jwt = require('jsonwebtoken') | const jwt = require('jsonwebtoken') | ||||
| const bcrypt = require('bcryptjs') | const bcrypt = require('bcryptjs') | ||||
| const router = new express.Router() | const router = new express.Router() | ||||
| const auth = require('../middleware/auth') | |||||
| router.post('/token', async (req, res) => { | |||||
| router.post('/login', async (req, res) => { | |||||
| const findUser = await Token.findByCredentials(req.body.email, req.body.password) | const findUser = await Token.findByCredentials(req.body.email, req.body.password) | ||||
| if(!findUser) { | if(!findUser) { | ||||
| return res.status(400).send('User does not exist, wrong email') | return res.status(400).send('User does not exist, wrong email') | ||||
| const token = await Token.generateAuthToken(findUser) | const token = await Token.generateAuthToken(findUser) | ||||
| return res.send({findUser, token}) | |||||
| return res.send(findUser) | |||||
| }) | }) | ||||
| router.post('/refresh/:token', async (req, res) => { | |||||
| router.post('/logout/', async (req, res) => { | |||||
| const result = Token.destroyToken(req.body.token) | |||||
| }) | }) | ||||
| module.exports = router | module.exports = router |
| const User = require('../models/user') | const User = require('../models/user') | ||||
| const router = new express.Router() | const router = new express.Router() | ||||
| const app = express() | const app = express() | ||||
| const auth = require('../middleware/auth') | |||||
| // router.get('/users', async (req, res) => { | // router.get('/users', async (req, res) => { | ||||
| // try{ | // try{ |