Files
bigcapital/server/src/http/middleware/jwtAuth.js
2020-04-21 22:47:27 +02:00

42 lines
1.0 KiB
JavaScript

/* eslint-disable consistent-return */
import jwt from 'jsonwebtoken';
import SystemUser from '@/system/models/SystemUser';
// import Auth from '@/models/Auth';
const authMiddleware = (req, res, next) => {
const { JWT_SECRET_KEY } = process.env;
const token = req.headers['x-access-token'] || req.query.token;
const onError = () => {
// Auth.loggedOut();
res.status(401).send({
success: false,
message: 'unauthorized',
});
};
if (!token) {
return onError();
}
const verify = new Promise((resolve, reject) => {
jwt.verify(token, JWT_SECRET_KEY, async (error, decoded) => {
if (error) {
reject(error);
} else {
// eslint-disable-next-line no-underscore-dangle
req.user = await SystemUser.query().findById(decoded._id);
// Auth.setAuthenticatedUser(req.user);
if (!req.user) {
return onError();
}
resolve(decoded);
}
});
});
verify.then(() => { next(); }).catch(onError);
};
export default authMiddleware;