middleware/auth.js========================
const { User } = require('../models/User')
let auth = (req, res, next) => {
let token = req.cookies.x_auth
User
.findByToken(token)
.then(user => {
if (!user) return res.json({ isAuth: false, error: true })
req.token = token
req.user = user
next()
})
.catch(err => {
throw err
})
}
module.exports = { auth }
- callback함수 없이 then과 catch를 사용
models/User.js====================================
userSchema.statics.findByToken = function(token) {
var user = this;
return new Promise((resolve, reject) => {
jwt.verify(token, 'secretToken',(err, decoded) => {인
if (err) {
reject(err);
}
user
.findOne({"_id" : decoded, "token" : token})
.then(user => {
if (!user) {reject('User not found')}
resolve(user)
})
.catch(err => {
reject(err)
})
})
})
}
app.get('/api/users/logout', auth, (req, res) => {
User
.findOneAndUpdate(
{ _id: req.user._id },
{ token: "" }
)
.then(() => {
res.status(200).send({
success: true
})
})
.catch((err) => {
res.json({ success: false, err })
})
})