verifyToken.js 900 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const jwt = require('jsonwebtoken')
  2. const userModel = require('../model/user.model')
  3. const response = require('../utils/responseHandler')
  4. module.exports = (req, res, next) => {
  5. const authHeader = req.headers.authorization
  6. const token =
  7. (req.params.token && req.params.token.split(' ')[1]) ||
  8. (authHeader && authHeader.split(' ')[1]) ||
  9. req.cookies['sidali-cookie']
  10. if (!token)
  11. return response.error(res, {
  12. code: 401,
  13. message: 'Token tidak ada',
  14. })
  15. jwt.verify(token, process.env.SECRET, async (err, data) => {
  16. if (err) {
  17. return response.error(res, {
  18. code: 401,
  19. message: 'Unauthorized',
  20. })
  21. }
  22. try {
  23. const user = await userModel.findById(data._id)
  24. req.user = user
  25. next()
  26. } catch (error) {
  27. return response.error(res, {
  28. code: 401,
  29. message: 'Unauthorized',
  30. })
  31. }
  32. })
  33. }