57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
const jwt = require('jsonwebtoken');
|
|
const Admin = require('./models/admin/Admin')
|
|
const User = require('./models/user/User')
|
|
|
|
const config = {
|
|
// secret for generating jwt token
|
|
secretKey: '2664debdbef6fdd2ae52ba2c9cd4d1d15f3cdca31a641aacad1a5c43cda91b55a145b3f4c573f69aeba3c942bf55417593ff74f7d192a5664358ee753ea09e8e'
|
|
}
|
|
|
|
module.exports = config
|
|
|
|
// check if admin logged in
|
|
module.exports.isAdmin = function (req, res, next) {
|
|
const token = req.headers.authorization
|
|
if (token) {
|
|
// check if token is not destroyed
|
|
Admin.findOne({token: token}, (err, user) => {
|
|
if (err) throw err
|
|
if (user) {
|
|
// verifies secret and checks if the token is expired
|
|
jwt.verify(user.token.replace(/^Bearer\s/, ''), config.secretKey, (err, decoded) => {
|
|
if (err) {
|
|
return res.status(401).json({message: 'unauthorized'})
|
|
} else {
|
|
return next()
|
|
}
|
|
})
|
|
} else return res.status(401).json({message: 'unauthorized'})
|
|
})
|
|
} else {
|
|
return res.status(401).json({message: 'unauthorized'})
|
|
}
|
|
}
|
|
|
|
// check if user logged in
|
|
module.exports.isUser = function (req, res, next) {
|
|
const token = req.headers.authorization
|
|
if (token) {
|
|
// check if token is not destroyed
|
|
User.findOne({token: token}, (err, user) => {
|
|
if (err) throw err
|
|
if (user) {
|
|
// verifies secret and checks if the token is expired
|
|
jwt.verify(user.token.replace(/^Bearer\s/, ''), config.secretKey, (err, decoded) => {
|
|
if (err) {
|
|
return res.status(401).json({message: 'unauthorized'})
|
|
} else {
|
|
return next()
|
|
}
|
|
})
|
|
} else return res.status(401).json({message: 'unauthorized'})
|
|
})
|
|
} else {
|
|
return res.status(401).json({message: 'unauthorized'})
|
|
}
|
|
}
|