mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 04:40:32 +00:00
42 lines
1.0 KiB
JavaScript
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;
|